码迷,mamicode.com
首页 > 其他好文 > 详细

jvm与GC

时间:2020-02-23 09:15:59      阅读:51      评论:0      收藏:0      [点我收藏+]

标签:导致   gis   ram   虚拟   ati   native   状态   net   内存   

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

标签:导致   gis   ram   虚拟   ati   native   状态   net   内存   

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

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