好的--我知道我可以像这样运行我的java进程:
java -XX:+PrintCompilation <FooProgram>我可以看到类似这样的输出:
c:\>java -XX:+PrintCompilation -jar c:\FooProgram.jar
1 java.lang.String::charAt (33 bytes)
2 java.lang.Math::max (11 bytes)
1% java.util.jar.JarFile::hasClassPathAttribute @ 78 (197 bytes)
3 java.lang.String::hashCode (60 bytes)
4 java.lang.String::indexOf (151 bytes)
5 java.util.Properties$LineReader::readLine (452 bytes)
6 java.lang.Object::<init> (1 bytes)
7 java.lang.String::indexOf (166 bytes)
8 java.lang.String::equals (88 bytes)让我知道哪些方法被编译,未编译,被标记为僵尸,等等。有没有办法监控这些方法被编译到的代码缓存的使用情况?当编译器代码缓存已满时,我会看到这样一条消息:“我已满,不再为您编译了……”,但似乎这是一个滞后的指示,表明我们有问题。我知道如何打印代码缓存的最大大小,我真正想要的是一种方法,看看它是如何随着时间的推移而填满的。
发布于 2010-03-04 06:52:09
JConsole会告诉你的。您还可以在应用程序服务器中安装Java-monitor,并在主机的“查看所有测量结果”页面中查看代码缓存。http://java-monitor.com
发布于 2014-10-14 16:57:14
老问题但是..。不管怎样我会回答的..。我已经构建了一个VisualVM插件,它将监控有关代码缓存的统计数据。它已经包含在开源版本的插件存储库中。或者,您可以从java.net下载它和源代码。
发布于 2016-06-07 15:16:30
从Java8开始,您可以使用-XX:+PrintCodeCache more details can be found in this paper
https://stackoverflow.com/questions/2368068
复制相似问题