您的位置:首页 > 编程语言 > Java开发

JVM系列:jinfo命令详解

2018-06-22 10:59 585 查看

jinfo全称Java Configuration Info,主要作用是实时查看和调整JVM配置参数。

一.查看JVM参数

用法:jinfo -flag <name> PID

示例:

# jinfo -flag MaxMetaspaceSize 11180

# -XX:MaxMetaspaceSize=536870912

表示 MaxMetaspaceSize的大小为512M

注意:如果没有配置,就会显示一个超大的数字:

# -XX:MaxMetaspaceSize=18446744073709547520

# jinfo -flag ThreadStackSize 8752

# -XX:ThreadStackSize=256

表示Xss(线程堆栈大小)为256K

注意:如果没有配置,显示数量为0:

# -XX:ThreadStackSize=0

二.调整JVM参数

(1)布尔类型的JVM参数

用法:jinfo -flag [+|-]<name> PID

生效或者失效指定名字的参数

(2)数字/字符串类型的JVM参数

用法:jinfo -flag <name>=<value> PID

使用给定的值,设置参数的值

注意:如果出现,

Exception in thread "main" java.io.IOException: Command failed in target VM
at sun.tools.attach.WindowsVirtualMachine.execute(WindowsVirtualMachine.java:112)
at sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:217)
at sun.tools.attach.HotSpotVirtualMachine.setFlag(HotSpotVirtualMachine.java:190)
at sun.tools.jinfo.JInfo.flag(JInfo.java:123)
at sun.tools.jinfo.JInfo.main(JInfo.java:76)

则表示,对这个flag参数不支持。

三.查看支持动态修改的JVM参数

官方文档中这样描述:标记为manageable的参数通过JConsole或者通过HotSpotDiagnosticMXBean这个类的接口查看。

(1)通过JConsole查看标记为manageable的Flags

Linux下:java -XX:+PrintFlagsInitial | grep manageable



Windows下:java -XX:+PrintFlagsInitial | findstr manageable



(2)通过HotSpotDiagnosticMXBean

Java官方的API文档中,接口HotSpotDiagnosticMXBean有一个getDiagnosticOptions()的方法,返回所有可动态修改的JVM参数。通过接口HotSpotDiagnosticMXBean的实现类 - HotSpotDiagnostic来调用这个方法。



使用Java代码调用查看:

HotSpotDiagnostic mxBean = new HotSpotDiagnostic();
List<VMOption> diagnosticVMOptions = mxBean.getDiagnosticOptions();
System.out.println("Writeable VM option: ");
for (VMOption vmOption:diagnosticVMOptions){
System.out.println("  "+vmOption.getName() + " = " + vmOption.getValue());
}

运行结果:

Writeable VM option:
HeapDumpBeforeFullGC = false
HeapDumpAfterFullGC = false
HeapDumpOnOutOfMemoryError = false
HeapDumpPath =
CMSAbortablePrecleanWaitMillis = 100
CMSWaitDuration = 2000
CMSTriggerInterval = -1
PrintGC = false
PrintGCDetails = false
PrintGCDateStamps = false
PrintGCTimeStamps = false
PrintGCID = false
PrintClassHistogramBeforeFullGC = false
PrintClassHistogramAfterFullGC = false
PrintClassHistogram = false
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
PrintConcurrentLocks = false
UnlockCommercialFeatures = false


参考资料:简书-阿飞Javaer jinfo命令详解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xx Java