欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JVM 有 Full GC,为什么还会出现 OutOfMemoryError呢?

程序员文章站 2024-03-04 21:27:24
...

点击上方 "程序员小乐"关注, 星标或置顶一起成长

每天凌晨00点00分, 第一时间与你相约

每日英文

Your dream is not what you find in your sleep but what makes you not sleep. 

所谓梦想,不是你睡觉时梦到了什么,而是想到了什么令你激动得没法睡觉。

每日掏心

一切误会缘自智商的不对等。你很清楚地指出某人的问题时,她却无法理解,不是你分析得不够彻底,而是她的经历、见识和各种观念,都不足以支撑她理解更深更高层次的东西。

来自:R 大 | 责编:乐乐

链接:zhihu.com/question/38511221

JVM 有 Full GC,为什么还会出现 OutOfMemoryError呢?

程序员小乐(ID:study_tech)第 942 次推文  图源:百度

往日回顾:阿里正式取消周报:打击低效加班,拒绝形式主义!

     

   正文   

平时有逛知乎的习惯,一般对JVM相关话题比较感兴趣。偶然看到这个问题,结果发现了一个很有意思的回复。

问题:

既然在触发Full GC的时候,年老代和持久带都会被清理,那么为什么还会出现OOM问题?

而且,对于强引用,当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。

关注公众号程序员小乐回复关键字“offer”获取算法面试题和答案。

那么Full GC机制的存在有何意义

还是说FGC主要针对的是驻扎在年老代的软引用?既然如此,对于四种引用的方式如何抉择?总不能所有对象都创建引用队列使用软引用或者弱引用吧?

R大回复

这个问题的意思是:

为什么我请了佣人来收拾房间,我的房间还是会堆满?

那我还请佣人来干什么?

他不是号称能把我房间里的垃圾都清理干净的么?

问题是如果您房间里堆的都是宝贝(或者看起来都是宝贝)的话,佣人也没辙。

怎么判断是不是宝贝呢?

就看主人有没有用手抓着它——被抓住的宝贝如果有连接到别的宝贝的话那被连接到的也算上。用力抓住的肯定是宝贝,一点没碰的肯定不是宝贝,半抓不抓着的先观望。

JVM 有 Full GC,为什么还会出现 OutOfMemoryError呢?

欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。欢迎加入程序员小乐技术交流群,在后台回复“加群”或者“学习”即可。

猜你还想看

阿里、腾讯、百度、华为、京东最新面试题汇集

Spring AOP调用本类方法没有生效的问题

痛心!成都一名“程序员”跳楼身亡,网友:生活压力大!

半吊子架构师,一来就想干掉RabbitMQ ...

JVM 有 Full GC,为什么还会出现 OutOfMemoryError呢?

关注订阅号「程序员小乐」,收看更多精彩内容

嘿,你在看吗JVM 有 Full GC,为什么还会出现 OutOfMemoryError呢?