问题标签 [thread-dump]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 线程转储分析工具/方法
当 Java 应用程序挂起时,您甚至不知道导致此问题的用例并想要进行调查,我知道线程转储可能很有用。
但是我们如何才能轻松地从线程转储中获取有用的数据以找出问题所在呢?我一直在使用的服务器应用程序会产生非常长的线程转储,因为它是一个 EJB 架构,并且线程转储包含许多我不确定我应该查看的容器线程(即没有运行我的应用程序代码的线程,而是 JBoss 的代码)。
昨天我尝试了Thread Dump Analyzer工具。该工具绝对比在文本编辑器中查看原始线程转储更好,因为您可以过滤掉您不感兴趣的线程,查看线程列表,单击线程以查看其详细信息,比较线程转储以查找长时间运行的线程等
但仍有太多数据需要分析——将近 300 个线程。我不知道有什么标准可以用来过滤掉我不感兴趣的所有 JBoss 线程。我不确定我是否应该只查看当前处于“可运行”状态的线程,或者“等待条件”和“在 Object.wait 中”是否也很重要。
您通常遵循的方法和通常使用的工具是什么?
java - 在不使用 JStack 的情况下从冻结的 Java 应用程序中获取线程转储
当我尝试使用 JStack 获取冻结应用程序的线程转储时,其中一个线程给了我这个结果:
当然,这是我最感兴趣的一个:(
Ctrl+Break
也不行。还有其他方法可以获得线程转储吗?我正在使用 Linux 和 Sun VM 1.6.0_20。
java - 使用最近的 Sun JVM (1.6),是否可以获得 GC 线程信息?
使用 JRockit,您可以通过任何方式获取完整的线程列表,所有这些方式都包括有关垃圾收集线程的信息:
1)向Thread
班级询问信息:
2)ThreadGroup
用于获取该信息:
3)使用JMX获取列表:
4) CTRL-BREAK
然而,使用 Sun JVM——至少是最近的 Java 6 版本——只有 CTRL-BREAK 似乎包括垃圾收集线程和 VM 定期任务线程。我发现监视 GC 线程使用的 CPU 很有用,因此我的应用程序可以检测和记录 GC 何时使用大部分 CPU 时间。如果没有这些信息,您只能知道 GC 何时超过某些设置的阈值。
如果我什至可以找出 GC 线程的线程 ID,那么 JMX 可能会提供我需要的其余信息(除非这些线程有什么不同)。例如,使用方法:
有谁知道如何(或者如果已知不可能)使用 Sun JVM 获取有关垃圾收集线程的信息?
java - 如何在 java 中为 jnlp 应用程序生成线程转储
我正在尝试调试 jnlp 应用程序。在某些情况下它会被绞死。
我想收集我的 jnlp 应用程序的线程转储。
关于如何做到这一点的任何建议。
我在 Win XP、32 位 jvm 中运行它
java - 如何调试 Java OutOfMemory 异常?
java.lang.OutOfMemoryError
调试异常的最佳方法是什么?
当我们的应用程序发生这种情况时,我们的应用程序服务器 (Weblogic) 会生成一个堆转储文件。我们应该使用堆转储文件吗?我们应该生成 Java 线程转储吗?究竟有什么区别?
更新:生成线程转储的最佳方法是什么?(我们的应用程序在 Solaris 上运行)是kill -3
终止应用程序并生成线程转储的最佳方法吗?有没有办法生成线程转储但不杀死应用程序?
java - 在 Sun JDK 上使用时间戳生成线程转储
我需要在 Sun Solaris 机器上为使用 Sun 的 Java5 的应用程序生成线程转储。我正在使用以下命令生成线程转储:
但是使用它生成的线程转储不会记录进行转储时的时间戳。如果我进行多个线程转储,这会产生问题。
您能否建议如何使用线程转储获取时间戳?
java - 如何在 Java Web 应用程序中找到无限循环?
有一天,我们的 Java Web 应用程序的 CPU 使用率达到 100%。重新启动解决了事件但没有解决问题,因为问题在几个小时后又回来了。我们怀疑新版本引入了无限循环,但我们没有对代码或服务器进行任何更改。
我们通过使用 kill -QUIT 进行多个线程转储以及查看和比较每个线程的详细信息,设法找到了问题。我们发现所有线程转储中都出现了一个线程调用堆栈。经过分析,对于数据库中定期更新的某些数据,存在一个永远不会出错的while循环条件。
分析几个web应用的线程转储真的很繁琐。
那么您知道在生产环境中找到此类问题的更好方法或工具吗?
java - 在 OpenVMS 上创建线程转储
如何从 OpenVMS 上正在运行的 Java 进程中检索线程转储?该进程未启用 JMX。我正在寻找类似于kill -QUIT
在 Unix 或Ctrl+Break
Windows 上的东西。
编辑:我在这里找到了答案:http: //h18012.www1.hp.com/java/documentation/1.6.0/ivms/docs/user_guide.html#javaenable_sigquit_mailbox
java - Java 线程转储汇总工具
我有时不得不查看来自 Tomcat 服务器的线程转储。但是,这是一个非常缓慢的过程,因为我的应用程序使用具有几百个线程的线程池。我看到的大多数线程转储都包含许多线程的相同堆栈跟踪,因为它们空闲等待工作。
是否有任何工具可以解析线程转储并仅向我显示唯一的堆栈跟踪以及每个状态下线程数的计数?这将允许我快速忽略在公共位置等待工作的数十或数百个线程。
我已经尝试过线程转储分析器,但这并没有对常见的堆栈跟踪进行任何总结。
java - 杀死 -3 返回空
我有一个 java 应用程序,似乎卡住了。我尝试了 kill -3 但输出为空(它被重定向到文件但没有任何内容)。
我用什么方法可以看到它在做什么?
编辑:
我尝试了 jstack 但它崩溃了:
编辑2:
这是 jvisualvm 崩溃:
/usr/pkgs/java/1.6.0.25/bin/../lib/visualvm//platform/lib/nbexec:第 539 行:18217 中止“/usr/pkgs/java/1.6.0.25/bin/java”-Djdk .home="/usr/pkgs/java/1.6.0.25" -classpath "/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/boot.jar:/usr/pkgs/java/1.6. 0.25/lib/visualvm/platform/lib/org-openide-modules.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/org-openide-util-lookup.jar:/usr/ pkgs/java/1.6.0.25/lib/visualvm/platform/lib/org-openide-util.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/boot_ja.jar:/ usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/boot_zh_CN.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/org-openide-modules_ja .jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/org-openide-modules_zh_CN.jar:/usr/pkgs/java/1.6.0。25/lib/visualvm/platform/lib/locale/org-openide-util-lookup_ja.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/org-openide-util-lookup_zh_CN .jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/org-openide-util_ja.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib /locale/org-openide-util_zh_CN.jar:/usr/pkgs/java/1.6.0.25/lib/dt.jar:/usr/pkgs/java/1.6.0.25/lib/tools.jar" -Dnetbeans.dirs= “/usr/pkgs/java/1.6.0.25/bin/../lib/visualvm//visualvm:/usr/pkgs/java/1.6.0.25/bin/../lib/visualvm//profiler:”-Dnetbeans .home="/usr/pkgs/java/1.6.0.25/lib/visualvm/platform" '-client' '-Xms24m' '-Xmx256m' '-Dsun.jvmstat.perdata.syncWaitMs=10000' '-Dsun.java2d .noddraw=true' '-Dsun.java2d.d3d=false' -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="/root/.visualvm/6u23/var/log/heapdump.hprof" org.netbeans.Main --userdir "/root/.visualvm/6u23" "--branding" "visualvm" 0<&0