一、对象引用
1、引用计数器算法不能解决对象相互引用带来的无法释放的问题,大多数jvm采用根搜索算法。
2、引用分为Strong Reference,Soft Reference,Weak Reference,Phantom Reference
强引用是我们最常用的如A a = new A();
软引用SoftReference,是在内存不够的情况下,即使没有达到可回收的标准也强制回收;
弱引用是在每次垃圾回收是都强制被回收;
虚引用,用的很少,目的是为了在GC是获得一个通知而已。
二、垃圾收集算法
1、老年代采用“标记清理”或者“标记整理”算法。大概的过程是标记出可以清理的内存块,将内存清理出来。“标记整理”算法不是清理内存块,而是将存活的内存块向一端移动,这样能减少内存碎片的问题。这两种算法适合对象存活率较高的内存区域,所以一般放在老年代使用。
2、新生代一般采用“复制算法”。大概的过程是,将内存划分为Eden,Survivor区,将Survivor区又分为两块大小一样的分区(From Survivor和To Survivor)。运行时某一块Survivor空着,每次回收时将存活的对象完整的复制到这块Survivor分区中。该算法适合对象存活率低的内存区域使用。
三、垃圾回收器
待续
分享到:
相关推荐
本文档可以作为学习JVM GC的工具书所使用,对于想深入学习JVM GC原理的同学,这一本书就足够了。因为本文档是作者花费数月时间,查阅GC相关的国内外众多资料并加以思路清晰的条目化而形成。因为篇幅所限,可能有部分...
jvmgc过程介绍(jpg)
JVM GC垃圾回收.pdf
jvm gc jvm gc jvm调优 查看工具
英文版的IBM JVM GC的非常详细的技术文档,包括GC的原因分析,GC日志分析,GC过程分析
用于测试jvm gc调优-share-jvm-gc
NULL 博文链接:https://bruce-king.iteye.com/blog/1991154
详细介绍JVM gc原理, heapsize调优方法。 本文虽以IBM jdk为例讲解,但实际不仅限于于IBM jdk,其原理和方法同样适用于oracle jdk
OS造成的长时间非典型JVM GC停顿:深度分析和解决(32页).pdf
对gc日志进行统计分析,使用命令:java -jar gcviewer-1.3x.jar gc.log summary.csv [chart.png] [-t PLAIN|CSV|CSV_TS|SIMPLE|SUMMARY]
适用于jvm运行生成的gc日志文件可视化分析
mat
在Java中,内存泄漏就是存在一些被分配的对象,这些...如果对象满足这两个条件,这些对象就可以判定为Java中的内存泄漏,这些对象不会被GC所回收,然而它却占用内存。通过本文可以方便的检查你的代码是否存在内存泄漏。
GC有两种类型:Scavenge GC(也称Young GC)和Full GC。 一般Full GC时,机器的Load会升高,应用也会停止响应一会(持续长达几秒),如果应用一直频繁的进行FullGC,一方面会出现应用无法提供正常服务,另一方面...
JVM_GC_-调优总结
hpjmeter jar 包,下载 hpjmeter 监控应用程序,只需要下载后放到根目录,java -jar hpjmeter.jar 即可
java jvm流程图解
jvm 结构介绍、GC相关知识总结