【问题标题】:Monitoring all running and spawning JVMs [closed]监控所有正在运行和生成的 JVM [关闭]
【发布时间】:2013-01-01 23:03:27
【问题描述】:

我有一个 8Go 编译服务器,运行一个 Jenkins 实例,一个 Jenkins 从代理。所有作业都运行相同的脚本 sh。这个脚本启动其他脚本和一个大的 ant 构建。在此构建中,可以启动多个 JVM(带有 fork 的 javac、junitreports 等...)。

我需要跟踪 OutOfMemoryError。但是我无法使用工具监视生成的 Java 进程,因为它们是临时的。

我正在寻找一种工具来跟踪服务器上运行的所有当前和未来的 JVM,并显示内存图。存在吗?

【问题讨论】:

  • 我不明白为什么它被关闭了。不管怎样,JVisualVM 正是我正在寻找的。我不知道它默认是随 JDK 一起提供的。
  • 我也看不出这“没有建设性”。有人可能会争辩说这是一个超级用户问题,但又是关于 JVM 进程的问题。我投票支持重新开放。
  • code.google.com/p/jvmtop 也可能是一个选项

标签: java memory jvm jenkins out-of-memory


【解决方案1】:

好问题。我知道有几种工具可以监视/检查 JVM 实例,但据我所知,它们中的大多数都依赖于已经启动并运行的 JVM。

我想一个解决方案是让一个定期运行的脚本检查 JVM 实例(使用命令 jps),然后启动其他监控工具...

【讨论】:

  • JVisualVM 成功了,甚至远程。
【解决方案2】:

我从来没有听说过这样的工具。

但是你可以通过定期运行的 shell 脚本来做类似的事情

jps | grep -v -i 'jps'  | cut -d' ' -f 1 | xargs -n1 jmap -heap

【讨论】:

    【解决方案3】:

    我建议运行 JConsole。它是免费的,而且是一个非常容易分析的工具。您可以跟踪对象的寿命、应用程序的质量(通过检查 Eden Space 区域和其他区域)。您可以对您的 JVM 进行完整的内存使用分析。

    默认情况下,下载 JDK 时会获得 JConsole。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多