点击上方蓝色“后端面试那些事儿”,选择“设为星标”
学最好的别人,做最好的我们
来源:R 大
zhihu.com/question/38511221
- 问题:
- R大回复
平时有逛知乎的习惯,一般对JVM相关话题比较感兴趣。偶然看到这个问题,结果发现了一个很有意思的回复。
问题:
既然在触发Full GC的时候,年老代和持久带都会被清理,那么为什么还会出现OOM问题?
而且,对于强引用,当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。
那么Full GC机制的存在有何意义?
还是说FGC主要针对的是驻扎在年老代的软引用?既然如此,对于四种引用的方式如何抉择?总不能所有对象都创建引用队列使用软引用或者弱引用吧?
R大回复
这个问题的意思是:
为什么我请了佣人来收拾房间,我的房间还是会堆满?
那我还请佣人来干什么?
他不是号称能把我房间里的垃圾都清理干净的么?
问题是如果您房间里堆的都是宝贝(或者看起来都是宝贝)的话,佣人也没辙。
怎么判断是不是宝贝呢?
就看主人有没有用手抓着它——被抓住的宝贝如果有连接到别的宝贝的话那被连接到的也算上。用力抓住的肯定是宝贝,一点没碰的肯定不是宝贝,半抓不抓着的先观望。
往期推荐
面试官:为什么 Spring Boot 的 jar 可以直接运行?
对于注册中心,ZooKeeper、Eureka 哪个更合适?
高频面试题:如何保证缓存与数据库的双写一致性?
一起进大厂,每日学干货
关注我,不迷路
点击“阅读原文”,领取 2020 年最新免费技术资料大全
↓↓↓