JVM垃圾回收机制是什么?常见的垃圾回收算法有哪些?
中等JVM垃圾回收
💬0
🔥0
👍0
详细说明JVM的垃圾回收机制,包括垃圾回收算法、垃圾回收器类型等核心概念
参考答案
JVM垃圾回收是自动内存管理的核心机制,通过不同的算法和策略来回收不再使用的对象:
- 垃圾回收基本原理
对象存活判断
- 引用计数法:统计对象被引用的次数
- 可达性分析:从GC Roots开始搜索可达对象
- GC Roots包括:虚拟机栈、本地方法栈、方法区中的静态变量等
垃圾回收时机
- 内存不足时触发
- 系统空闲时触发
- 手动触发:System.gc()
- 常见垃圾回收算法
标记-清除算法(Mark-Sweep)
- 标记阶段:标记所有可达对象
- 清除阶段:清除未标记的对象
- 优点:实现简单
- 缺点:产生内存碎片
复制算法(Copying)
- 将内存分为两块,每次使用一块
- 将存活对象复制到另一块
- 优点:没有内存碎片
- 缺点:内存利用率低
标记-整理算法(Mark-Compact)
- 标记阶段:标记所有可达对象
- 整理阶段:将存活对象向一端移动
- 优点:没有内存碎片
- 缺点:移动对象成本高
分代收集算法(Generational Collection)
- 根据对象存活时间分为不同代
- 新生代使用复制算法
- 老年代使用标记-整理算法
- 垃圾回收器类型
串行收集器(Serial)
- 单线程收集器
- 适合单CPU环境
- 停顿时间较长
并行收集器(Parallel)
- 多线程收集器
- 适合多CPU环境
- 吞吐量优先
并发收集器(CMS)
- 并发标记和清除
- 停顿时间短
- 适合对响应时间要求高的应用
G1收集器(Garbage First)
- 低延迟垃圾收集器
- 可预测的停顿时间
- 适合大堆内存应用
评论区 (0)
暂无评论,来发表第一条评论吧!