Docs/JVM/GC类型.md
2022-10-18 16:59:37 +08:00

12 lines
No EOL
1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### Scavenge GC
一般情况下当新对象生成并且在Eden申请空间失败时就会触发Scavenge GC对Eden区域进行GC清除非存活对象并且把尚且存活的对象移动到Survivor区。然后整理Survivor的两个区。这种方式的GC是对年轻代的Eden区进行不会影响到年老代。因为大部分对象都是从Eden区开始的同时Eden区不会分配的很大所以Eden区的GC会频繁进行。因而一般在这里需要使用速度快、效率高的算法使Eden去能尽快空闲出来。
### Full GC
对整个堆进行整理包括Young、Tenured和Perm。Full GC因为需要对整个对进行回收所以比Scavenge GC要慢因此应该尽可能减少Full GC的次数。在对JVM调优的过程中很大一部分工作就是对于FullGC的调节。有如下原因可能导致Full GC
```
· 年老代Tenured被写满
· 持久代Perm被写满
· System.gc()被显示调用
· 上一次GC之后Heap的各域分配策略动态变化
```