java - 如何在java程序中设置JVM参数值

标签 java jvm jvm-hotspot jvm-arguments

我有一长串 JVM 参数值:

-XX:+UseSerialGC -XX:+ResizePLAB -XX:-ResizeOldPLAB -XX:-AlwaysPreTouch -XX:-ParallelRefProcEnabled -XX:+ParallelRefProcBalancingEnabled -XX:+UseTLAB -XX:-ResizeTLAB -XX:-ZeroTLAB -XX:-FastTLABRefill -XX:+NeverActAsServerClassMachine -XX:-AlwaysActAsServerClassMachine -XX:+UseAutoGCSelectPolicy -XX:+UseAdaptiveSizePolicy -XX:+UsePSAdaptiveSurvivorSizePolicy -XX:-UseAdaptiveGenerationSizePolicyAtMinorCollection -XX:+UseAdaptiveGenerationSizePolicyAtMajorCollection -XX:+UseAdaptiveSizePolicyWithSystemGC -XX:+UseAdaptiveGCBoundary -XX:+UseAdaptiveSizePolicyFootprintGoal -XX:-UseAdaptiveSizeDecayMajorGCCost -XX:+UseGCOverheadLimit -XX:+DisableExplicitGC -XX:-CollectGen0First -XX:+BindGCTaskThreadsToCPUs -XX:+UseGCTaskAffinity -XX:YoungPLABSize=3397 -XX:OldPLABSize=1123 -XX:GCTaskTimeStampEntries=240 -XX:TargetPLABWastePct=6 -XX:PLABWeight=75 -XX:OldPLABWeight=46 -XX:MarkStackSize=4617021 -XX:MarkStackSizeMax=713160576 -XX:RefDiscoveryPolicy=0 -XX:InitiatingHeapOccupancyPercent=48 -XX:MaxRAM=139765086242 -XX:ErgoHeapSizeLimit=0 -XX:MaxRAMFraction=4 -XX:DefaultMaxRAMFraction=4 -XX:MinRAMFraction=2 -XX:InitialRAMFraction=61 -XX:AutoGCSelectPauseMillis=5557 -XX:AdaptiveSizeThroughPutPolicy=0 -XX:AdaptiveSizePausePolicy=0 -XX:AdaptiveSizePolicyInitializingSteps=28 -XX:AdaptiveSizePolicyOutputInterval=0 -XX:AdaptiveSizePolicyWeight=12 -XX:AdaptiveTimeWeight=19 -XX:PausePadding=0 -XX:PromotedPadding=3 -XX:SurvivorPadding=3 -XX:ThresholdTolerance=10 -XX:AdaptiveSizePolicyCollectionCostMargin=49 -XX:YoungGenerationSizeIncrement=16 -XX:YoungGenerationSizeSupplement=104 -XX:YoungGenerationSizeSupplementDecay=9 -XX:TenuredGenerationSizeIncrement=22 -XX:TenuredGenerationSizeSupplement=117 -XX:TenuredGenerationSizeSupplementDecay=2 -XX:MaxGCPauseMillis=13557897735059052544 -XX:GCPauseIntervalMillis=0 -XX:MaxGCMinorPauseMillis=16119267456708329472 -XX:GCTimeRatio=73 -XX:AdaptiveSizeDecrementScaleFactor=4 -XX:AdaptiveSizeMajorGCDecayTimeScale=11 -XX:MinSurvivorRatio=1 -XX:InitialSurvivorRatio=6 -XX:BaseFootPrintEstimate=272901592 -XX:GCHeapFreeLimit=2 -XX:PrefetchCopyIntervalInBytes=654 -XX:PrefetchScanIntervalInBytes=748 -XX:PrefetchFieldsAhead=1 -XX:ProcessDistributionStride=3

我需要在运行程序之前进行更改。这些参数的值将动态确定,因此我需要能够重复更改这些值。该程序在docker容器内执行,是使用springboot开发的REST端点。
是否有某种配置文件可以动态设置这些参数,或者如何做到这一点?

最佳答案

Is there some kind of configuration file where I can dynamically set these parameters

没有。

or how can this be done?

您只需编写一些代码即可完成此操作。可能是 shell 脚本或 Windows 批处理文件。可能使用其他脚本语言。甚至可能在 Java 中。

例如,它使用辅助 Java 程序来执行“动态”操作并生成一些 JVM 选项。然后在为实际应用程序启动 JVM 时提供这些。

#!/bin/sh
OPTS=`java com.acme.GenerateJVMOptions some parameters`
java $OPTS com.acme.TheRealApplication some more parameters

关于java - 如何在java程序中设置JVM参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60043565/

相关文章:

java - 是否有针对不同系统的不同版本的 JVM?

java - 设置非标准 java vm 选项 -Xms 不带 -X

java - JDK 8 中的高级代码热交换?

java - 尝试计算在总 (14) 餐中吃鱼/鸡/肉的百分比并显示出来。它用全 0 填充数组

java - 编写指向其实现者的通用接口(interface)的便捷方法

java - 向 java.lang.Object 添加一个字段

java - 在 win8.1 上增加 JVM 内存和 neo4j

java - 是否可以在 java jit 上删除带有 final boolean 值的跳转?

java - 如何从 Android 应用程序的音乐库中排除声音 fragment

java - Spring Boot Controller 内容协商