JVM调优-JProfiler

Dump内存快照

在运行java程序的时候,有时候想测试运行时占用内存情况,这时候就需要使用测试工具查看了。在eclipse里面有 Eclipse Memory Analyzer tool(MAT)插件可以测试,而在idea中也有这么一个插件,就是JProfiler,一款性能瓶颈分析工具!

作用

  • 分析Dump文件,快速定位内存泄漏;
  • 获得堆中对象的统计数据
  • 获得对象相互引用的关系
  • 采用树形展现对象间相互引用的情况

在这里插入图片描述

安装JProfiler

  1. IDEA插件安装

在这里插入图片描述

  1. 安装JProfiler监控软件

在这里插入图片描述

  1. 下载完双击运行,选择自定义目录安装,点击Next。
  2. 我的 安装路径为:E:\JProfiler\jprofiler12
  • 注意:安装路径,建议选择一个文件名中没有中文,没有空格的路径 ,否则识别不了。然后一直点Next。

在这里插入图片描述

// 官网9版本 注册码仅供大家参考
L-Larry_Lau@163.com#23874-hrwpdp1sh1wrn#0620
L-Larry_Lau@163.com#36573-fdkscp15axjj6#25257
L-Larry_Lau@163.com#5481-ucjn4a16rvd98#6038
L-Larry_Lau@163.com#99016-hli5ay1ylizjj#27215
L-Larry_Lau@163.com#40775-3wle0g1uin5c1#0674

12版本 网盘注册码:
L-J12-STALKER#5846458-y8bdm6q8gtr7b#228a
L-J12-STALKER#8338547-qywh5933xu2r3#a4a4
  1. 配置IDEA运行环境
  • Settings–Tools–JProflier–JProflier executable选择JProfile安装可执行文件。(如果系统只装了一个版本, 启动IDEA时会默认选择)保存。

在这里插入图片描述

  • 代码测试:
import java.util.ArrayList;

public class Demo03 {
    byte[] byteArray = new byte[1*1024*1024]; // 1M = 1024K

    public static void main(String[] args) {
        ArrayList<Demo03> list = new ArrayList<>();
        int count = 0;
        try {
            while (true) {
                list.add(new Demo03());  // 问题所在
                count = count + 1;
            }
        } catch (Error e) {
            System.out.println("count:" + count);
            e.printStackTrace();
        }
    }
}

idea最新版本需要打开VM设置

在这里插入图片描述

  • vm参数 : -Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError

  • 点击运行后会生成java_pidxxxxx.hprof文件,找到该文件

在这里插入图片描述

使用JProfiler打开该生成的文件

在这里插入图片描述

使用 Jprofiler 工具分析查看

双击这个文件默认使用 Jprofiler 进行 Open大的对象!

查看错误方式:

  • 查看当前对象集的 最大对象

在这里插入图片描述

  • 进入线程转储 查看当前线程(本方法钟只有一个main线程,故只需要查看main线程即可)

在这里插入图片描述

在这里插入图片描述

总结:

JPofiler工具分析OOM
MAT, Jprofiler作用

●分析Dump内存文件,快速定位内存泄露;
●获得堆中的数据
●获得大的对象~

MAT是eclipse集成使用 在这里不学

Jprofile使用

1.在idea中下载jprofile插件
2.联网下载jprofile客户端
3.在IDEA设置中指定jprofile的客户端exe文件地址
4.在idea中VM参数中写参数 -Xms1m -Xmx8m -XX: +HeapDumpOnOutOfMemoryError
5.运行程序后在jprofile客户端中打开找到错误 告诉哪个位置报错

命令参数详解
// -Xms设置初始化内存分配大小/164
// -Xmx设置最大分配内存,默以1/4
// -XX: +PrintGCDetails // 打印GC垃圾回收信息
// -XX: +HeapDumpOnOutOfMemoryError //当堆出现oom(堆内存溢出异常)分析 DUMP内存文件 生成调参文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三横同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值