最近阅读《深入理解java 虚拟机》,对书中的一些例子进行实操 故记录一下自己的学习内容。
设置项目JVM参数
1.Idea中修改JVM内存大小
1.选择启动类 选择Edit configuration
文章图片
2在VM option修改JVM参数
文章图片
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
文章图片
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());
}
}}
运行结果
文章图片
可以看到内存溢出 并且设置XX:+HeapDumpOnOutOfMemoryError会生成dump文件
打开jvisualvm 文件-》装入 【设置项目JVM参数的几种方式及使用jvisualvm打开分析dump文件】
文章图片
可以发现oomobject对象实例太多
文章图片
推荐阅读
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- jvm|JVM调优(线上 JVM GC 频繁耗时长,出现 LongGC 告警,这次排查后想说:还有谁(...))
- java内存区域与内存溢出异常
- JVM|JVM优化(一)
- 自动内存管理机制
- JVM: 使用 jstack 命令找出 cpu 飙高的原因
- java|JVM之字节码如何在jvm流转
- jvm|从栈帧看字节码是如何在 JVM 中进行流转的
- java|[NIO和Netty] NIO和Netty系列(二): Java Reference详解
- 生活|jrebeleclipse/tomcat 使用方法