【问题标题】:Collecting jvm details like deadlock before shut-down of server在关闭服务器之前收集 jvm 详细信息,例如死锁
【发布时间】:2014-01-29 11:29:54
【问题描述】:

我正在尝试这样的事情。我有一个应用程序服务器我想知道有没有办法在正常关闭之前收集 jvm 详细信息,如线程死锁。我可以使用 ShutDownHook 但在关闭钩子中如何收集 jvm 详细信息,如死锁等。

谢谢

【问题讨论】:

  • 但是死锁不是一条信息,它是一种运行时状态。您可以获得的信息是线程转储,您可能会从中推断出存在死锁。
  • @Gimby ThreadMXBean#findDeadlockedThreads 可以检测到死锁。
  • 魔术。我的立场是正确的。
  • 我正在尝试不使用任何工具以编程方式进行操作!可能是 assylias 正在给出指针

标签: java jvm


【解决方案1】:

是否需要从java内部执行?外部可以使用 jstack。

【讨论】:

    【解决方案2】:

    jstack 依赖于平台,并非在所有平台上都可用。因此 jstack 可能并非在所有情况下都有用。

    无法从 JVM 中创建完整的 JVM 线程转储。您可以在 JVM DLL 上调用 JVM_dumpAllStacks 函数来创建线程转储。这取决于您是否可以接受该路线,因为它涉及 JNI 和一些本机编码。查看Open JDK Bug list 以获取更多信息并了解从Java 管理API 获取此功能的努力。其他 JVM 将来也可能遵循这条路线。在这种情况下,您将能够通过管理 API 调用 JVM 线程转储。

    此时,您可能拥有的唯一选择(当您不想采用 JNI 路线时)是使用像这样的旧方法创建线程转储:Creating a Thread Dump

    【讨论】:

      猜你喜欢
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多