服务器上java内存溢出(OutOfMemory)排查思路,非修改jvm参数

本文讲述了在开发中遇到JAVA内存溢出错误时,如何通过模拟内存溢出、打包项目并设置内存快照、使用JVisualVM分析内存快照来定位代码问题的详细步骤。
摘要由CSDN通过智能技术生成

记一次JAVA内存溢出排查方式

写代码时,偶尔会碰到java.lang.OutOfMemoryError:Java head space,或metaspace。一般这个会进行百度,然后根据别人的经验修改Xmx参数,扩大堆最大内存。但是有时候内存溢出是我们代码问题。由于服务器可能在报错的时候就已经关闭了,所以我们没办法根据服务器查找到代码原因,所里这里采用查看内存快照的方式进行查看。

一、模拟内存溢出bug

在idea代码中加入死循环
在这里插入图片描述

二、项目打包,并设置发布参数

为模拟实际情况,这里采用java -jar发布并设置发布参数
maven install打包
在这里插入图片描述
编写bat启动项
在这里插入图片描述

#开启内存快照,指定快照存放目录
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/home/app/dumps/

三、启动项目,实现内存溢出

启动项目
在这里插入图片描述
浏览器访问死循环,并返回报错
在这里插入图片描述

四、查看内存快照并分析

  • 从jdk中打开jvisualvm.exe
    在这里插入图片描述
  • 打开后在点击左上角【文件】-【装入】打开刚刚指定目录下的内存快照文件
    在这里插入图片描述
    打开后如图所示
    在这里插入图片描述
    打开后红框处已经显示出内存异常的原因和线程,点击线程名
    在这里插入图片描述
    红框处可查看到本次内存溢出的导火索是具体哪一行代码导致
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值