JAVA(18)-GC-概述

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


猜你喜欢

转载自blog.csdn.net/aggie4628/article/details/107403737