jvm
文章平均质量分 56
夏与ta
这个作者很懒,什么都没留下…
展开
-
jvm之gc流程
对象存放判断首先,到Edan判断空间是否足够。够,就创建对象, 不够就:MinorGC。回收完空闲空间再判断。够,创建对象 不够:将Edan中存活对象存放到Surviver去然后再判断Edan空间。够,就创建对象, 如果存活区空间也不够了。也还是不够创建。这个时候就将存活区的年龄到达对象转移致老年区,将Edan区活跃对象存到存活区。然后哦按段够,就创建对象, 如果Edan还是不够创建,老年代也不够了。就fullgc。然后再将存活区的对象存放在老年区将edan空出空间.原创 2022-03-28 20:40:41 · 345 阅读 · 0 评论 -
jvm类加载
加载通过一个类的全限定名来获取定义此类的二进制字节流。 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。在java虚拟机规范中并没有强行要求这三点具体实现;所以就可以很开放的出现各种形式; 就比如,去字节流过程,可以从jar,ear,war等格式的文件中取出。 可以从网络中取出 动态代理等 验证因为虚拟机不只是额能运行java的class文件。任何...原创 2022-03-28 20:00:41 · 1070 阅读 · 0 评论 -
jvm之GC(2)
除了回收堆内存以外,其实也是有回收方法区内存的。只不过条件有些苛刻。该类所有的实例都已经被回收,也就是Java堆中不存在该类及其任何派生子类的实例。 加载该类的类加载器已经被回收,这个条件除非是经过精心设计的可替换类加载器的场景,如 OSGi、JSP的重加载等,否则通常是很难达成的。 该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方 法。垃圾收集算法分代收集理论分代:收集器应该将java堆分出不同的内存:然后根据对象的年龄分配到不同的原创 2022-01-19 19:39:52 · 161 阅读 · 0 评论 -
jvm之7大收集器
以上图中连线的代表可以协作使用;并行和并发并行:之多条垃圾收集线程并行工作,但此时用户线程处于等待状态;并发:用户线程和垃圾手机线程同时执行,交替执行,吞吐量吞吐量就是cpu用于运行用户代码的时间与菜谱总消耗的时间比值吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间)Minor GC和Full GC新生代GC(Minor GC)老生代GC(Full GC)收集器Serial收集器他是一个单线程收集器,只会使用一个cpu或者一条收集线程收...原创 2022-01-19 19:38:28 · 503 阅读 · 0 评论 -
jvm之GC(1)
在GC回收一个对象时:先判生死,再勾魂;意思就是说:首先判断这个对象是否已经可以回收,然后再回收;判生死:引用计数算法:再每一个对象中添加一个引用计数器:每当有一个地方引用它时,就会加一。引用失效就减一。可达性分析算法:简单上来说。所有被引用着的对象。都不会被回收;复杂上来说。再虚拟机栈帧中引用的对象。方法区中金泰属性应用的对象;方法去用常量引用的对象;本地方法栈中的引用对象;虚拟机内部引用,如基 本类型的对象,常驻异常类对象,还有系统加载器;被同步锁持有的对象,反应虚拟机内原创 2022-01-19 19:37:34 · 172 阅读 · 0 评论 -
jvm之对象的访问
对象的访问目前两种方式句柄直接指针在 Java 堆中开辟一个句柄池,reference 持有的地址是句柄地址,句柄存放对象实例数据的指针和对象类型数据的指针。这样做的好处是当对象移动的时候只需要改变句柄的地址,reference 本身不需要改变。refeerence 直接保存的就是对象的地址,对象的空间里存储着访问类型数据的相关信息。这样的好处是节省一次指针的开销。定位效率高。...原创 2022-01-19 19:36:14 · 117 阅读 · 0 评论 -
jvm之对象的创建
第一步 程序计数器遇到new指令,首先去方法区的常量池中定位到这个类的符号引用,并检查检查类是否已经被加载,链接和初始化。如果有,就先执行类的加载过程。 第二部 加载字节流创建类;涉及双亲委派机制; 类加载器:优先级从上往下 启动类加载器 扩展类加载器 应用类加载器 第三步 在堆中分配内存 当类加载完毕之后jvm就会给对象分配内存,就像造一个房子,加载的类就是图纸,堆分配的就是毛坯房; 分配内存方式: 指针碰撞:想像内存是规则.原创 2022-01-19 19:34:01 · 52 阅读 · 0 评论 -
jvm分区及作用
共享区域:所有的线程共享储存区域;独立区:每一个线程都有自己的独有的这部分;程序计数器 程序计数器是一块较小的内存空间,它的作用有些类似于操作系统中的进程的PCB。记录着执行代码已到达的位置。像:分支,跳转,循环,异常处理,恢复执行,都依靠这个计数器; 每一个县城都有自己独有的计数器; 虚拟机栈 虚拟机栈负责的是线程中方法的调用; 每一个方法执行时都会船舰一个栈帧,栈帧存储: 局部变量表;操作数栈;动态链接;方法出口等信息; 过程: 每个方法的调用都意味...原创 2022-01-19 19:32:54 · 827 阅读 · 0 评论