如何在不安装JDK的情况下监视JVM

Kun*_*nal 5 monitoring jvm

我想监视生产环境中的JVM性能.我只安装了JRE,而不是JDK,因此我不能使用jstat,jconsole等来监控JVM性能.

有人可以帮助理解我如何在这种情况下监控JVM性能?

有没有办法实现这个目标?

(请注意,我不想通过JMX或其他方式远程监控它.我想在每台机器上安装本地代理,它将以1分钟的间隔将指标发送到服务器.)

谢谢,KS

Ark*_*tos 0

如果你有足够的耐心和时间来写,你或许可以看看JVMTI。您可以用 C/C++ 编写代码并沿着 Java 进程运行它,并且可以收集有关 JVM 的信息而不影响它。

另一种简单而幼稚的方法是使用用 java 编写的 javaagent 来启动 VM,但 JVMTI 甚至比这更好。javaagent 和 JVMTI 应用程序之间最关键的区别源自加载机制。当代理加载到堆内时,它们由同一个 JVM 管理。而 JVMTI 代理不受 JVM 规则的约束,因此不受 JVM 内部机制(例如 GC 或运行时错误处理)的影响。

如果您使用 JDK7 或更高版本,您甚至可以尝试 Java Mission Control :)