
JVM
文章平均质量分 81
学习之路
vicken_Chen
这个作者很懒,什么都没留下…
展开
-
(GC算法)JVM垃圾回收机制 - CMS
CMS是基于标记-清除算法的,收集的时候分为4个步骤: 初始标记 并发标记 重新标记 并发清除 初始标记初始标记仅仅只是标记一下GC Roots能直接关联到的对象,所以速度很快。比如下图,这边的GC Roots只用了虚拟机栈为例。两个虚拟机栈分表创建了对象OBJ_A1和OBJ_B1,他们也各有自己的其他引用,在这个阶段,他只会标记OBJ_A1和OBJ_B1,其他的引用是不标记的,所以尽管这个阶段有STW,但是标记的数量少,时间很快,基本不影响。并发标记原创 2022-02-17 11:27:00 · 386 阅读 · 0 评论 -
(GC算法) JVM垃圾回收机制 - G1
使用G1收集器时,java堆的内存会划分为多个大小相等的独立区域(Region),Region中也有新生代和老年代的概念,但是新生代和老年代不再是物理隔离的,它们都是一部分Region(不需要连续)的集合.如下图所示:粉色的代表新生代,没有字母的是eden,有s的是survivor ,老年代是浅蓝的O,还有一个H是humongous,也是老年代。大对象直接进入老年代,这个humongous就是存储大对象的,也就是说如果对象内存大小大于Region的一半大小,那就会给一个专门的Region存放,如果对象大原创 2022-02-17 11:24:18 · 554 阅读 · 0 评论 -
(内存模型)JVM堆内存分配机制
对象优先在Eden分配堆内存分为新生代和老年代,新生代是用于存放使用后准备被回收的对象,老年代是用于存放生命周期比较长的对象。大部分我们创建的对象,都属于生命周期比较短的,所以会存放在新生代。新生代又细分Eden空间、From Survivor空间、To Survivor空间,我们创建的对象,对象优先在Eden分配。随着对象的创建,Eden剩余内存空间越来越少,就会触发Minor GC,于是Eden的存活对象会放入From Survivor空间。Minor GC后,新对象..原创 2022-02-17 11:21:41 · 327 阅读 · 0 评论