本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(1)

Android GC(Garbage Collection,垃圾回收)

发布于2020-11-19 20:38     阅读(668)     评论(0)     点赞(6)     收藏(5)


GC(Garbage Collection,垃圾回收)如何识别“垃圾”对象,回收“垃圾”对象:

 

1、通过一系列名为“GC Roots”的对象作为起始点,从这些根节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain);

2、当一个对象到 GC Roots 没有任何引用链相连时,该对象视之为可回收的“垃圾“对象。

3、当然,右侧的G和H,单独的F对象,他们没有引用链,所以妥妥的是可回收的“垃圾”对象;而ABCDE对象,都是不可回收的。

至于那些对象可做GC Roots呢?列举如下:

1、类静态属性引用的对象;
2、常量引用的对象;
3、虚拟机栈(局部变量表)中引用的对象; 
4、本地方法栈(Native方法)中引用的对象。

 

上面说的是识别“垃圾”对象,可如何回收“垃圾”对象呢?

1、根据对象存活周期的不同将内存划分为几块,根据各个年代的特点采用最适当的算法;

2、新生代,最新new出来的对象都放这个区,选用复制算法;

3、新生代又可以分为Eden(伊甸园)区和Survivor(幸存者)区,怎么样,命名满满的西方文化啊!

4、而Survivor又可分为S0和S1两部分,默认最大可往返复制的次数是15(对象头文件里用了4位标识,所以);

5、老年代中因为对象存活率高,使用“标记-压缩”算法。

 

 

原文链接:https://blog.csdn.net/aaa1050070637/article/details/109755296



所属网站分类: 技术文章 > 博客

作者:java之恋

链接:http://www.javaheidong.com/blog/article/888/24e504c2a93fbc204ce4/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

6 0
收藏该文
已收藏

评论内容:(最多支持255个字符)