在 Java 开发中,JVM(Java 虚拟机)参数是用于配置虚拟机行为的重要工具。它们可以影响垃圾回收、内存管理、性能优化等方面。本文将详细介绍一些常见的 JVM 参数及其作用和默认值。

一、垃圾回收相关参数

  1. CMSAbortablePrecleanMinWorkPerIteration:CMS 垃圾回收器中可中止预清理阶段每次迭代的最小工作量。默认值为 100。
  2. CMSAbortablePrecleanWaitMillis:CMS 可中止预清理阶段的等待毫秒数。默认值为 100。
  3. CMSBitMapYieldQuantum:CMS 垃圾回收器中位图生成的产量量子。默认值为 10485760。
  4. CMSBootstrapOccupancy:CMS 启动时的占用率。默认值为 50。
  5. CMSClassUnloadingEnabled:是否启用 CMS 类卸载功能。默认值为 true。
  6. CMSClassUnloadingMaxInterval:CMS 类卸载的最大间隔。默认值为 0。
  7. CMSCleanOnEnter:进入时是否进行 CMS 清理。默认值为 true。
  8. CMSConcMarkMultiple:CMS 并发标记的倍数。默认值为 32。
  9. CMSConcurrentMTEnabled:是否启用 CMS 并发多线程。默认值为 true。
  10. CMSCoordinatorYieldSleepCount:CMS 协调器让步休眠计数。默认值为 10。
  11. CMSEdenChunksRecordAlways:是否始终记录 CMS Eden 块。默认值为 true。
  12. CMSExpAvgFactor:CMS 指数平均因子。默认值为 50。
  13. CMSExtrapolateSweep:是否外推清扫。默认值为 false。
  14. CMSIncrementalSafetyFactor:CMS 增量安全因子。默认值为 10。
  15. CMSIndexedFreeListReplenish:CMS 索引空闲列表补充。默认值为 4。
  16. CMSInitiatingOccupancyFraction:CMS 启动占用率分数。默认值为 -1。
  17. CMSIsTooFullPercentage:CMS 判断堆是否太满的百分比。默认值为 98。
  18. CMSLargeCoalSurplusPercent:CMS 大堆合并剩余百分比。默认值为 0.95。
  19. CMSLargeSplitSurplusPercent:CMS 大堆分裂剩余百分比。默认值为 1.0。
  20. CMSLoopWarn:是否警告 CMS 循环。默认值为 false。
  21. CMSMaxAbortablePrecleanLoops:CMS 最大可中止预清理循环次数。默认值为 0。
  22. CMSMaxAbortablePrecleanTime:CMS 最大可中止预清理时间。默认值为 5000。
  23. CMSOldPLABMax:CMS 旧的 PLAB 最大值。默认值为 1024。
  24. CMSOldPLABMin:CMS 旧的 PLAB 最小值。默认值为 16。
  25. CMSOldPLABNumRefills:CMS 旧的 PLAB 补充次数。默认值为 4。
  26. CMSOldPLABReactivityFactor:CMS 旧的 PLAB 反应因子。默认值为 2。
  27. CMSOldPLABResizeQuicker:CMS 旧的 PLAB 是否更快调整大小。默认值为 false。
  28. CMSOldPLABToleranceFactor:CMS 旧的 PLAB 容忍因子。默认值为 4。
  29. CMSPLABRecordAlways:是否始终记录 CMS PLAB。默认值为 true。
  30. CMSParallelInitialMarkEnabled:是否启用 CMS 并行初始标记。默认值为 true。
  31. CMSParallelRemarkEnabled:是否启用 CMS 并行重新标记。默认值为 true。
  32. CMSParallelSurvivorRemarkEnabled:是否启用 CMS 并行幸存者重新标记。默认值为 true。
  33. CMSPrecleanDenominator:CMS 预清理分母。默认值为 3。
  34. CMSPrecleanIter:CMS 预清理迭代次数。默认值为 3。
  35. CMSPrecleanNumerator:CMS 预清理分子。默认值为 2。
  36. CMSPrecleanRefLists1:是否进行 CMS 预清理引用列表 1。默认值为 true。
  37. CMSPrecleanRefLists2:是否进行 CMS 预清理引用列表 2。默认值为 false。
  38. CMSPrecleanSurvivors1:是否进行 CMS 预清理幸存者 1。默认值为 false。
  39. CMSPrecleanSurvivors2:是否进行 CMS 预清理幸存者 2。默认值为 true。
  40. CMSPrecleanThreshold:CMS 预清理阈值。默认值为 1000。
  41. CMSPrecleaningEnabled:是否启用 CMS 预清理。默认值为 true。
  42. CMSPrintChunksInDump:在转储时是否打印块。默认值为 false。
  43. CMSPrintObjectsInDump:在转储时是否打印对象。默认值为 false。
  44. CMSRemarkVerifyVariant:CMS 重新标记验证变体。默认值为 1。
  45. CMSReplenishIntermediate:是否中间补充 CMS。默认值为 true。
  46. CMSRescanMultiple:CMS 重新扫描倍数。默认值为 32。
  47. CMSSamplingGrain:CMS 采样粒度。默认值为 16384。
  48. CMSScavengeBeforeRemark:在重新标记之前是否进行清除。默认值为 false。
  49. CMSScheduleRemarkEdenPenetration:CMS 计划重新标记 Eden 穿透率。默认值为 50。
  50. CMSScheduleRemarkEdenSizeThreshold:CMS 计划重新标记 Eden 大小阈值。默认值为 2097152。
  51. CMSScheduleRemarkSamplingRatio:CMS 计划重新标记采样比率。默认值为 5。
  52. CMSSmallCoalSurplusPercent:CMS 小堆合并剩余百分比。默认值为 1.05。
  53. CMSSmallSplitSurplusPercent:CMS 小堆分裂剩余百分比。默认值为 1.1。
  54. CMSSplitIndexedFreeListBlocks:是否分割索引空闲列表块。默认值为 true。
  55. CMSTriggerInterval:CMS 触发间隔。默认值为 -1。
  56. CMSTriggerRatio:CMS 触发比率。默认值为 80。
  57. CMSWaitDuration:CMS 等待持续时间。默认值为 2000。
  58. CMSWorkQueueDrainThreshold:CMS 工作队列排水阈值。默认值为 10。
  59. CMSYield:是否进行 CMS 让步。默认值为 true。
  60. CMSYieldSleepCount:CMS 让步休眠计数。默认值为 0。
  61. CMSYoungGenPerWorker:每个工作线程的 CMS 年轻代大小。默认值为 67108864。
  62. CMS_FLSPadding:CMS FLS 填充。默认值为 1。
  63. CMS_FLSWeight:CMS FLS 权重。默认值为 75。
  64. CMS_SweepPadding:CMS 清扫填充。默认值为 1。
  65. CMS_SweepTimerThresholdMillis:CMS 清扫定时器阈值毫秒数。默认值为 10。
  66. CMS_SweepWeight:CMS 清扫权重。默认值为 75。

这些参数主要用于控制 CMS 垃圾回收器的行为,包括预清理、标记、清扫等阶段的工作方式和阈值,以及类卸载、内存管理等方面的设置。

二、内存管理相关参数

  1. ActiveProcessorCount:活动处理器数量。默认值为 -1。
  2. AdaptiveSizeDecrementScaleFactor:自适应大小递减比例因子。默认值为 4。
  3. AdaptiveSizeMajorGCDecayTimeScale:自适应大小主要垃圾回收衰减时间比例。默认值为 10。
  4. AdaptiveSizePolicyCollectionCostMargin:自适应大小策略收集成本边际。默认值为 50。
  5. AdaptiveSizePolicyInitializingSteps:自适应大小策略初始化步骤。默认值为 20。
  6. AdaptiveSizePolicyOutputInterval:自适应大小策略输出间隔。默认值为 0。
  7. AdaptiveSizePolicyWeight:自适应大小策略权重。默认值为 10。
  8. AdaptiveSizeThroughPutPolicy:自适应大小吞吐量策略。默认值为 0。
  9. AdaptiveTimeWeight:自适应时间权重。默认值为 25。
  10. AggressiveHeap:是否激进堆。默认值为 false。
  11. AggressiveOpts:是否激进优化。默认值为 false。
  12. AliasLevel:别名级别。默认值为 3(C2 产品)。
  13. AlignVector:是否对齐向量。默认值为 true(C2 产品)。
  14. AllocateHeapAt:分配堆的位置。默认值为空。
  15. AllocateInstancePrefetchLines:分配实例预取行数。默认值为 1。
  16. AllocatePrefetchDistance:分配预取距离。默认值为 256。
  17. AllocatePrefetchInstr:分配预取指令。默认值为 0。
  18. AllocatePrefetchLines:分配预取行数。默认值为 3。
  19. AllocatePrefetchStepSize:分配预取步长。默认值为 64。
  20. AllocatePrefetchStyle:分配预取样式。默认值为 1。
  21. AllowJNIEnvProxy:是否允许 JNI 环境代理。默认值为 false。
  22. AllowNonVirtualCalls:是否允许非虚调用。默认值为 false。
  23. AllowParallelDefineClass:是否允许并行定义类。默认值为 false。
  24. AllowUserSignalHandlers:是否允许用户信号处理程序。默认值为 false。
  25. AllowVectorizeOnDemand:是否允许按需向量化。默认值为 true(C2 产品)。
  26. AlwaysActAsServerClassMachine:是否始终作为服务器类机器。默认值为 false。
  27. AlwaysCompileLoopMethods:是否始终编译循环方法。默认值为 false。
  28. AlwaysLockClassLoader:是否始终锁定类加载器。默认值为 false。
  29. AlwaysPreTouch:是否始终预触摸。默认值为 false。
  30. AlwaysRestoreFPU:是否始终恢复 FPU。默认值为 false。
  31. AlwaysTenure:是否始终保留。默认值为 false。
  32. ArrayCopyLoadStoreMaxElem:数组复制加载存储最大元素数。默认值为 8(C2 产品)。
  33. AssertOnSuspendWaitFailure:在挂起等待失败时是否断言。默认值为 false。
  34. AssumeMP:是否假设 MP。默认值为 true。
  35. AutoBoxCacheMax:自动装箱缓存最大值。默认值为 128(C2 产品)。
  36. BCEATraceLevel:BCEA 跟踪级别。默认值为 0。
  37. BackgroundCompilation:是否后台编译。默认值为 true(pd 产品)。
  38. BaseFootPrintEstimate:基本足迹估计。默认值为 268435456。
  39. BiasedLockingBulkRebiasThreshold:偏向锁批量重新偏向阈值。默认值为 20。
  40. BiasedLockingBulkRevokeThreshold:偏向锁批量撤销阈值。默认值为 40。
  41. BiasedLockingDecayTime:偏向锁衰减时间。默认值为 25000。
  42. BiasedLockingStartupDelay:偏向锁启动延迟。默认值为 0。
  43. BindGCTaskThreadsToCPUs:是否将垃圾回收任务线程绑定到 CPU。默认值为 false。
  44. BlockLayoutByFrequency:是否按频率布局块。默认值为 true(C2 产品)。
  45. BlockLayoutMinDiamondPercentage:块布局最小菱形百分比。默认值为 20(C2 产品)。
  46. BlockLayoutRotateLoops:是否旋转块布局循环。默认值为 true(C2 产品)。
  47. BranchOnRegister:是否在寄存器上分支。默认值为 false(C2 产品)。
  48. BytecodeVerificationLocal:本地字节码验证。默认值为 false(命令行)。
  49. BytecodeVerificationRemote:远程字节码验证。默认值为 false。
  50. C1OptimizeVirtualCallProfiling:C1 是否优化虚调用分析。默认值为 true(C1 产品)。
  51. C1ProfileBranches:C1 是否分析分支。默认值为 true(C1 产品)。
  52. C1ProfileCalls:C1 是否分析调用。默认值为 true(C1 产品)。
  53. C1ProfileCheckcasts:C1 是否分析类型检查转换。默认值为 true(C1 产品)。
  54. C1ProfileInlinedCalls:C1 是否分析内联调用。默认值为 true(C1 产品)。
  55. C1ProfileVirtualCalls:C1 是否分析虚调用。默认值为 true(C1 产品)。
  56. C1UpdateMethodData:C1 是否更新方法数据。默认值为 true(C1 产品)。
  57. CICompilerCount:CI 编译器数量。默认值为 3。
  58. CICompilerCountPerCPU:是否每个 CPU 一个 CI 编译器。默认值为 true。
  59. CITime:是否 CITime。默认值为 false。
  60. CMSAbortSemantics:CMS 中止语义。默认值为 false。
  61. CodeCacheExpansionSize:代码缓存扩展大小。默认值为 65536(pd 产品)。
  62. CompactFields:是否压缩字段。默认值为 true。
  63. CompactStrings:是否压缩字符串。默认值为 true(pd 产品)。
  64. CompilationPolicyChoice:编译策略选择。默认值为 2。
  65. CompileCommand:编译命令。默认值为空。
  66. CompileCommandFile:编译命令文件。默认值为空。
  67. CompileOnly:仅编译。默认值为空。
  68. CompileThreshold:编译阈值。默认值为 10000(pd 产品)。
  69. CompileThresholdScaling:编译阈值缩放。默认值为 1.0。
  70. CompilerThreadHintNoPreempt:编译器线程提示不抢占。默认值为 false。
  71. CompilerThreadPriority:编译器线程优先级。默认值为 -1。
  72. CompilerThreadStackSize:编译器线程堆栈大小。默认值为 0(pd 产品)。
  73. CompressedClassSpaceSize:压缩类空间大小。默认值为 1073741824。
  74. ConcGCThreads:并发垃圾回收线程数。默认值为 2。
  75. ConditionalMoveLimit:条件移动限制。默认值为 3(C2 pd 产品)。
  76. ContendedPaddingWidth:竞争填充宽度。默认值为 128。
  77. CrashOnOutOfMemoryError:在内存不足错误时是否崩溃。默认值为 false。
  78. CreateCoredumpOnCrash:在崩溃时是否创建核心转储。默认值为 true。
  79. CriticalJNINatives:是否关键 JNI 本地方法。默认值为 true。
  80. DTraceAllocProbes:是否 DTrace 分配探针。默认值为 false。
  81. DTraceMethodProbes:是否 DTrace 方法探针。默认值为 false。
  82. DTraceMonitorProbes:是否 DTrace 监视器探针。默认值为 false。
  83. Debugging:是否调试。默认值为 false。
  84. DeoptimizeRandom:是否随机去优化。默认值为 false。
  85. DisableAttachMechanism:是否禁用附加机制。默认值为 false。
  86. DisableExplicitGC:是否禁用显式垃圾回收。默认值为 false。
  87. DisplayVMOutputToStderr:是否将 VM 输出显示到标准错误。默认值为 false。
  88. DisplayVMOutputToStdout:是否将 VM 输出显示到标准输出。默认值为 false。
    8

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部