首页 > 其他 > 详细

JVM-OOM知识点总结

时间:2020-08-14 20:35:35      阅读:83      评论:0      收藏:0      [点我收藏+]

1、Java堆溢出

原因:

代码中可能存在大对象分配

可能存在内存泄漏,导致在多次GC之后,还是无法找到一块足够大的内存容纳当前对象

解决方法:

检查是否存在大对象的分配,最有可能的是大数组分配
通过jmap命令,把堆内存dump下来,使用mat工具分析一下,检查是否存在内存泄露的问题
如果没有找到明显的内存泄露,使用 -Xmx 加大堆内存
检查是否有大量的自定义的 Finalizable 对象,也有可能是框架内部提供的,考虑其存在的必要性

2、永久代/元空间溢出

原因:

永久代/元空间是jdk不同版本对方法区的具体实现,可能因为生成大量代理类或者应用长时间运行未重启而导致溢出

3、GC overhead limit exceeded

原因:

超过98%的时间用来做GC并且回收了不到2%的堆内存时会抛出此异常。

4、方法栈溢出

原因:

出现这种异常,基本上都是创建的了大量的线程导致的,也可能是因为程序中存在没有出口的递归导致的

5、非常规溢出

分配超大数组

swap溢出:swap(交换分区),类似于虚拟内存,当内存不足时把一部分硬盘空间虚拟成内存使用

本地方法溢出

JVM-OOM知识点总结

原文:https://www.cnblogs.com/Water2Wine/p/13504139.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!