【问题标题】:How to take thread-dump of a java process which runs for a less time如何获取运行时间较短的java进程的线程转储
【发布时间】:2023-03-24 14:28:01
【问题描述】:

如何获取运行时间非常短的 java 应用程序的线程转储。应用程序启动并给我时间来收集进程的 pid。

我正在使用以下内容进行线程转储。

kill -3 <pid>

我正在寻找一个合适的 Unix 命令。

问候, 尼洛特帕

【问题讨论】:

  • 我只能使用 JRE 提供的 kill -3 命令。没有其他实用程序或命令!
  • kill 不是 JRE 提供的命令。这是 JRE 响应的 UNIX 命令。
  • 如果应用程序运行时间很短,那么即使您成功进行线程转储,您也会在某个随机位置捕获它,并且转储可能没有意义。我认为这是XY Problem。请告诉我们您为什么要进行线程转储。
  • @JimGarrison :我的应用程序在运行几纳秒后停止,我没有发现错误日志。所以我想进行线程转储以找出问题所在?这是正确的方法吗?

标签: java unix thread-dump


【解决方案1】:
  1. 您需要是与 Java 进程相同的用户帐户。
  2. 运行jps -lv查找进程
  3. 运行jstack $pid

以上两个可执行文件在$JDK_HOME/bin目录下

最后,您可以尝试使用http://fastthread.io/ 来分析输出

【讨论】:

  • 我的系统中没有安装jdk,只有JRE。所以不能使用 jps 或 jstack !!可能是我唯一可以使用的 kill -3!
猜你喜欢
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 1970-01-01
  • 2010-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多