Java垃圾回收-分代收集

本文详细介绍了Java的垃圾回收机制,特别是分代收集策略。分代收集利用了大多数对象生命周期短的特点,提高了回收效率。文章讨论了堆内存的分代结构,包括Eden、Survivor Space和Tenured Space,并解释了Minor GC和Major GC的工作原理。此外,还给出了优化GC性能的建议,例如避免Major GC和调整堆内存大小。最后,提到了几种不同的垃圾回收器,如串行GC、并行GC、CMS和G1,并提供了相关命令行参数示例。
摘要由CSDN通过智能技术生成

Java自动垃圾回收(Automatic Garbage Collection)是自动回收上不再使用的内存,new的对象在程序中没有引用指向它,就会被回收。回收的实现很多,有Reference Counting Collector/Tracing Collector/Compacting Collector/Coping Collector/Generational Collector/Adaptive Collector。本文记录的是HotSpot Java VM采用的Generational Collector(分代收集器)

为什么分代?

下图是随着时间的推移,经历垃圾回收后存活下的数据大小情况。可以看出大部分对象存活期很短,随着时间的推移越来越少的对象存活下来。因此,可以针对不同的堆内存采取不同的回收频率和方法,以提高JVM性能。


堆内存分代概念

下图是Generation GC对内存结构的划分:


Eden:用于new对象时分配的内存空间,大部分初始new的对象位于该空间

Survivor Space:在eden中经历垃圾回收后,存活下来的对象被存储在该空间

tenured Space:在survivor space中存在了一段时间的对象会被挪到该空间

Permanent Space:JVM使用的元数据,如classlo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值