java -XX: -UseAdaptiveSizePolicy не действует - PullRequest
0 голосов
/ 15 января 2020

Я хочу изменить максимальный размер кучи через jinfo .

jinfo -flag MaxHeapSize=3122032640 <pid>

Поскольку AdaptiveSizePolicy включен по умолчанию, изменение флагов напрямую приведет к исключению. Поэтому я отключил AdaptiveSizePolicy при запуске процесса.

java -XX:-UseAdaptiveSizePolicy Sleep.java

Я также могу получить правильный результат через jinfo

jinfo -flag UseAdaptiveSizePolicy 18220

-XX:-UseAdaptiveSizePolicy

Но когда я снова изменяю максимальную память кучи через jinfo, исключения будут

jinfo -flag MaxHeapSize=3122032640 18220

Exception in thread "main" com.sun.tools.attach.AttachOperationFailedException: flag 'MaxHeapSize' cannot be changed
    at jdk.attach/sun.tools.attach.VirtualMachineImpl.execute(VirtualMachineImpl.java:224)
    at jdk.attach/sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:309)
    at jdk.attach/sun.tools.attach.HotSpotVirtualMachine.setFlag(HotSpotVirtualMachine.java:282)
    at jdk.jcmd/sun.tools.jinfo.JInfo.flag(JInfo.java:146)
    at jdk.jcmd/sun.tools.jinfo.JInfo.main(JInfo.java:127)

Кажется, что -XX:-UseAdaptiveSizePolicy неэффективен.

Кто-нибудь знает причину?

Я знаю флаг -Xmx установить максимальный размер кучи.

JDK: openjdk 13.0.1

ОС: Ubuntu 18.04

Флаги VM:
-XX: CICompilerCount = 3 -XX: ConcGCThreads = 1 -XX: G1ConcRefinementThreads = 4 -XX: G1HeapRegionSize = 1048576 -XX: GCDrainStackTargetSize = 64 -XX: InitialHeapSize = 134217728 -XX: MarkStackSize = 41943036XX2XX2XX2XX2SX2: 5XX2XXXXXXXXXXXXX: : MinHeapDeltaBytes = 1048576 -XX: MinHeapSize = 134217728 -XX: NonNMethodCodeHeapSize = 5830732 -XX: NonProfiledCodeHeapSize = 122913754 -XX: профилированный кодHeapSize = 1229640 -XXXXX5XXXXXXXXXXXXXXXXXXXXXXX5XXXX5XXXX5XX8XX8XX8XX8SX: 8S: 16XXXXXXXX5 -UseAdaptiveSizePolicy -XX: + UseCompressedClassPointers -XX: + UseCompressedOops -XX: + UseFastUnorderedTimeStamps -XX: + UseG1G C

1 Ответ

1 голос
/ 15 января 2020

Я хочу изменить максимальный размер кучи через jinfo.

Это невозможно. MaxHeapSize не управляемый флаг, его нельзя изменить во время выполнения.

-XX:UseAdaptiveSizePolicy флаг - это совсем другое. If определяет, может ли G C изменять размер поколений кучи на основе статистики G C, для достижения целей паузы / пропускной способности / занимаемой площади.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...