3

我想从我的 windows 机器上找到在 windows 上运行的远程 JVM (JDK 8)的非堆内存 代码缓存详细信息。我可以使用jconsole获取详细信息。但是,我需要的是使用jstat命令获取值。GUI 监控工具不符合我的目的。谢谢

4

2 回答 2

1

代码缓存被解释器、编译的、运行时存根代码填满。

codecache 的关键用户是编译后的代码。您可以使用 jstat 获取编译后的代码统计信息。这将提供有关代码缓存使用的体面信息。

于 2014-12-11T09:07:02.297 回答
0

使用 java 进程的 jstat arg 和 pid,例如 pid 616

jstat - 编译器 616

编译失败无效时间FailedType FailedMethod

7979      5       0   121.28          1 weblogic/xml/babel/baseparser/BaseParser parseSome

jstat -printcompilation 616

编译大小类型方法

7979    331    1 weblogic/servlet/internal/CompleteMessageTimeoutTrigger timerExpired

jconsole 内存选项卡并在下拉菜单中选择代码缓存显示当前代码缓存大小

要获取 JVM 默认值(在 windows 上查找或在 unix 上查找 grep):

java -XX:+PrintFlagsFinal | 找到“代码缓存”

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}
于 2019-10-25T14:09:05.120 回答