描述
本章主要详细介绍垃圾回收机制,使得写出效率更高的代码。
谁需要GC?
1.栈=不需要,凡是共享的对象
2 堆:重点回收,方法区、元空间
正文
JVM垃圾回收分析
1.新生带 PSYoungGen(设置大小后剩余的分配给老年代)
eden 空间 :8 份
From Survivor 空间 :1
To Survivor 空间 :1
2.老年代 ParOldGen
新生代放不下的时候放到老年代
3.如何进行知道回收的呢?包含哪些技术呢?
早起使用引用技术
A=>B
C=>B
缺点:相互引用(PHP在用)
现在使用可达性分析
可达:引用存储的是对象地址只要有引用这个地址的对象就不会回收
不可达:方法运行完后可回收
对象各种引用全解析
1,强引用:= new 对象的
2,软引用:User<> user = new User<~~>(Person) Person就是,内存不够自动会回收
3,弱引用:集成的类就是(便于回收)
4,虚引用
全面分析各种GC算法以及回收机制
1,复制算法,分配空间使用一半另外一半预留给回收不了的。
缺点:理由率低
也是from和to 1:1的原因
2,标记清楚算法
标记可清楚的->清除
缺点:有内存碎片
3.标记整理算法