设置项目JVM参数的几种方式及使用jvisualvm打开分析dump文件

最近阅读《深入理解java 虚拟机》,对书中的一些例子进行实操 故记录一下自己的学习内容。

设置项目JVM参数

1.Idea中修改JVM内存大小

1.选择启动类 选择Edit configuration设置项目JVM参数的几种方式及使用jvisualvm打开分析dump文件_第1张图片
2在VM option修改JVM参数
设置项目JVM参数的几种方式及使用jvisualvm打开分析dump文件_第2张图片

2.windows下修改tomcat JVM内存大小

1. 通过startup.bat启动tomcat

Windows直接打开Tomcat根目录下的bin文件夹,编辑catalina.bat,

在set JAVA_OPTS=%JAVA_OPTS%…这句之后加上:set JAVA_OPTS=%JAVA_OPTS% -Xms1024m -Xmx1024m

重起tomcat服务,设置生效

2.通过tomcat9.exe 启动项目

点击tomcat9w.exe 在java options中添加jvm参数 并且将图中第三个方形中值的删掉 否则会覆盖上面设置-Xms 和-Xmx
设置项目JVM参数的几种方式及使用jvisualvm打开分析dump文件_第3张图片

Linux下修改JVM内存大小

要添加在tomcat 的bin 下catalina.sh 里,位置cygwin=false前 ,注意引号要带上
#OS specific support. $var must be set to either true or false.
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
cygwin=false

使用jvisualvm打开分析dump文件

1先写个堆内存溢出的简单程序

package com.example.demo.javaTest.OOM;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author:linjunbo
 * @Description: JVM参数 --Xms20M -Xmx20M  -XX:+HeapDumpOnOutOfMemoryError
 * @Date: 2020/3/27 10:20
 */
public class 堆溢出 {

    static  class OOMobject{

    }
    public static void main(String[] args) throws InterruptedException {

      List<OOMobject> ooMobjects = new ArrayList<>();
      while (true){
          ooMobjects.add(new OOMobject());
      }
}

}

运行结果
设置项目JVM参数的几种方式及使用jvisualvm打开分析dump文件_第4张图片

可以看到内存溢出 并且设置XX:+HeapDumpOnOutOfMemoryError会生成dump文件

打开jvisualvm 文件-》装入

设置项目JVM参数的几种方式及使用jvisualvm打开分析dump文件_第5张图片
可以发现oomobject对象实例太多
设置项目JVM参数的几种方式及使用jvisualvm打开分析dump文件_第6张图片

你可能感兴趣的:(JVM)