在 Java 中,内存回收(GC,Garbage Collection)并不是由程序员显式控制的,而是由 JVM 在“合适的时候”自动触发。下面从触发条件、常见场景、不同 GC 的差异三个层面说明。
当 新生代(Young Gen)或老年代(Old Gen)空间不足 时,JVM 会触发对应区域的 GC:
System.gc()(不保证立即执行)System.gc();
| 区域 | 回收时机 |
|---|---|
| 新生代 | Eden 满 |
| 老年代 | 空间不足 |
| 元空间 | 类加载过多 |
byte[] b = new byte[1024 * 1024 * 10]; // 10MB
b = null;
| GC 类型 | 触发条件 |
|---|---|
| Serial GC | 年轻代/老年代满 |
| Parallel GC | 吞吐量优先 |
| CMS | 老年代使用率达到阈值 |
| G1 | Region 空间不足 |
Java 内存在“内存不够用”或“JVM 认为该清理了”时触发 GC,而不是对象一变成垃圾就立刻回收。
如果你愿意,我也可以:
你更想了解哪一块?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。