Java HotSpot虚拟机参数说明

JDK的虚拟机参数可以通过-XX:+PrintFlagsFinal参数,这样可以输出所有的参数名称和默认值。
JDK的参数格式如下:

-XX:+<option> // 开启option参数;
-XX:-<option> // 关闭option参数;
-XX:<option>=<value> // 将option参数的值设置为value。

-Xms 指定启动时内存大小(此值可以设置成与-Xmx相同,以避免每次GC完成后 JVM 内存重新分配)。
-Xmx 指程序运行时最大可用内存大小,程序运行中内存大于这个值会 OutOfMemory。
-Xmn 年轻代大小(整个JVM内存大小 = 年轻代 + 年老代 + 永久代)。
-Xss 设置每个线程的堆栈大小

1. JVM内存管理参数

序号 参数 默认值 说明
1 DisableExplicitGC 关闭 忽略来自System.gc()方法触发的垃圾收集
2 ExplicitGCInvokesConcurrent 关闭 收到System.gc()申请时,使用CMS进行垃圾收集
3 UseSerialGC Client模式默认开启,其他模式关闭 使用Serial + Serial Old进行内存回收
4 UseParNewGC 关闭 使用ParNew + Serial Old进行内存回收
5 UseConcMarkSweepGC 关闭 使用ParNew +CMS+ Serial Old进行内存回收
6 UseParallelGC Server模式默认开启,其他模式关闭 使用Parallel Scavenge+ Serial Old进行内存回收
7 UseParallelOldGC Server模式默认开启,其他模式关闭 使用Parallel Scavenge+ Parallel Old进行内存回收
8 SurvivorRatio 默认为8 新生代Eden区域和Survivor区域的容量比
9 PretenureSizeThreshold 无默认值 直接晋级到老年代的对象大小
10 MaxTenuringThreshold 默认15 晋升到老年代的对象年龄,一个对象在经过一次Minor GC后,没有被回收则年龄+1。
11 UseAdapterSizePolicy 默认开启 动态调整jvm堆中各个区域的大小以及进入老年代的年龄
12 HandlePromotionFailure 默认开启 是否允许担保失败,即老年代的剩余空间不足以应付新生代的整个Eden和Survivor区的所有对象都存活的极端情况
13 ParallelGCThread 当CPU <= 8是默认为CPU数量;当CPU>8时小于CPU数量 并行GC时内存回收的线程数
14 GCTimeRatio 默认99,即1%的GC时间 GC时间占总时间的比率,仅在Parallel Scavenge时有效
15 MaxGCPauseMillis 无默认值 GC最大停顿时间,仅在Parallel Scavenge时有效
16 CMSInitiatingOccupancyFraction 默认68 CMS的老年代空间被使用多少后触发垃圾收集,仅在CMS时有效
17 UseCMSCompactAtFull Collection 默认开启 CMS垃圾回收后是否进行内存碎片整理
18 CMSFullGCsBefore Compaction 无默认值 CMS垃圾回收后N次进行内存碎片整理
19 ScavengeBeforeFullGC 默认开启 在Full GC发生之前触发一次Minor GC
20 UseGCOverHeadLimit 默认开启 禁止GC无限制的执行,否则直接发生OutOfMemory异常
21 UseTLAB Server模式开启 优先在本地线程缓存中分配对象,避免分配内存时锁定过程
22 MaxHeapFreeRatio 默认70 当Xmx比Xms大时,堆可以动态收缩和扩展,这个参数控制当堆空闲大于指定比率是自动收缩
23 MinHeapFreeRatio 默认为40 当Xmx比Xms大时,堆可以动态收缩和扩展,这个参数控制当堆空闲小于指定比率是自动收缩
24 MaxPermSize 大部分情况为64MB 永久代最大值

2.即时编译参数

序号 参数 默认值 说明
1 CompileThreshold Client模式下1500,Server模式下10000 触发方法即时编译的阀值
2 OnStackReplacePercentage Client模式下933,Server模式下140 OSR比率,CompileThreshold阀值的计算公式的参数
3 ReservedCodeCacheSize 大部分情况是32MB 即时编译器编译代码缓存的最大值

3.类型加载参数

序号 参数 默认值 说明
1 UseSplitVerifier 默认开启 使用依赖StackMapTasks信息的类型检查代替数据流分析,以加快字节码校验速度
2 FailOverToOldVerifier 默认开启 当类型校验失败时,是否允许回到老的类型推到校验方式进行校验
3 RelaxAccessControlCheck 默认关闭 在校验阶段放松对类型访问性的限制

4.多线程相关参数

序号 参数 默认值 说明
1 UseSpinning 默认开启 开启自旋锁,避免线程频繁的挂起和唤醒
2 PreBlockSpin 默认值10 使用自旋锁时默认的自旋次数
3 UseThreadPriorities 默认开启 使用本地线程优先级
4 UseBiasedLocking 默认开启 是否开启偏向锁
5 UseFastAccessMethods 默认开启 当频繁反射执行某个方法时,生成字节码来加快反射的执行速度

5.性能参数

序号 参数 默认值 说明
1 AggressiveOpts 默认开启 使用激进的优化特性
2 UseLargePages 默认开启 使用大内存分页,需要操作系统支持
3 LargePageSizeInBytes 默认4MB 指定大小的内存分页,需要操作系统支持
4 StringCache 默认开启 是否使用字符串缓存

6.调试参数

序号 参数 默认值 说明
1 HeapDumpOnOutOfMemoryError 默认关闭 发生内存溢出异常时是否生成堆转存快照
2 OnOutOfMemoryError 无默认值 当虚拟机抛出内存溢出时执行的指令
3 OnError 无默认值 当虚拟机抛出ERROR时执行的指令
4 PrintClassHistogram 默认关闭 使用Ctrl + Break快捷键输出类统计状态,相当于jmap -histo 的功能
5 PrintConcurrentLocks 默认关闭 打印J.U.C中锁的状态
6 PrintCommandLineFlag 默认关闭 打印启动虚拟机时输入的非稳定参数
7 PrintCompilation 默认关闭 打印方法即时编译信息
8 PrintGC 默认关闭 打印GC信息
9 PrintGCDetail 默认关闭 打印GC的详细信息
10 PrintGCTimesStamps 默认关闭 打印GC停顿耗时
11 PrintTenuringDistribution 默认关闭 打印GC后新生代各个年龄对象的大小
12 TraceClassLoading 默认关闭 打印类加载信息
13 TraceClassUnLoading 默认关闭 打印类卸载信息
14 PrintInlining 默认关闭 打印方法的内联信息
15 PrintCFGToFile 默认关闭 将CFG图信息输出到文件,只有debug版本JVM才支持
16 PrintIdealGraphFile 默认关闭 将Ideal图信息输出到文件,只有debug版本JVM才支持
17 UnlockDIagnosticVMOptions 默认关闭 让虚拟机进入诊断模式
18 PrintAssembly 默认关闭 打印即时编译后的二进制信息,需要开启UnlockDIagnosticVMOptions
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354