jvm 参数

-XX:+PrintCompilation 查看JIT编译工作
-XX:+CITime,我们可以在JVM关闭时得到各种编译的统计信息
-XX:+PrintFlagsFinal and -XX:+PrintFlagsInitial 在JVM启动后,在命令行中可以输出所有XX参数和值。
 -XX:+PrintCommandLineFlags 这个参数让JVM打印出那些已经被用户或者JVM设置过的详细的XX参数的名称和值。
 -Xms and -Xmx (or: -XX:InitialHeapSize and -XX:MaxHeapSize) 它们可以允许我们指定JVM的初始和最大堆内存大小
 -XX:+HeapDumpOnOutOfMemoryError  让JVM在发生内存溢出时自动的生成堆内存快照
 -XX:HeapDumpPath=<path>来改变默认的堆内存快照生成路径
 -XX:OnOutOfMemoryError  当内存溢发生时,我们甚至可以可以执行一些指令 -XX:OnOutOfMemoryError ="sh ~/cleanup.sh"
  -XX:PermSize and -XX:MaxPermSize 其中-XX:MaxPermSize 用于设置永久代大小的最大值,-XX:PermSize 用于设置永久代初始大小。请注意,这里设置的永久代大小并不会被包括在使用参数-XX:MaxHeapSize 设置的堆内存大小中。
  -XX:InitialCodeCacheSize and -XX:ReservedCodeCacheSize  往往被忽视的内存区域是“代码缓存”,它是用来存储已编译方法生成的本地代码。
  -XX:+UseCodeCacheFlushing  当代码缓存被填满时让JVM放弃一些编译代码,可以避免当代码缓存被填满的时候JVM切换到interpreted-only 模式


  SUN/Oracle 的HotSpot JVM 又把新生代进一步划分为3个区域:一个相对大点的区域,称为”伊甸园区(Eden)”;两个相对小点的区域称为”From 幸存区(survivor)”和”To 幸存区(survivor)”。按照规定,新对象会首先分配在 Eden 中(如果新对象过大,会直接分配在老年代中)在GC中,Eden 中的对象会被移动到survivor中,直至对象满足一定的年纪(定义为熬过GC的次数),会被移动到老年代。


  基于大多数新生对象都会在GC中被收回的假设。新生代的GC 使用复制算法。在GC前To 幸存区(survivor)保持清空,对象保存在 Eden 和 From 幸存区(survivor)中,GC运行时,Eden中的幸存对象被复制到 To 幸存区(survivor)。针对 From 幸存区(survivor)中的幸存对象,会考虑对象年龄,如果年龄没达到阀值(tenuring threshold),对象会被复制到To 幸存区(survivor)。如果达到阀值对象被复制到老年代。复制阶段完成后,Eden 和From 幸存区中只保存死对象,可以视为清空。如果在复制过程中To 幸存区被填满了,剩余的对象会被复制到老年代中。最后 From 幸存区和 To幸存区会调换下名字,在下次GC时,To 幸存区会成为From 幸存区。


  上图演示GC过程,黄色表示死对象,绿色表示剩余空间,红色表示幸存对象


-XX:NewSize and -XX:MaxNewSize 通过参数指定新生代大小 设置 XX:MaxNewSize 参数时,应该考虑到新生代只是整个堆的一部分,新生代设置的越大,老年代区域就会减少。
-XX:NewRatio 可以设置新生代和老年代的相对大小。这种方式的优点是新生代大小会随着整个堆大小动态扩展。例如 -XX:NewRatio=3 指定老年代/新生代为3/1. 
-XX:SurvivorRatio 指定伊甸园区(Eden)与幸存区大小比例 例如, -XX:SurvivorRatio=10 表示伊甸园区(Eden)是 幸存区To 大小的10倍(也是幸存区From的10倍).所以,伊甸园区(Eden)占新生代大小的10/12, 幸存区From和幸存区To 每个占新生代的1/12 .注意,两个幸存区永远是一样大的..
-XX:+PrintTenuringDistribution  指定JVM 在每次新生代GC时,输出幸存区中对象的年龄分布
-XX:InitialTenuringThreshold, -XX:MaxTenuringThreshold and -XX:TargetSurvivorRatio   通过 -XX:InitialTenuringThreshold 和 -XX:MaxTenuringThreshold 可以设定老年代阀值的初始值和最大值。 可以通过参数 -XX:TargetSurvivorRatio 设定幸存区的目标使用率.
-XX:+NeverTenure and -XX:+AlwaysTenure  设置参数 -XX:+NeverTenure , 对象永远不会晋升到老年代,设置参数 -XX:+AlwaysTenure, 表示没有幸存区,所有对象在第一次GC时,会晋升到老年代。
-XX:+UseSerialGC 来激活串行垃圾收集器
-XX:+UseParallelGC 使用多线程并行执行年轻代垃圾收集
-XX:+UseParallelOldGC ”老”实际上是指年老代,除了激活年轻代并行垃圾收集,也激活了年老代并行垃圾收集。 当期望高吞吐量,并且JVM有两个或更多可用处理器核心时,我建议使用该标志。
-XX:ParallelGCThreads  指定并行垃圾收集的线程数量
-XX:-UseAdaptiveSizePolicy 垃圾收集器能将堆大小动态变动像GC设置一样应用到不同的堆区域
-XX:GCTimeRatio  指定目标应用程序线程的执行时间(与总的程序执行时间)达到N/(N+1)的目标比值
-XX:MaxGCPauseMillis JVM最大暂停时间的目标值(以毫秒为单位)
-XX:+UseConcMarkSweepGC 该标志首先是激活CMS收集器。默认HotSpot JVM使用的是并行收集器。
-XX:UseParNewGC  当使用CMS收集器时,该标志激活年轻代使用多线程并行执行垃圾回收。
-XX:+CMSConcurrentMTEnabled   当该标志被启用时,并发的CMS阶段将以多线程执行(因此,多个GC线程会与所有的应用程序线程并行工作)。
 -XX:ConcGCThreads  标志-XX:ConcGCThreads=<value>(早期JVM版本也叫-XX:ParallelCMSThreads)定义并发CMS过程运行时的线程数。
 -XX:CMSInitiatingOccupancyFraction   该值代表老年代堆空间的使用率。比如,value=75意味着第一次CMS垃圾收集会在老年代被占用75%时被触发
-XX:+UseCMSInitiatingOccupancyOnly  命令JVM不基于运行时收集的数据来启动CMS垃圾收集周期.
-XX:+CMSClassUnloadingEnabled 相对于并行收集器,CMS收集器默认不会对永久代进行垃圾回收。如果希望对永久代进行垃圾回收,可用设置标志
-XX:+CMSIncrementalMode 该标志将开启CMS收集器的增量模式
-XX:+ExplicitGCInvokesConcurrent and -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses   标志-XX:+ExplicitGCInvokesConcurrent命令JVM无论什么时候调用系统GC,都执行CMS GC,而不是Full GC.第二个标志-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses保证当有系统GC调用时,永久代也被包括进CMS垃圾回收的范围内。
-XX:+DisableExplicitGC  该标志将告诉JVM完全忽略系统的GC调用(不管使用的收集器是什么类型)。
-XX:+PrintGC  参数-XX:+PrintGC(或者-verbose:gc)开启了简单GC日志模式,为每一次新生代(young generation)的GC和每一次的Full GC打印一行信息。
-XX:PrintGCDetails 如果不是使用-XX:+PrintGC,而是-XX:PrintGCDetails,就开启了详细GC日志模式。
-XX:+PrintGCTimeStamps和-XX:+PrintGCDateStamps  使用-XX:+PrintGCTimeStamps可以将时间和日期也加到GC日志中。表示自JVM启动至今的时间戳会被添加到每一行中。
-Xloggc  缺省的GC日志时输出到终端的,使用-Xloggc:也可以输出到指定的文件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值