您的位置:首页 > 其它

JVM虚拟机参数总结分享

2017-11-07 15:30 253 查看
一是标准参数(-)

所有的JVM实现都必须实现这些参数的功能,而且向后兼容;

二是非标准参数(-X)

默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;

三是非Stable参数(-XX)

此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;

标准参数:

-server

设置jvm使用server模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高

-client

设置jvm使用client模式,特点是启动速度比较快,但运行时性能和内存管理效率不高

-verbose:class 

输出jvm载入类的相关信息,当jvm报告说找不到类或者类冲突时可此进行诊断。

-verbose:gc 

输出每次GC的相关情况。

-verbose:jni 

输出native方法调用的相关情况,一般用于诊断jni调用错误信息。

-Xprof

输出CPU运行时的诊断信息。

非标准参数:

-Xloggc:file

将每次GC事件的相关情况记录到一个文件中,若与verbose命令同时出现在命令行中,则以-Xloggc为准。

-Xms

指定jvm堆的初始大小,默认为物理内存的1/64,最小为1M;可以指定单位,比如k、m,若不指定,则默认为字节。

-Xmx

指定jvm堆的最大值,默认为物理内存的1/4或者1G,最小为2M;单位与-Xms一致。

-Xmn

用于设置新生代的大小

-Xss

线程的最大栈空间

非Stable参数

-XX:PermSize 初始化永久代大小

-XX:MaxPermSize 永久代最大容量

-XX:+UseSerialGC 串行垃圾回收器,虚拟机在client模式下,它是默认默认的垃圾收集器

-XX:+UseParNewGC 新生代使用ParNew回收器,老年代使用串行收集器,回收器的线程数可以用

-XX:+UseParallelGC 并行垃圾回收器,新生代使用ParallelGC回收器,老年代使用串行收集器

-XX:+UseParalleOldlGC 对Full GC启用并行,新生代使用 ParallelGC 回收器,老年代使用 ParallelOldGC 回收器,

-XX:+UseConcMarkSweepGC 并发标记扫描垃圾回收器,新生代使用ParNew回收器,老年代使用CMS垃圾回收器

-XX:+UseG1GC G1垃圾回收器

-XX:ConcGCThreads 设置并发线程数量

-XX:ParallelCMSThreads 指定CMS并发的线程数

-XX:ParallelGCThreads 参数指定,一般最好和CPU数量相当,避免线程过多影响垃圾回收性能

-XX:MaxGCPauseMillis 用来制定最大的停顿时间(对G1进行设置时,最重要的参数)

-XX:+UseThreadPriorities 启用本地线程优先级

-XX:+ScavengeBeforeFullGC 新生代GC优先于Full GC执行

-XX:+PrintGC 在输出日志中查看垃圾回收前后堆的大小

-XX:+PrintGCDetails 打印出详细的GC信息,也可以使虚拟机在推出前打印详细的信息

-XX:+PrintHeapAtGC 打印垃圾回收前后堆的详细信息

-XX:+PrintGCTimeStamps 打印每次GC发生的时间,该输出时间为虚拟机启动后的时间偏移量

-XX:+PrintGCApplicationConcurrrentTime 打印出应用程序的执行时间

-XX:+PrintGCApplicationStopedTime 打印应用程序由于GC停顿的时间

-XX:+PrintReferenceGC 打印系统内软引用、弱引用、虚引用和Finallize队列

-XX:+DisableExplicitGC 禁用显示的GC,但jvm的gc仍然有效

-XX:+HeapDumpOnOutOfMemoryError 可以在堆溢出时导出整个堆的信息

-XX:HeapDumpPath 配合-XX:+HeapDumpOnOutOfMemoryError使用,指定导出堆的存放路径

-XX:LargePageSizeInBytes=4m 设置用于Java堆的大页面尺寸

-XX:MaxHeapFreeRatio=70 GC后java堆中空闲量占的最大比例

-XX:MaxNewSize=size 新生成对象能占用内存的最大值

-XX:MaxPermSize=64m 老生代对象能占用内存的最大值

-XX:MinHeapFreeRatio=40 GC后java堆中空闲量占的最小比例

-XX:NewRatio=2 新生代内存容量与老生代内存容量的比例,用来设置新生代和老年代的比例 -XX:NewRatio=老年代/新生代

-XX:NewSize=2.125m 新生代对象生成时占用内存的默认值

-XX:SurvivorRatio 用来设置新生代中 eden 空间和 from/to 空间的比例关系,-XX:SurvivorRatio=eden/from=eden/to

-XX:ReservedCodeCacheSize=32m 保留代码占用的内存容量

-XX:ThreadStackSize=512 设置线程栈大小,若为0则使用系统默认值

-XX:GCTimeRatio 设置吞吐量大小,它是一个0到100之间的整数,如果他的值是n,那么系统将花费不超过1/(1 + n)的时间用于垃圾收集

-XX:CMSFullGCsBeforeCompaction 指定多少次CMS后进行一次内存压缩

-XX:+UseLargePages 使用大页面内存

-XX:MaxMetaspaceSize jdk1.8中方法区被移除,取而代之的是元数据区,可用该配置设置元数据区的大小,元数据区是堆外的直接内存,若不指定大小,虚拟机可能会消耗掉系统的所有可用内存

-XX:-PrintClassHistogram 遇到Ctrl-Break后打印类实例的柱状信息,与jmap -histo功能相同

-XX:-PrintConcurrentLocks 遇到Ctrl-Break后打印并发锁的相关信息,与jstack -l功能相同

-XX:-PrintCommandLineFlags 打印在命令行中出现过的标记

-XX:-PrintCompilation 当一个方法被编译时打印相关信息

-XX:-TraceClassLoading 跟踪类的加载信息

-XX:-TraceClassLoadingPreorder 跟踪被引用到的所有类的加载信息

-XX:-TraceClassResolution 跟踪常量池

-XX:-TraceClassUnloading 跟踪类的卸载信息

-XX:-TraceLoaderConstraints 跟踪类加载器约束的相关信息

-XX:+CMSParallelRemarkEnabled  在使用UseParNewGC 的情况下, 尽量减少 mark 的时间 

-XX:+UseCMSCompactAtFullCollection 开启CMS垃圾回收后进行一次内存碎片整理

-XX:+UseCMSInitiatingOccupancyOnly  表示只有达到阀值时才进行CMS回收

-XX:-CMSPrecleaningEnabled 设置CMS垃圾回收器在并发标记后不进行预清理操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: