java -XX:-UseAdaptiveSizePolicy 无效
java -XX:-UseAdaptiveSizePolicy is not effective
我想通过jinfo修改最大堆大小。
jinfo -flag MaxHeapSize=3122032640 <pid>
由于AdaptiveSizePolicy
默认开启,直接修改flags会出现异常。所以我在进程启动时禁用了 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
没有效果
有谁知道原因吗?
I know the -Xmx
flag to set the maximum heap size.
JDK: openjdk 13.0.1
OS: Ubuntu 18.04
VM 标志:
-XX:CICompilerCount=3 -XX:ConcGCThreads=1 -XX:G1ConcRefinementThreads=4 -XX:G1HeapRegionSize=1048576 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=134217728 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=536-8709912 :MaxNewSize=321912832 -XX:MinHeapDeltaBytes=1048576 -XX:MinHeapSize=134217728 -XX:NonNMethodCodeHeapSize=5830732 -XX:NonProfiledCodeHeapSize=122913754 -XX:ProfiledCodeHeapSize=122913754 -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:SoftMaxHeapSize= 536870912 -XX:-UseAdaptiveSizePolicy -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseG1GC
I want to modify the maximum heap size through jinfo.
这是不可能的。 MaxHeapSize
不是可管理的标志,无法在运行时更改。
-XX:UseAdaptiveSizePolicy
标志是完全不同的东西。如果配置 GC 是否可以根据 GC 统计信息调整堆代的大小,以实现 pause/throughput/footprint 目标。
我想通过jinfo修改最大堆大小。
jinfo -flag MaxHeapSize=3122032640 <pid>
由于AdaptiveSizePolicy
默认开启,直接修改flags会出现异常。所以我在进程启动时禁用了 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
没有效果
有谁知道原因吗?
I know the
-Xmx
flag to set the maximum heap size.
JDK: openjdk 13.0.1
OS: Ubuntu 18.04
VM 标志:
-XX:CICompilerCount=3 -XX:ConcGCThreads=1 -XX:G1ConcRefinementThreads=4 -XX:G1HeapRegionSize=1048576 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=134217728 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=536-8709912 :MaxNewSize=321912832 -XX:MinHeapDeltaBytes=1048576 -XX:MinHeapSize=134217728 -XX:NonNMethodCodeHeapSize=5830732 -XX:NonProfiledCodeHeapSize=122913754 -XX:ProfiledCodeHeapSize=122913754 -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:SoftMaxHeapSize= 536870912 -XX:-UseAdaptiveSizePolicy -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseG1GC
I want to modify the maximum heap size through jinfo.
这是不可能的。 MaxHeapSize
不是可管理的标志,无法在运行时更改。
-XX:UseAdaptiveSizePolicy
标志是完全不同的东西。如果配置 GC 是否可以根据 GC 统计信息调整堆代的大小,以实现 pause/throughput/footprint 目标。