金三银四跳槽季即将到来,相信大家都在积极准备,关于oom与jvm调优的问题也越来越多。不得不说,大家都挺辛苦的。明明是初学者,明明只是想找到一份工作,明明没有机会接触oom与调优……却被现实逼着必须去理解jvm、oom、调优……本文结合大厂与小厂的同学们常问的问题,结合我的工作经验整理总结。只要你能看懂、理解、记住这些内容,当面试官再次问到oom与调优时,你一定能给出令人满意的答案。
阅读完这篇文章,你将获得以下知识:
1、什么是OOM
2、为什么会发生OOM
3、哪些区域会发生OOM
4、JVM进程崩溃时可能的原因
5、生产环境的JVM无响应时,如何快速定位问题
6、子牙老师给你的一些成熟的调优建议
01
什么是OOM
OOM是Out Of Memory的缩写,即内存溢出。
02
为什么会发生OOM
如果面试官问到这个问题,我知道大家都能说出一大堆,但建议你只需回答以下三句话,简洁明了:
业务正常运行需要较多的内存,而JVM设置的内存太小。具体表现为程序无法启动,或运行一段时间后崩溃。GC回收内存的速度跟不上程序消耗内存的速度。这种情况通常是由于向list、map中填充大量数据所致,内存紧张时JVM拆东墙补西墙也补不过来。所以记得分页查询啊!不需要的字段,尤其是数据量大的字段,就不要返回了!比如文章的内容。存在内存泄漏情况,时间长了也会导致OOM。哪些情况会造成内存泄漏呢?例如,打开文件不释放、创建网络连接不关闭、不再使用的对象未断开引用关系、使用静态变量持有大对象引用……



有些朋友可能会说:我有无数种方法让JVM崩溃,但如何让它持续运行或运行得更久更好呢?





如果你发现OOM发生在类加载器相关的方法上,那一定是元空间OOM。
怎么样,学会了吗?
如果发生OOM时没有开启JVM自动dump内存的设置,那你可以准备逃跑了,老板正拿着大刀赶来!


以上就是超快速定位OOM,值得收藏的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号