一、溢出错误
异常错误:java.lang.OutOfMemoryError: PermGen space
解决办法:catalina.sh line:109
JAVA_OPTS=" -XX:PermSize=128M -XX:MaxPermSize=512m "
异常错误:java.lang.OutOfMemoryError: Java heap space
解决办法:catalina.sh line:109
JAVA_OPTS=" -Xms512m -Xmx1024m "
二、JVM参数说明(http://jvmmemory.com/)
-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:MinHeapFreeRatio=40 -XX:MaxHeapFreeRatio=70 -XX:NewRatio=8 -XX:SurvivorRatio=32
Heap(堆內存):初始堆内存,最大堆内存
-Xms512m -Xmx1024m
永久代:初始,最大
-XX:PermSize=128m -XX:MaxPermSize=256m
三、常用配置
链接:https://www.nowcoder.com/questionTerminal/970cdaaa4a114cbf9fef82213a7dabca?orderByHotValue=0&pos=56
来源:牛客网
常见配置汇总
- 堆设置
- -Xms:初始堆大小
- -Xmx:最大堆大小
- -XX:NewSize=n:设置年轻代大小
- -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
- -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
- -XX:MaxPermSize=n:设置持久代大小
- 收集器设置
- -XX:+UseSerialGC:设置串行收集器
- -XX:+UseParallelGC:设置并行收集器
- -XX:+UseParalledlOldGC:设置并行年老代收集器
- -XX:+UseConcMarkSweepGC:设置并发收集器
- 垃圾回收统计信息
- -XX:+PrintGC
- -XX:+PrintGCDetails
- -XX:+PrintGCTimeStamps
- -Xloggc:filename
- 并行收集器设置
- -XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
- -XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
- -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
- 并发收集器设置
- -XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。
- -XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。
四、JVM参数查看指令
详细他人参考:
使用记录:
jmap -heap pid
$ jps -v
jstat -gc util pid
ps -ef | grep java
java -XX:+PrintFlagsInitial >>1.txt
jinfo -flag MaxHeapSize 3556
五、Tomcat JVM参数配置
startup.sh -> catalina.sh
参考: