
JVM虚拟机
Java虚拟机类博客
FYHannnnnn
知道的越多,不知道的也就越多
展开
-
新一代垃圾回收器ZGC
现代垃圾收集器的演进大部分都是往减少停顿方向发展。 像 CMS 就是分离出一些阶段使得应用线程可以和垃圾回收线程并发,当然还有利用回收线程的并行来减少停顿的时间。 基本上 STW 阶段都是利用多线程并行来减少停顿时间,而并发阶段不会有太多的回收线程工作,这是为了不和应用线程争抢 CPU,反正都并发了慢就慢点(不过还是得考虑内存分配速率)。 而 G1 可以认为是打开了另一个方向的大门:只回收部分垃圾来减少停顿时间。 不过为了达到只回收部分 reigon,每个 region 都需要 RememberSe转载 2020-11-24 14:49:37 · 294 阅读 · 0 评论 -
java对象的回收,GCRoots不可达
1:引用计数算法 引用计数算法,意思是每一个对象实例头上面多出来一块内存空间,放一个引用计数器(默认值为0),当该实例被引用一次,计数器加一,当引用结束,引用失效,计数器减一。方法简单粗暴,效率也高。但是对于方法循环引用,内嵌引用等复杂的对象关系,使用引用计数算法就不能很好的解决。所以说hotspot虚拟机在判断一个对象的存活状况是没有使用引用计数算法来管理内存。 有些面试官会面带微笑的问你,可以讲下jvm里面使用引用计数器算法来标记对象是否存活的好处吗? 2:可达性分析算法 ...转载 2020-11-24 14:42:45 · 299 阅读 · 0 评论 -
JVM中的堆的新生代、老年代、永久代详解
JVM中的堆一般分为三大部分:新生代、老年代、永久代,其大致的占比如下: 一、新生代 新生代主要用来存放新生的对象。一般占据堆空间的1/3。在新生代中,保存着大量的刚刚创建的对象,但是大部分的对象都是朝生夕死,所以在新生代中会频繁的进行MinorGC,进行垃圾回收。新生代又细分为三个区:Eden区、SurvivorFrom、SurvivorTo区,三个区的默认比例为:8:1:1。 Eden区:Java新创建的对象绝大部分会分配在Eden区(如果对象太大,则直接分配到老年代)。当Eden区内..转载 2020-08-06 09:32:46 · 1115 阅读 · 0 评论