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

最近阅读《深入理解java 虚拟机》,对书中的一些例子进行实操 故记录一下自己的学习内容。
设置项目JVM参数 1.Idea中修改JVM内存大小
1.选择启动类 选择Edit configuration设置项目JVM参数的几种方式及使用jvisualvm打开分析dump文件
文章图片

2在VM option修改JVM参数
设置项目JVM参数的几种方式及使用jvisualvm打开分析dump文件
文章图片

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文件
文章图片

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 堆溢出 {staticclass OOMobject{} public static void main(String[] args) throws InterruptedException {List ooMobjects = new ArrayList<>(); while (true){ ooMobjects.add(new OOMobject()); } }}

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

可以看到内存溢出 并且设置XX:+HeapDumpOnOutOfMemoryError会生成dump文件
打开jvisualvm 文件-》装入 【设置项目JVM参数的几种方式及使用jvisualvm打开分析dump文件】设置项目JVM参数的几种方式及使用jvisualvm打开分析dump文件
文章图片

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

    推荐阅读