1.什么是垃圾 what is garbage
2.怎么找到垃圾 how to find it
3.垃圾回收的算法 GC algorithms
4.可以用的垃圾回收 available collectors
5.一个对象的生成过程
1.什么是垃圾 what is garbage
左边是堆,右边是栈。
堆:stack程序员分配释放
栈:heap 编译器分配释放
垃圾:没有任何引用指向它的时候就是垃圾。
2.怎么找到垃圾 how to find it
2.1计数法 例如python里用的就是这个。缺点是无法解决循环引用的问题。
2.2根寻找
3.垃圾回收的算法 GC algorithms
标记清除缺点在于:内存碎片化
拷贝缺点在于:内存浪费
标记要锁缺点在于:效率低
4.可以用的垃圾回收 available collectors
4.1serial
必须暂停才可以进行回收,单线程,复制算法
4.2parNew
并行清除,多线程
4.3parallel Scavenge 配合CMS使用,部署的最多的。
4.4CMS
4.5 Serial Old 同样的算法用在老年代
4.6 Parallel Old 多线程的标记压缩
5.一个对象的生成过程
堆:stack() 程序员 速度快,不改JVM默认配置就是在stack()上的。
栈:heap()编译器
new 对象,优先在栈分配如果装不下->eden