码迷,mamicode.com
首页 > 编程语言 > 详细

JVM的垃圾回收算法

时间:2019-09-21 21:38:55      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:空间   style   垃圾回收算法   很多   导致   通过   alt   java   技术   

1.标记-清除算法(Mark-Sweep)

 对内存中的对象依次的进行判断,如果对象仍然需要使用那么就打一个标记保留下来。这样经过一次迭代之后,所有的对象都会被筛选判断一次。紧接着会对内存中已经标记的对象依次进行清除。但是这样会导致结果存在很多的内存碎片。

技术图片

2.复制算法(Copying)

通过根搜索算法标记被引用的对象,之后会申请新的内存空间,将标记的对象复制到新的内存空间里,存活的对象复制完,会清空原来的内存空间,将新的内存最为jvm的对象存储空间。这样虽然解决了内存内存碎片问题,但是如果对象很多,重新申请新的内存空间会很大,在内存不足的场景下,会对jvm运行造成很大的影响。

技术图片

3.标记整理算法(Mark-Compact)

标记整理实际上是在标记清除算法上的优化,执行完标记清除全过程之后,再一次对内存进行整理,将所有存活对象统一向一端移动,这样解决了内存碎片问题。

技术图片

4.分代回收算法(Generational Collection)

目前jvm常用回收算法就是分代回收,将内存以代的形式划分,然后针对情况分别使用性价比最高的算法进行处理。在Java中,一般将堆分为老年代和新生代。年轻代以复制算法为主,老年代以标记整理算法为主。因为新创建的对象往往被放置在年轻代中。而经过不断的回收,逐渐存活下来的对象被安置到了老年代中。越新的对象越可能被回收,越老的对象反而会存活的越久。

技术图片

 

JVM的垃圾回收算法

标签:空间   style   垃圾回收算法   很多   导致   通过   alt   java   技术   

原文地址:https://www.cnblogs.com/wyl-yulior-000/p/11564411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!