【JVM】Java内存泄露的排查思路?

Java内存为什么会泄露?

Java内存泄露(Memory Leak)是指在Java程序中,无用的对象占用了堆内存,但无法被垃圾回收器回收释放,从而导致可用内存逐渐减少,最终可能导致内存耗尽或性能下降的问题。
在这里插入图片描述
说明一般对于内存泄漏。都是针对的。
在这里插入图片描述

java内存泄露的排查思路

程序一般出现内存泄漏会有两个状态

  • 一是一启动导致堆空间满了,就直接会闪退,无运行状态
  • 二是程序启动了,但是在程序运行途中堆空间满了,然后宕机

在这里插入图片描述
排查方法包括三步:

  1. 获取堆内存快照dump

1、通过jmap指定打印他的内存快照dump(Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中)
在这里插入图片描述
2、使用vm参数获取dump文件(可以指定生成dump文件的文件目录)

有的情况是内存溢出之后程序则会直接中断,而jmap只能打印在运行中的程序,所以建议通过参数的方式的生成dump文件

在这里插入图片描述

  1. VisualVM去分析dump文件
    在这里插入图片描述

  2. 通过查看堆信息的情况,定位内存溢出问题
    在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值