我的 jmx 监控出现了问题。我们使用 jmx 监控某些 jvm 的 perm gen。但有时 mbean 的名称会从“PS Perm Gen”更改为“Perm Gen”或反之亦然。这种情况会在 tomcat 服务器重启时发生,但并非每次重启都会发生。
jvm版本是1.5.0_16。
有谁遇到过这个问题并且有解决方案吗?
答案1
您大概使用了不同的垃圾收集器。内存区域的名称PermGen
根据所选的垃圾收集器而不同:
-XX:+UseParallelGC
: PS 永久生成-XX:+UseConcMarkSweepGC
: CMS PermGen-XX:+UseSerialGC
: 永久代
看起来 Tomcat 是使用串行(stop-the-world)收集器或并行收集器启动的。
验证启动脚本或环境设置中是否存在不一致。
更新:垃圾收集器和内存设置受JVM 人体工程学,这意味着它们会在启动时根据运行 JVM 的计算机的特性自动选择。我现在找不到任何参考资料,但我记得它们是基于 CPU 架构和可用内存总量的。
我建议你在启动脚本中指定一个垃圾收集器。根据你的应用程序,随机选择一个垃圾收集器可能不太好。