gpt4 book ai didi

java - Install4j:是否可以配置一个 install4j 启动程序来响应 kill -3 并生成线程转储?

转载 作者:行者123 更新时间:2023-11-30 10:45:48 25 4
gpt4 key购买 nike

我想自动创建线程转储作为我编写的日志收集脚本的一部分。

我知道可以使用 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,因为它可能会产生未知的开销。

如有任何帮助,我们将不胜感激!

最佳答案

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

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

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

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

关于java - Install4j:是否可以配置一个 install4j 启动程序来响应 kill -3 并生成线程转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36851645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com