Java · 成长之路Android开发Java学习笔记

JVM学习(四)——gc回收机制

2017-06-06  本文已影响40人  陈烧面

最近复习Java基础细节的时候看Thking in Java;书上有提到两种垃圾回收机制,“停止-复制”、“标记-清扫”;


JVM采用自适应的垃圾回收机制:JVM会进行监视,若所有对象都很稳定,垃圾回收器效率降低,就切换为“标记-清扫”模式;当JVM跟踪“标记-清扫”的效果,发现堆空间有很多碎片时,就会切换回“停止-复制”方式;

垃圾回收

垃圾回收又称gc,gc是运行在JVM中,回收应用程序中创建的无用的对象

什么是垃圾

垃圾就是没有任何价值,没有任何用的东西

如何判断垃圾

Java通过引用于对象进行关联,操作一个对象;被引用相关联的就不是垃圾;
那么没有引用指向这个对象,也就是说该对象已经没有任何引用,那么它就是垃圾;

判定“垃圾”的方法

常见的垃圾回收场景

弱引用申明:

WeakReferenceweakReference=new WeakReference(new User());

虚引用申明:

PhantomReference phantomReference=new PhantomReference(new User(),new ReferenceQueue());

gc回收器

1.第一个部分叫做Eden(伊甸园)
2.辅助的生成空间(幼儿园)
A空间…
B空间…

垃圾回收器算法

1.根据存活的生命周期将内存分为若干个区:新生代和老年代和永久代
2.新生代:每次都回收大量对象——>Copying复制法
3.老年代:每次都回收少量对象——>Mark-Compact法
4.永久代:存储class类,常量,方法描述:回收废弃常量和无用类

看了CSDN上曾淘前辈的这篇博文后,我想分代收集法应该就是Thking in Java中所描述的自适应方法


出处:http://blog.csdn.net/u011546655/article/details/52186044
资料借鉴:《Thking in Java》

上一篇 下一篇

猜你喜欢

热点阅读