【问题标题】:Install4j: Is is possible to configure an install4j launcher to respond to kill -3 and generate a thread dump?Install4j:是否可以配置 install4j 启动器以响应 kill -3 并生成线程转储?
【发布时间】:2016-04-26 14:34:01
【问题描述】:

我想在我编写的日志收集脚本中自动创建一个线程转储。

我知道可以使用 jstack 或 kill -3 生成线程转储。运行日志收集脚本的客户只会安装 JRE,因此 jstack 不是一个选项。

如果我使用 jstack 和 install4j 启动器创建的 JVM 的 pid,我会得到线程转储......但是使用相同的 pid 调用 kill -3 不会产生任何输出。我目前正在使用 install4j 启动器配置将 stderror 和 stdout 指向文件。

这是一个配置了服务选项的 linux 启动器。

FWIW...我尝试不引导输出并将我的应用程序作为控制台程序而不是服务运行,但这些都不允许“kill -3”工作。

我正在使用 install4j 6.0

最后,我不想使用 -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=dump.log,因为它可能会产生未知的开销。

任何帮助将不胜感激!

【问题讨论】:

    标签: java install4j


    【解决方案1】:

    我建议使用ThreadMXBean 在同一进程中以编程方式获取此信息,而不是使用来自另一个进程的信号处理程序。 API 文档位于

    http://docs.oracle.com/javase/8/docs/api/java/lang/management/ThreadMXBean.html

    Here's a full example 了解如何使用这个 MBean。

    通过这种方式,您可以将信息显式写入任何您想要的位置。

    【讨论】:

    • 您发布的示例与信号处理程序相结合解决了我的问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    相关资源
    最近更新 更多