2.JVM的参数配置

Posted freelymen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.JVM的参数配置相关的知识,希望对你有一定的参考价值。

一、JVM参数类型

在生产环境中,一般情况下配置的参数有3种类型的:

  1. -X:非标准参数,不是每个虚拟机都实现了,例如-Xms2g
  2. -XX:非稳定性参数,例如-XX:NewSize=2g 
    使用方式有下面3种: 
    -XX:+<option> 开启option参数 
    -XX:-<option> 关闭option参数 
    -XX:-<option>=<value> 将option参数的值设置为value
  3. -D:用于自定义参数,设置的值可以通过System.getProperty(String name)方法获取,例如:-Dlog.dir=/data/log

通过java -h命令,可以查看所有标准参数,常见的有-D、-version、-classpath 
技术分享图片

 

 
通过java -X命令,可以查看所有-X参数,常见的有-Xms、-Xmx、-Xss 
技术分享图片

 

二、内存管理参数

1、堆栈大小设置

参数默认值使用介绍示例
-Xms 堆内存的1/64 堆的最小值 -Xms6g
-Xmx 堆内存的1/4 堆的最大值 -Xmx6g
-Xss 栈的大小 -Xss1m
-XX:NewSize 堆中新生代的初始值 -XX:NewSize=2g
-XX:MaxNewSize 堆中新生代的最大值 -XX:MaxNewSize=4g
-XX:PermSize 方法区的初始值 -XX:PermSize=256g
-XX:MaxPermNewSize 方法区的最大值 -XX:MaxPermSize=512g
-XX:NewRatio 2 新生代和老年代的比值 -XX:NewRatio=4
(表示新生代:老年代=1:4,
即新生代占堆的1/5)
-XX:SurvivorRatio 8 新生代中surviivor区和eden区的比值 -XX:SurvivorRatio=8
(表示survivor:eden=1:8,
即一个survivor占新生代的1/10)
-XX:+HeapDumpOnOutOfMemoryError 默认关闭 发生OOM时自动dump堆转储文件  
-XX:HeapDumpPath dump文件路径 -XX:HeapDumpPath=/data/log/heapdump.bin

2、垃圾回收设置

参数默认值使用介绍示例
-XX:+UseSerialGC Client模式的虚拟机默认开启 Client模式下,使用Serial+Serial Old的收集器组合进行垃圾回收  
-XX:+UseParNewGC 默认关闭 使用ParNew+Serial Old的收集器组合进行垃圾回收  
-XX:+UseParallelGC server模式的虚拟机默认开启 使用Parallel Scavenge+Serial Old的收集器组合进行垃圾回收  
-XX:+UseParallelOldGC 默认关闭 使用Parallel Scavenge+Parallel Old的收集器组合进行垃圾回收  
-XX:+UseConcMarkSweepGC 默认关闭 使用ParNew+CMS+Serial Old的收集器组合进行垃圾回收。如果CMS收集器出现Concurrent Mode Failure,则Serial Old收集器将作为后备收集器 -XX:+UseConcMarkSweepGC
-XX:ParallelCMSThreads 小于等于8个CPU时默认值为CPU的个数,多于8个时比CPU的数量少 设置GC时进行内存回收的线程数 -XX:ParallelCMSThreads=2
-XX:+PrintGCDetails 默认关闭 发生垃圾回收时打印内存回收日志  
-XX:+PrintGCTimeStamps 默认关闭 发生垃圾回收时打印回收时间  
-Xloggc 设置GC记录的文件 Xloggc:/data/log/tomcat/gc.log
-XX:+UseGCLogFileRotation 默认关闭 启用GC日志文件的自动转储  
-XX:GCLogFileSize 默认关闭 控制GC日志文件的大小 -XX:GCLogFileSize=1M

3、多线程相关参数

参数默认值使用介绍示例
-XX:+UsedBiasedLocking 默认开启 是否使用偏向锁  
最后,给大家提供一个8核8G的机器常用的配置:
-Xms6g
-Xmx6g
-Xss1m
-XX:NewSize=2g
-XX:MaxNewSize=4g
-XX:NewRatio=4g
-XX:SurvivorRatio=8 
-XX:+AggressiveOpts 
-XX:+UseBiasedLocking 
-XX:+UseConcMarkSweepGC 
-XX:ParallelCMSThreads=2 
-XX:+PrintGCDetails 
-XX:+PrintGCTimeStamps 
-Xloggc:/data/log/gc.log 
-XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=/data/log/heapdump.bin 
-XX:+CMSParallelRemarkEnabled 
-XX:+ScavengeBeforeFullGC 
-XX:CMSInitiatingOccupancyFraction=75











以上是关于2.JVM的参数配置的主要内容,如果未能解决你的问题,请参考以下文章

直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置

大数据技术之_30_JVM学习_01_JVM 位置+JVM 体系结构概览+堆体系结构概述+堆参数调优入门+JVM 的配置和优化+Tomcat 的配置和优化

记录一次JVM配置优化的案例

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置