既然 JVM 有 Full GC,为什么还会出现 OutOfMemoryError?
JVM 为什么 出现 GC full 还会 既然 OutOfMemoryError
2023-06-13 09:12:48 时间
平时有逛知乎的习惯,一般对JVM相关话题比较感兴趣。偶然看到这个问题,结果发现了一个很有意思的回复。
问题:
既然在触发Full GC的时候,年老代和持久带都会被清理,那么为什么还会出现OOM问题?
而且,对于强引用,当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。
那么Full GC机制的存在有何意义?
还是说FGC主要针对的是驻扎在年老代的软引用?既然如此,对于四种引用的方式如何抉择?总不能所有对象都创建引用队列使用软引用或者弱引用吧?
R大回复
这个问题的意思是:
为什么我请了佣人来收拾房间,我的房间还是会堆满?
那我还请佣人来干什么?
他不是号称能把我房间里的垃圾都清理干净的么?
问题是如果您房间里堆的都是宝贝(或者看起来都是宝贝)的话,佣人也没辙。
怎么判断是不是宝贝呢?
就看主人有没有用手抓着它——被抓住的宝贝如果有连接到别的宝贝的话那被连接到的也算上。用力抓住的肯定是宝贝,一点没碰的肯定不是宝贝,半抓不抓着的先观望。
相关文章
- JVM之类文件结构
- jvm
- java代码质量检查工具_jvm问题排查
- jvm之虚拟机字节码执行引擎(六)
- 探秘Java:谈一谈JVM调优
- JAVA项目启动脚本编写及JVM启动参数的一些笔记
- JVM - 垃圾回收篇笔记
- JVM-堆
- java的jvm虚拟机之直接内存的影响问题讲解详解编程语言
- JVM分代垃圾回收策略的基础概念详解编程语言
- Linux监控JVM系统性能优化实战(linux监控jvm)
- 使用JVM在Linux系统中执行多线程操作(jvm线程linux)
- 如何在Linux系统上安装JVM?-教你简单易懂的方法(linux安装jvm)
- Linux下的JVM监控工具使用指南(jvm监控工具linux)
- JVM监控在Linux系统上的应用(jvm监控 linux)
- 参数Linux下修改JVM参数的指南(linux修改jvm)
- 解锁Oracle指引你的JVM下载之旅(jvm下载oracle)
- Oracle JVM 解析完美的规范(oracle jvm规范)
- Java虚拟机JVM性能优化(一):JVM知识总结