繁体   English   中英

我们可以在堆转储文件中找到哪个线程持有锁吗

[英]can we find which thread is holding a lock in a heap dump file

就像 jstack 命令有 -l 选项一样,它包含锁定信息。

    Usage:
    jstack [-l] <pid>
        (to connect to running process)
    jstack -F [-m] [-l] <pid>
        (to connect to a hung process)
    jstack [-m] [-l] <executable> <core>
        (to connect to a core file)
    jstack [-m] [-l] [server_id@]<remote server IP or hostname>
        (to connect to a remote debug server)

Options:
    -F  to force a thread dump. Use when jstack <pid> does not respond (process is hung)
    -m  to print both java and native frames (mixed mode)
    -l  long listing. Prints additional information about locks
    -h or -help to print this help message

我想知道 java 是否将锁信息存储在堆中? 如果答案是肯定的,我们可以通过查看堆转储文件来检查线程锁吗? 我正在使用 eclipse 内存分析器,但不知道该怎么做。

不知道堆中是否有锁信息。 但是您可以使用 mat 内存分析器获取堆中所有线程相关的信息。 您可以使用像下面这样的 OQL 查询来查询特定的线程对象,然后分析线程对象的详细信息。

SELECT s FROM java.lang.Thread s WHERE toString(s.name)="pool-thread-1"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM