gpt4 book ai didi

java - 如何编写可分析的线程转储格式

转载 作者:搜寻专家 更新时间:2023-11-01 02:55:27 24 4
gpt4 key购买 nike

我正在创建一个全局异常处理,它在某些情况下会在关闭之前收集一些信息。其中一项信息是当前线程转储。我使用以下代码执行此操作:

ManagementFactory.getThreadMXBean().dumpAllThreads(true, true);

问题是将信息写入 TDA 可分析的格式。有没有一种“简单”的方法来格式化信息而不是自己编写格式?

编辑:我想要一个完整的线程转储,这样我就可以找到有问题的线程。上面提到的方法提供了一组 ThreadInfo 对象,所以我有数据。我的问题是书面输出不是 TDA 识别为线程转储的格式。

最佳答案

如果您不想复制 TDA 代码(毕竟它是 LGPL),您还可以使用 Attach API 以标准格式获取数据。据我所知,执行转储的唯一 JVM 内置代码是 Attach 代理中的 native 代码。

String selfName = ManagementFactory.getRuntimeMXBean().getName();
final int selfPid = Integer.valueOf(selfName.substring(0, selfName.indexOf('@')));

HotSpotVirtualMachine vm = (HotSpotVirtualMachine) VirtualMachine.attach(Integer.toString(selfPid));

InputStream sDump = vm.remoteDataDump(new Object[]{"-l"}); // lowercase L for lock dump

数据转储将以字符数据流的形式返回转储。

关于java - 如何编写可分析的线程转储格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2453047/

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