回收策略 | 标记清除 |
复制 | |
标记整理 |
根对象来源: java 栈 ,静态变量,寄存器
堆 | 年轻代:Eden和两个survivor |
老年代 | |
持久代 |
1. jmap -head pid 可以查看堆的配置情况,该命令可能导致进程终止。 可以使用jstat -gc 代替。
2. jmap -histo:live pid 查看堆中所有存活对象的情况:对象数量和所占用空间大小。
触发回收:
1. scavenge gc: 新对象进入eden 失败,触发GC ,对eden进行gc ,把存活对象放入sur 区。
2. full gc: 对整个堆整理,包含持久代。 触发条件: 老年代写满,持久代写满。 调用system.gc() , 堆的分配策略变化。
收集器:处理垃圾回收的线程。 包含三种方式:串行 , 并行,并发。 前两种需要暂停应用,多应用于新生代。
并行和并发:
并行: 吞吐量优先,单位时间内能够处理的请求数。并行会暂停应用,但能较快完成,只占用很少时间。
并发: 响应时间优先,通常是单个服务的执行时间,并发垃圾处理线程会和业务处理线程同时存在,影响吞吐量。不会暂停应用。