内存溢出和JVM参数优化

一、溢出错误 

异常错误: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
来源:牛客网

常见配置汇总

  1. 堆设置
    • -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:设置持久代大小
  2. 收集器设置
    • -XX:+UseSerialGC:设置串行收集器
    • -XX:+UseParallelGC:设置并行收集器
    • -XX:+UseParalledlOldGC:设置并行年老代收集器
    • -XX:+UseConcMarkSweepGC:设置并发收集器
  3. 垃圾回收统计信息
    • -XX:+PrintGC
    • -XX:+PrintGCDetails
    • -XX:+PrintGCTimeStamps
    • -Xloggc:filename
  4. 并行收集器设置
    • -XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
    • -XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
    • -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
  5. 并发收集器设置
    • -XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。
    • -XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。

四、JVM参数查看指令

详细他人参考:

JDK工具(查看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 

参考:

设置tomcat启动参数

Tomcat 调优及 JVM 参数优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值