JVM面试与调优教程(12)-垃圾回收相关的概念

本文详细介绍了JVM中的垃圾回收机制,包括对象的finalization、System.gc()调用的影响、STW(Stop The World)事件、垃圾回收的并行与并发以及安全点和安全区域的概念。此外,还探讨了Java中的引用类型,如强引用、软引用、弱引用、虚引用和终结器引用,以及它们在内存管理和性能优化中的角色。最后讨论了内存泄漏和内存溢出的区别与关联。

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

订阅《专栏合集》,解锁所有文章。

有一些和垃圾回收相关的基础概念,这里一一梳理,让读者有个印象。

对象的finalization机制

Java 应用程序中可以使用对象终止(finalization)机制来允许开发人员提供对象被销毁前的自定义处理逻辑。

垃圾回收器回收一个对象之前,总是会先调用这个对象的finalize()方法。

Object对象的finalize()方法允许被子类重写,用于在对象被回收前进行最后的处理,比如释放某些资源:关闭文件、Socket、数据库连接。

不建议手动调用某个对象的finalize()方法,应该交由垃圾回收机制调用。因为:

1)在finalize()方法中,可能导致对象复活;

2)finalize()方法的执行时间是没有保障的,完全由GC线程决定。极端情况下,若不发生GC,则finalize()方法永远得不到执行。

3)一个糟糕的finalize()方法会严重影响GC的性能。比如finalize()方法中有耗时的操作。

因为finalization机制的存在,JVM中的对象可能有3种状态:

  • 可触及的:从根节点开始搜索,可以到达这个对象。

  • 可复活的:对象的所有引用都被释放,但是可能在finalize()方法中被复活。

  • 不可触及的:对象的fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程猿薇茑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值