java - 如何解释 pstack 日志?

标签 java linux multithreading

我们有一个今天卡住的生产 java 进程。我们进行了一些系统检查,如磁盘空间检查、内存争用等。我们猜测进程陷入了死锁,因此在我们反弹进程之前,我们在 pid 上运行了 pstack 命令。我无法从输出中解释太多。我如何阅读这些日志?我用谷歌搜索了 pstack 和相关帮助,但找不到太多信息..

这是堆栈跟踪的顶部。看起来我们正在等待一个条件?从 JNI 线程调用 DestroyVM 是否危险?

Thread 87 (Thread 0x406a3940 (LWP 18762)):

#0  0x000000325d60a899 in pthread_cond_wait@@GLIBC_2.3.2 ()  
#1  0x00002b6f8fd9177e in os::PlatformEvent::park ()  
#2  0x00002b6f8fd67595 in Monitor::IWait ()  
#3  0x00002b6f8fd67bfd in Monitor::wait ()  
#4  0x00002b6f8fea0295 in Threads::destroy_vm ()  
#5  0x00002b6f8fba6eab in jni_DestroyJavaVM ()  
#6  0x000000004000223f in JavaMain ()  
#7  0x000000325d606367 in start_thread () from /lib64/libpthread.so.0  
#8  0x000000325cad30ad in clone () from /lib64/libc.so.6  

非常感谢任何指点/帮助。谢谢!

最佳答案

您在此处看到的堆栈来自 jvm 本身,而不是您的 java 进程。 不要忘记Java的JVM是一种虚拟化器,你程序的字节码指令由JVM解释和执行,这只不过是一个C(肯定是C++)程序。

所以我想您可以从这个堆栈中提取的信息不多,您应该将 java 调试器 (jdb ?) 连接到您的 JVM,如果允许的话,以获得有意义的回溯.

关于java - 如何解释 pstack 日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6132559/

相关文章:

windows - 为什么在 windows 或 linux 下对同一个文件使用不同的 SHA-1?

c - 这个带线程的程序是如何工作的?

Python 记录器消息显示在单独的行上

java - 从一个java类调用另一个类的方法时出现问题

java - 我将如何在 Spring 数据存储库中编写 SELECT TOP 25 sql 查询

c - Xlinker 输入参数在 Linux 中不起作用

java - Scala - IntelliJ IDEA 错误 : Could not find or load main class

java - DateFormat 如何解析 java 中的确切日期(如 .NET 中的 DateTime.ParseExact)?

java - 如何在 Android Q(API 级别 29)中列出所有内部存储文件夹?

c# - 在 ASP.NET 中并行执行 .NET HttpWebRequests 的建议