模拟内存泄漏并MAT分析

本文详述了如何通过MAT(Memory Analyzer Tool)来分析内存泄漏问题。首先,介绍了生成dump文件的过程,然后讲解了MAT工具的安装及界面。在MAT分析中,解释了Shallow Heap、Retained Heap等概念,并指出疑似内存泄漏点——一个名为main的线程引用的HashMap。最后,提到了Java堆内存配置参数如-Xms、-Xmx、-Xmn和-Xss,并概述了新生代、老年代和永久代的工作原理。

记录一次如何通过MAT工具定位内存泄漏点

一、准备可以引起内存泄漏的代码OutOfMemoryGCLimitExceed.java 

import java.util.HashMap;
import java.util.Map;
import java.util.Random;
 
public class OutOfMemoryGCLimitExceed {
    public static void addRandomDataToMap() {
        Map<Integer, String> dataMap = new HashMap<>();
        Random r = new Random();
        while (true) {
            dataMap.put(r.nextInt(), String.valueOf(r.nextInt()));
        }
    }
    public static void main(String[] args) {
        OutOfMemoryGCLimitExceed.addRandomDataToMap();
    }
}

二、执行,并生成dump文件

 jmap -dump:format=b,file=heaptestout.bin 4824
生成dump文件heaptestout.bin
将heaptestout.bin从linux下载到本地

三、准备安装MAT工具

MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。使用内

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值