理解 Java 内存管理,核心在于搞清楚 “对象在哪创建、怎么分配、什么时候回收、怎么回收”。下面从 整体结构 → 关键点 → 常见问题 来系统讲解,偏实用、偏面试友好。
一句话总结:
Java 内存管理 = JVM 自动内存管理 + 垃圾回收(GC)
这也是 Java 比 C/C++ 更安全的根本原因之一。
这是理解内存管理的基础。
✅ 重点关注
User u = new User();
u(引用)在 栈new User()(对象)在 堆✅ 几乎所有 Java 内存问题都和堆有关
new User();
核心判断标准:
对象是否还被引用
GC Roots 包括:
| 算法 | 思想 | 应用 |
|---|---|---|
| 标记-清除 | 标记垃圾,直接清除 | 会产生碎片 |
| 标记-整理 | 标记 + 移动对象 | 老年代 |
| 复制算法 | 把存活对象复制到另一块 | 新生代 |
| 分代回收 | 年轻代+老年代 | HotSpot |
| GC | 特点 |
|---|---|
| Serial GC | 单线程,简单 |
| Parallel GC | 吞吐量优先 |
| CMS GC | 停顿短 |
| G1 GC | 主流,平衡 |
static List<Object> list = new ArrayList<>();
✅ 一句话版:
Java 内存管理由 JVM 自动完成,对象在堆中分配,通过可达性分析判断垃圾,由 GC 在不同内存区域进行回收。
✅ 常见问法:
你想从哪个角度继续深入?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。