常用参数
参数 | 说明 |
---|---|
-Xms1024m | 初始堆大小(默认是物理内存1/64) |
-Xmx1024m | 最大堆大小(默认是物理内存1/4) |
-Xmn500m | 年轻代大小 |
-Xss1024k | 单个线程栈 |
-XX:NewRatio=4 | Olden区与Young区比例(默认4:1) |
-XX:SurvivorRatio=8 | Eden与Survivor区比例(默认8:1:1) |
-XX:HeapDumpPath=/tmp/heapdump.hprof | 指定HeapDump的文件路径或目录 |
-XX:+PrintGCTimeStamps | 打印GC的耗时 |
-XX:+PrintGCDetails | 打印GC详情日志 |
-Xloggc:/tmp/heaplog.log | 将GC详细输出记录到指定的文件 |
-XX:+DisableExplicitGC | 关闭System.gc() |
-XX:PretenureSizeThreshold=1024k | Olden区直接分配对象临界值 |
-XX:CMSInitiatingOccupancyFraction=85 | Olden区85%后开始GC |
-XX:+PrintGCApplicationStoppedTime | GC停顿时间 |
-verbose:gc/class/jni | 查看gc、类加载、本地方法调用 |
通过调整参数解决OOM
主要是通过调整
-Xms
和-Xmx
两个参数
# 报错信息
java.lang.OutOfMemoryError: Java heap space
jar包
[root@localhost ~]# java -jar -Xms4096m -Xmx4096m test-jvm.jar
# 用命令行加上堆内存大小限制,同时设置内存溢出的时候输出堆栈快照并输出日志。
[root@localhost ~]# java -jar -Xms4096m -Xmx4096m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:/tmp/heaplog.log test-jvm.jar
Tomcat
编辑文件tomcat/bin/catalina.sh
# 在cygwin=false前面添加
JAVA_OPTS="-server -Xms4096m -Xmx4096m"