最近团队在调JVM参数优化,贴一下某些整理的参数列表和解释
| JVM参数配置 | 解释 |
|---|---|
| -server | C2引擎执行 |
| -Xms20g | 最小堆内存20G |
| -Xmx20g | 最大堆内存20G |
| -Xmn8g | 新生代8G |
| -XX:PermSize=256m | Perm大小256MB |
| -XX:MaxPermSize=256m | Perm大小256MB |
| -XX:SurvivorRatio=10 | YoungGC 3个区的比例 |
| -XX:+UseConcMarkSweepGC | Old区使用CMS GC |
| -XX:+UseCMSCompactAtFullCollection | 一旦触发FullGC对Old区进行压缩减少内存碎片 |
| -XX:CMSMaxAbortablePrecleanTime=5000 | CMS GC的回收超时时间,避免GC时间太久 |
| -XX:+CMSClassUnloadingEnabled | 支持CMS GC时对Perm区的Class和ClassLoader做GC,否则要等FullGC |
| -XX:CMSInitiatingOccupancyFraction=80 | Old区达到80%时触发CMS GC,如果不设置,JVM会自适应,效果不好 |
| -XX:+UseCMSInitiatingOccupancyOnly | 只以CMSInitiatingOccupancyFraction设定的阈值为准,不加这个参数CMSInitiatingOccupancyFraction会不生效 |
| -XX:+HeapDumpOnOutOfMemoryError | OOM时自动jmap dump内存 |
| -XX:HeapDumpPath=/home/admin/logs/java.hprof | OOM时dump内存的位置 |
| -Xloggc:/home/admin/logs/gc.log | GC log位置 |
| -XX:+PrintGCDetails | 打印GC详细信息 |
| -XX:+PrintGCDateStamps | 将GC时间由时间戳改为人类可识别的时刻点 |
| -Dsun.net.client.defaultConnectTimeout=10000 | socket连接超时时间 |
| -Dsun.net.client.defaultReadTimeout=30000 | socket读超时时间 |
| -verbose:class | 打印类加载信息 |
| -XX:MaxDirectMemorySize=1g | 控制DirectByteBuffer占用的堆外内存大小,防止堆外内存导致OOM |
| -XX:+ExplicitGCInvokesConcurrent | 调用System.gc()时触发CMS GC而不是Full GC |
| -XX:ParallelGCThreads=5 | 并发GC线程数(Young GC) |
9万+

被折叠的 条评论
为什么被折叠?



