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

文章目录

    • Java内存为什么会泄露?
    • java内存泄露的排查思路

Java内存为什么会泄露?

Java内存泄露(Memory Leak)是指在Java程序中,无用的对象占用了堆内存,但无法被垃圾回收器回收释放,从而导致可用内存逐渐减少,最终可能导致内存耗尽或性能下降的问题。
【JVM】Java内存泄露的排查思路?_第1张图片
说明一般对于内存泄漏。都是针对的。
【JVM】Java内存泄露的排查思路?_第2张图片

java内存泄露的排查思路

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

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

【JVM】Java内存泄露的排查思路?_第3张图片
排查方法包括三步:

  1. 获取堆内存快照dump

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

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

在这里插入图片描述

  1. VisualVM去分析dump文件
    【JVM】Java内存泄露的排查思路?_第4张图片

  2. 通过查看堆信息的情况,定位内存溢出问题
    【JVM】Java内存泄露的排查思路?_第5张图片

你可能感兴趣的:(JVM,jvm,java,开发语言)