JVM内存调优(工具Jprofiler)

内存调优是程序员必备的一项技能,也是测试最重要的一点.当程序中运行报错OOM.在时间紧急的情况下,我们必须快速找出,问题代码的行数,这个时候就需要用到一款工具叫Jprofiler,在Idea setting plugins能找到,但还需下载客户端,jprofiler官网直接下载.具体下载过程,这里不做重点讲解.
在一个项目中突然出现了OOM故障,那么该如何排除~?

研究为什么出错?

  • 最快

    能够看出代码第几行出错:内存快照分析工具,MAT(eclipse), jProfiler

  • 最慢

    DeBug:一行行分析代码!

MAT(eclipse), jProfiler 作用:

  • 分析Dump内存文件,快速定位内存泄漏

  • 获得堆中的数据

  • 获得大的对象

我们举个OOM的例子:
代码:

注意:需要将内存调小 vm option :-Xms8m -Xmx8m -XX:+PrintGCDetails

package com.qiu.classloader;

import java.util.Random;

public class TestMethod {
    private int b;
    private String name = "qiuzhikang";public static void main(String[] args) {
​        String str ="qiuzhikangxuejava";while(true){
​            str+=str+new Random().nextInt(999999999)+new Random().nextInt(999999999);}}
}

-XX:+PrintGCDatils//打印GC垃圾回收信息

调出轻GC和重GC的信息:
以上截取部分信息
以上截取部分信息
在这个代码中,我们假设找不出问题的所在,进而我们需要将内存调小,

首先:在Vm options加参数:-Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError

参数解释Xms:设置初始化内存分配大小, Xmx 设置最大分配内存,默认1/4,1/64

-XX:+PrintGCDatils//打印GC垃圾回收信息

调出轻GC和重GC的信息:
在这里插入图片描述在这里插入图片描述
提示我们Dumping了一个文件下来,方便我们用jprofiler调试:
在这里插入图片描述前提是我们需要有这个客户端:在这里插入图片描述接下来双击打开

在这里插入图片描述在这里插入图片描述在这里插入图片描述
根据软件的定位信息:定位到了14行出现了问题:
在这里插入图片描述
题外话:
在这里插入图片描述
在这里插入图片描述

原创文章 32 获赞 52 访问量 648

猜你喜欢

转载自blog.csdn.net/qq_42400763/article/details/105786347