开发者社区> 问答> 正文

[@小川游鱼][¥20]java程序出现OOM如何解决?

java程序出现OOM如何解决?

展开
收起
月下丶 2018-12-14 23:19:03 1813 0
1 条回答
写回答
取消 提交回答
  • 阿里云问答专家、阿里云认证云计算工程师、Java研发工程师

    Java服务OOM,最常见的原因为:
    (1)有可能是内存分配确实过小,而正常业务使用了大量内存;
    (2)某一个对象被频繁申请,却没有释放,内存不断泄漏,导致内存耗尽;
    (3)某一个资源被频繁申请,系统资源耗尽,例如:不断创建线程,不断发起网络连接。
    然后使用以下的命令或工具逐一排查:
    (一)确认是不是内存本身就分配过小

       方法:jmap -heap 10765       可以查看新生代,老生代堆内存的分配大小以及使用情况,看是否本身分配过小。

    (二)找到最耗内存的对象

      方法:jmap -histo:live 10765 | more      使用该命令后,会以表格的形式显示存活对象的信息,并按照所占内存大小排序,找到最耗内存的对象。

    (三)确认是否是资源耗尽

    工具:pstree   netstat    查看进程创建的线程数,以及网络连接数,如果资源耗尽,也可能出现OOM。
    
    2019-07-17 23:21:48
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载