如何使用jstat获取非堆“代码缓存”的详细信息

时间:2014-12-11 08:10:10

标签: java windows java-8 jstat jvm-codecache

我想在Windows机器上的Windows上运行远程JVM(JDK 8)的非堆内存 代码缓存详细信息。我可以使用 jconsole 获取详细信息。但是,我需要的是使用 jstat 命令获取值。 GUI监控工具不能满足我的需求。感谢

2 个答案:

答案 0 :(得分:2)

代码缓存充满了解释器,已编译的运行时存根代码。

codecache的关键用户是编译代码。 你可以使用jstat获得编译的代码统计信息。这将提供有关代码缓存使用的正确信息。

答案 1 :(得分:0)

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

jstat -compiler 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 |找到“ 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}