JVM的垃圾回收机制

本文详细介绍了Java中的垃圾回收机制,包括新生代与旧生代的划分,Eden区及Survivor区的作用,以及如何通过不同的垃圾回收算法(如Copying算法)进行对象的管理与回收。同时探讨了不同类型的垃圾收集器(串行、并行、并发)在各种应用场景下的优劣。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[quote]
堆被划分为新生代和旧生代,
新生代包含Eden 和 Survivor ,其中Survivor Ratio包括From Space和To Space,Survivor可以手动设置
采用的是copying算法:这个算法是扫描出存活的对象,并复制到一块新的完全未使用的空间中,新生代采用空闲指针的方式来控制GC触发,指针保持最后一个分配的对象在新生代区间的位置,当有新的对象要分配内存时,用于检查空间是否足够,不够就触发GC。当连续分配对象时,对象会逐渐从eden到survivor,最后到旧生代,用java visualVM来查看,能明显观察到新生代满了后,会把对象转移到旧生代,然后清空继续装载,当旧生代也满了之后,就会报outofmemory的异常。
旧生代用于存放经过垃圾回收后仍能存在的对象
目前的收集器主要有三种:串行收集器、并行收集器、并发收集器。

串行处理器:
--适用情况:数据量比较小(100M左右);单处理器下并且对响应时间无要求的应用。
--缺点:只能用于小型应用
并行处理器:
--适用情况:“对吞吐量有高要求”,多CPU、对应用响应时间无要求的中、大型应用。举例:后台处理、科学计算。
--缺点:应用响应时间可能较长
并发处理器:
--适用情况:“对响应时间有高要求”,多CPU、对应用响应时间有较高要求的中、大型应用。举例:Web服务器/应用服务器、电信交换、集成开发环境。

[/quote]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值