首页 > 其他 > 详细

jvm与GC

时间:2020-02-23 09:17:46      阅读:54      评论:0      收藏:0      [点我收藏+]

https://juejin.im/post/5a15be736fb9a044fc4464d6

jvm

jvm把内存分为
1.方法区(Method Area)
2.堆区(Heap)
3.虚拟机栈(VM Stack)
4.本地方法栈(Native Method Stack)
5.程序计数器(Program Counter Register)
?6.常量池区
为什么新生代要有2个Survivorhttps://blog.csdn.net/antony9118/article/details/51425581

gc

引用计数算法

? 经典的引用计数算法,每个对象添加到引用计数器,每被引用一次,计数器+1,失去引用,计数器-1,当计数器在一段时间内为0时,即认为该对象可以被回收了。但是这个算法有个明显的缺陷:当两个对象相互引用,但是二者都已经没有作用时,理应把它们都回收,但是由于它们相互引用,不符合垃圾回收的条件,所以就导致无法处理掉这一块内存区域。

根搜索算法

Sun的JVM并没有采用这种算法,而是采用一个叫——根搜索算法,基本思想是:从一个叫GC Roots的根节点出发,向下搜索,如果一个对象不能达到GC Roots的时候,说明该对象不再被引用,可以被回收。如上图中的Object5、Object6、Object7,虽然它们三个依然相互引用,但是它们其实已经没有作用了,这样就解决了引用计数算法的缺陷。

四个应用状态

jvm与GC

原文:https://www.cnblogs.com/Jun10ng/p/12348292.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!