JVM虚拟机参数总结分享

一是标准参数(-)
所有的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垃圾回收器在并发标记后不进行预清理操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值