jvm 的参数查询列表

典型JVM参数设置格式:

java -Xmx3550m -Xms3550m -Xmn2g -Xss128k

-Xmx3550m:最大堆内存

-Xms3550m:初始化堆内存

-Xmn2g:年轻代内存。

-Xss128k:每个线程的堆栈大小。

-XX:NewRatio=4:年轻代与年老代的比值。

-XX:SurvivorRatio=4:年轻代中Eden区与Survivor区的大小比值

 -XX:PermSize: 永久代(方法区)的初始大小

-XX:MaxPermSize=16m:持久代大小为16m。

-XX:MaxTenuringThreshold=0:设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直 接进入年老代。

-XX:+UseParallelGC:选择垃圾收集器为并行收集器。此配置仅对年轻代有效。而年老代仍旧使用串行收集。

-XX:ParallelGCThreads=20:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。

-XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。

-XX:MaxGCPauseMillis=100:设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。

-XX:+UseAdaptiveSizePolicy:设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开。

-XX:+UseConcMarkSweepGC:设置年老代为并发收集。

-XX:+UseParNewGC:设置年轻代为并行收集。可与CMS收集同时使用。

-XX:CMSFullGCsBeforeCompaction:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。

-XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除碎片

-XX:+HeapDumpOnOutOfMemoryError:让虚拟机在发生内存溢出时 Dump 出当前的内存堆转储快照,以便分析用

-XX:+PrintGC:打印gc日志

-XX:+PrintGCDetails: 打印 GC 信息

-XX:+PrintGCTimeStamps -XX:+PrintGC:PrintGCTimeStamps可与上面两个混合使用

输出形式:11.851: [GC 98328K->93620K(130112K), 0.0082960 secs]

-XX:+PrintGCApplicationConcurrentTime:打印每次垃圾回收前,程序未中断的执行时间。可与上面混合使用

输出形式:Application time: 0.5291524 seconds

-XX:+PrintGCApplicationStoppedTime:打印垃圾回收期间程序暂停的时间。可与上面混合使用

输出形式:Total time for which application threads were stopped: 0.0468229 seconds

-XX:PrintHeapAtGC:打印GC前后的详细堆栈信息

-Xloggc:filename:与上面几个配合使用,把相关日志信息记录到文件以便分析。

-Xnoclassgc 关闭CLASS的垃圾回收功能,就是虚拟机加载的类,即便是不使用,没有实例也不会回收

收集器设置

-XX:+UseSerialGC:设置串行收集器

-XX:+UseParallelGC:设置并行收集器

-XX:+UseParalledlOldGC:设置并行年老代收集器

-XX:+UseConcMarkSweepGC:设置并发收集器

并行收集器设置

-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。

-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间

-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

并发收集器设置

-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。

-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。

参数及其默认值 描述 

-XX:-DisableExplicitGC 禁止调用System.gc();但jvm的gc仍然有效 
-XX:+MaxFDLimit 最大化文件描述符的数量限制 
-XX:+ScavengeBeforeFullGC 新生代GC优先于Full GC执行 
-XX:+UseGCOverheadLimit 在抛出OOM之前限制jvm耗费在GC上的时间比例 
-XX:-UseConcMarkSweepGC 对老生代采用并发标记交换算法进行GC 
-XX:-UseParallelGC 启用并行GC 
-XX:-UseParallelOldGC 对Full GC启用并行,当-XX:-UseParallelGC启用时该项自动启用 
-XX:-UseSerialGC 启用串行GC 
-XX:+UseThreadPriorities 启用本地线程优先级

参数及其默认值 描述 

-XX:LargePageSizeInBytes=4m 设置用于Java堆的大页面尺寸 
-XX:MaxHeapFreeRatio=70 GC后java堆中空闲量占的最大比例 
-XX:MaxNewSize=size 新生成对象能占用内存的最大值 
-XX:MaxPermSize=64m 老生代对象能占用内存的最大值 
-XX:MinHeapFreeRatio=40 GC后java堆中空闲量占的最小比例 
-XX:NewRatio=2 新生代内存容量与老生代内存容量的比例 
-XX:NewSize=2.125m 新生代对象生成时占用内存的默认值 
-XX:ReservedCodeCacheSize=32m 保留代码占用的内存容量 
-XX:ThreadStackSize=512 设置线程栈大小,若为0则使用系统默认值 
-XX:+UseLargePages 使用大页面内存

 参数及其默认值 描述 

-XX:-CITime 打印消耗在JIT编译的时间 
-XX:ErrorFile=./hs_err_pid.log 保存错误日志或者数据到文件中 
-XX:-ExtendedDTraceProbes 开启solaris特有的dtrace探针 
-XX:HeapDumpPath=./java_pid.hprof 指定导出堆信息时的路径或文件名 
-XX:-HeapDumpOnOutOfMemoryError 当首次遭遇OOM时导出此时堆中相关信息 
-XX:OnError=";" 出现致命ERROR之后运行自定义命令 
-XX:OnOutOfMemoryError=";" 当首次遭遇OOM时执行自定义命令 
-XX:-PrintClassHistogram 遇到Ctrl-Break后打印类实例的柱状信息,与jmap -histo功能相同 
-XX:-PrintConcurrentLocks 遇到Ctrl-Break后打印并发锁的相关信息,与jstack -l功能相同 
-XX:-PrintCommandLineFlags 打印在命令行中出现过的标记 
-XX:-PrintCompilation 当一个方法被编译时打印相关信息 
-XX:-PrintGC 每次GC时打印相关信息 
-XX:-PrintGC Details 每次GC时打印详细信息 
-XX:-PrintGCTimeStamps 打印每次GC的时间戳 
-XX:-TraceClassLoading 跟踪类的加载信息 
-XX:-TraceClassLoadingPreorder 跟踪被引用到的所有类的加载信息 
-XX:-TraceClassResolution 跟踪常量池 
-XX:-TraceClassUnloading 跟踪类的卸载信息 
-XX:-TraceLoaderConstraints 跟踪类加载器约束的相关信息

 -XX:+UseAdaptiveSizePolicy:设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开。

-XX:MaxTenuringThreshold=0:设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年 老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代 的存活时间,增加在年轻代即被回收的概论。

-XX:MaxGCPauseMillis=100:设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM 会自动调整年轻代大小,以满足此值。

·
·
·
·
·

在命令行中输入以下命令可以查看jvm的默认参数
java -XX:+PrintFlagsInitial

留下你的脚步
推荐阅读