我想从我的窗口机器上查找在Windows上运行的远程JVM(JDK 8)的非堆内存代码缓存详细信息。我可以使用jconsole获取详细信息。但是,我需要的是使用 jstat 命令获取值。GUI 监控工具不符合我的目的。谢谢
使用 jstat arg 和 java 进程的 pid,例如 pid 616
JSTAT -编译器 616
编译失败 无效时间 失败类型 失败方法
7979 5 0 121.28 1 weblogic/xml/babel/baseparser/BaseParser parseSome
JSTAT -打印编译 616
编译大小类型方法
7979 331 1 weblogic/servlet/internal/CompleteMessageTimeoutTrigger timerExpired
jconsole 内存选项卡,然后选择代码缓存下拉列表中显示当前代码缓存大小
要获取 JVM 默认值(在 Windows 上查找或在 unix 上的 grep 上查找):
java -XX:+PrintFlagsFinal | find "CodeCache"
uintx CodeCacheExpansionSize = 65536 {pd product}
uintx CodeCacheMinimumFreeSpace = 512000 {product}
uintx InitialCodeCacheSize = 2555904 {pd product}
bool PrintCodeCache = false {product}
bool PrintCodeCacheOnCompilation = false {product}
uintx ReservedCodeCacheSize = 251658240 {pd product}
bool UseCodeCacheFlushing = true {product}
代码缓存被解释器、编译的运行时存根代码填满。
代码缓存的关键用户是编译代码。您可以使用 JSTAT 获取编译的代码统计信息。这将提供有关代码缓存使用的体面信息。