标签: jstack

Windows上的Java堆栈跟踪

我需要为使用Windows的客户端计算机上运行的JVM进程获取堆栈跟踪.

客户端安装了JRE,但没有安装JDK.

我想使用JStack,但它没有安装,我们无法在客户端的机器上安装JDK.我也尝试过使用来自Java Webstart会话的AdaptJ堆栈跟踪产品,但由于我们远程进入并且因为不是在指定PID处启动应用程序的会话而得到错误.

基本上我想要一种安装JStack而无需安装JDK的方法.

java jstack

6
推荐指数
1
解决办法
2万
查看次数

帮助理解jstack输出

我有一个桌面Java/Swing应用程序,它通过Java Webstart部署(客户端在XP上使用Java 6u20).我收到了申请暂停用户的间歇性报告.我设法在挂起期间登录到这样的系统,发现没有绘制UI(就像EDT被阻止一样).

我用jstack列出了线程; 我没有看到任何关于输出的死锁的提及,因为我对jstack很新,​​我不确定我还应该寻找什么.

我必须编辑堆栈跟踪以使其适合stackoverflow限制,希望没有遗漏任何重要意义.

谢谢,
菲尔

Full thread dump Java HotSpot(TM) Client VM (16.3-b01 mixed mode, sharing):

"AWT-EventQueue-0" prio=6 tid=0x03e3f000 nid=0xe44 in Object.wait() [0x0516f000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at java.awt.EventQueue.getNextEvent(Unknown Source)
    - locked <0x1d4b91d8> (a java.awt.EventQueue)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    <SNIP>

   Locked ownable synchronizers:
    - None

"ServerThread" prio=6 tid=0x058f7c00 nid=0xa08 waiting for monitor entry [0x055be000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.check(Unknown Source)
    - waiting to lock <0x1d485f80> (a com.sun.deploy.security.CPCallbackHandler$ParentCallback)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.access$1400(Unknown Source) …
Run Code Online (Sandbox Code Playgroud)

java locking jstack mixed-code

6
推荐指数
1
解决办法
9632
查看次数

获取正在运行的java进程的java版本

我可以使用jps列出正在运行的java进程,并使用jstack -l process_id来获取正在运行的java进程的堆栈信息.我想知道这个进程运行在哪个java版本上.有办法吗?我不必使用jstack工具.谢谢.

jstack -l 23819 2014-11-12 12:36:11全线程转储OpenJDK 64位服务器VM(23.25-b01混合模式):

"Attach Listener"守护进程prio = 10 tid = 0x000000000272f800 nid = 0x614b等待条件[0x0000000000000000] java.lang.Thread.State:RUNNABLE

锁定的可拥有同步器: - 无

java jstack

6
推荐指数
3
解决办法
4945
查看次数

Java 线程:解释正在运行的 JVM 的线程状态

Java 线程始终处于以下十种状态之一:

NEW: Just starting up, i.e., in process of being initialized.
NEW_TRANS: Corresponding transition state (not used, included for completness).
IN_NATIVE: Running in native code.
IN_NATIVE_TRANS: Corresponding transition state.
IN_VM: Running in VM.
IN_VM_TRANS: Corresponding transition state.
IN_JAVA: Running in Java or in stub code.
IN_JAVA_TRANS: Corresponding transition state (not used, included for completness).
BLOCKED: Blocked in vm.
BLOCKED_TRANS: Corresponding transition state.
Run Code Online (Sandbox Code Playgroud)

未使用的状态 ( UNINITIALIZED) 已从列表中省略。

虽然上面给出了状态的定义,但我正在寻找“经验法则”来解释正在运行的应用程序服务器的给定线程状态设置。并且,更具体地说:

假设一个实时应用程序服务器在不同时间点具有以下线程统计信息(使用jstack获得):

  • 100 个线程: 35 BLOCKED、 65IN_NATIVE
  • 113 个线程: …

java performance multithreading stack-trace jstack

5
推荐指数
1
解决办法
1万
查看次数

Jstack给出了java.lang.reflect.InvocationTargetException

直到昨天,jstack工作正常.今天,所有突然之间它给了我下面的例外,我不知道为什么:

$ sudo -u tomcat6 jstack -J-d64 -m 26385
Attaching to process ID 26385, please wait...
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at sun.tools.jstack.JStack.runJStackTool(JStack.java:118)
    at sun.tools.jstack.JStack.main(JStack.java:84)
Caused by: sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 20.1-b02. Target VM is 19.0-b09
    at sun.jvm.hotspot.runtime.VM.checkVMVersion(VM.java:224)
    at sun.jvm.hotspot.runtime.VM.<init>(VM.java:287)
    at sun.jvm.hotspot.runtime.VM.initialize(VM.java:357)
    at sun.jvm.hotspot.bugspot.BugSpotAgent.setupVM(BugSpotAgent.java:594)
    at sun.jvm.hotspot.bugspot.BugSpotAgent.go(BugSpotAgent.java:494)
    at sun.jvm.hotspot.bugspot.BugSpotAgent.attach(BugSpotAgent.java:332)
    at sun.jvm.hotspot.tools.Tool.start(Tool.java:163)
    at sun.jvm.hotspot.tools.JStack.main(JStack.java:86)
    ... 6 more
Run Code Online (Sandbox Code Playgroud)

有谁知道是什么导致了这个?我在Ubuntu服务器版上运行Tomcat6.

tomcat jstack

5
推荐指数
1
解决办法
3268
查看次数

当几乎所有线程都处于NATIVE状态时,ThreadDump问题

我在大多数线程处于(state = IN_NATIVE)状态的应用程序中进行了主机的线程转储。

在这些情况下,只有几个线程被阻塞:

Thread 31681: (state = BLOCKED)
 - sun.misc.Unsafe.park(boolean, long) @bci=0 (Interpreted frame)
 - java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=156 (Interpreted frame)
 - java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42, line=1987 (Compiled frame)
 - java.util.concurrent.LinkedBlockingQueue.take() @bci=29, line=399 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor.getTask() @bci=78, line=947 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=18, line=907 (Compiled frame)
 - java.lang.Thread.run() @bci=11, line=662 (Interpreted frame)
Run Code Online (Sandbox Code Playgroud)

Thread 20966: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
 - com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run() @bci=34, line=534 (Compiled frame)
Run Code Online (Sandbox Code Playgroud)

Thread 31682: (state = BLOCKED) …
Run Code Online (Sandbox Code Playgroud)

java multithreading jstack thread-safety thread-dump

5
推荐指数
1
解决办法
5883
查看次数

top -H显示了几个没有出现在jstack输出中的线程ID

我试图调查为什么我的jboss占用600%的CPU(在CentOS 5上运行).

我运行top -H并尝试将结果与jstack输出进行比较.大多数来自顶部的线程ID出现在jstack的输出中,但不幸的是,占用大部分CPU的线程没有列在那里.

因为输出很长,我只在这里列出它的一部分.

$top -b -n1 -H -p <jboss pid>

top - 08:04:58 up 73 days, 19:50,  1 user,  load average: 5.72, 5.97, 5.95
Tasks: 128 total,   6 running, 122 sleeping,   0 stopped,   0 zombie
Cpu(s): 63.6%us,  1.7%sy,  0.0%ni, 34.2%id,  0.3%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:  32946160k total, 32545228k used,   400932k free,    86776k buffers
Swap: 34996216k total,      136k used, 34996080k free, 21577176k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND …
Run Code Online (Sandbox Code Playgroud)

java performance centos jstack

5
推荐指数
1
解决办法
516
查看次数

jstack无法从Windows崩溃转储中打印java线程堆栈

我正在尝试从WER在崩溃时采用的本机转储中提取Java堆转储:

jstack -m -l "c:\Program Files\Java\jre6\bin\java.exe" WER.tmp.hdmp
Run Code Online (Sandbox Code Playgroud)

但我得到以下异常:

Attaching to core c:\Users\xxx\Desktop\WER.tmp.hdmp from executable c:\Program Files\Java\jre6\bin\java.exe, please wait...
sun.jvm.hotspot.debugger.NoSuchSymbolException: Could not find symbol "gHotSpotVMTypes" in any of the known library names (jvm.dll, jvm_g.dll)
        at sun.jvm.hotspot.HotSpotTypeDataBase.lookupInProcess(HotSpotTypeDataBase.java:389)
        at sun.jvm.hotspot.HotSpotTypeDataBase.readVMTypes(HotSpotTypeDataBase.java:104)
        at sun.jvm.hotspot.HotSpotTypeDataBase.<init>(HotSpotTypeDataBase.java:85)
        at sun.jvm.hotspot.bugspot.BugSpotAgent.setupVM(BugSpotAgent.java:565)
        at sun.jvm.hotspot.bugspot.BugSpotAgent.go(BugSpotAgent.java:494)
        at sun.jvm.hotspot.bugspot.BugSpotAgent.attach(BugSpotAgent.java:348)
        at sun.jvm.hotspot.tools.Tool.start(Tool.java:169)
        at sun.jvm.hotspot.tools.JStack.main(JStack.java:86)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at sun.tools.jstack.JStack.runJStackTool(JStack.java:118)
        at sun.tools.jstack.JStack.main(JStack.java:84)
Debugger attached successfully.
jstack requires a java VM process/core!
Run Code Online (Sandbox Code Playgroud)

我仔细检查过:

  • 我正在运行与发生崩溃的系统相同的java版本
  • Windows(32)的位数与发生崩溃的系统相匹配
  • jvm.dll在路径中
  • windbg已安装

如果我尝试使用jmap提取java堆转储,我会得到完全相同的错误.

有谁知道会出现什么问题?

java crash-dumps jstack jmap

5
推荐指数
0
解决办法
3107
查看次数

jstack 导致“Windbg 错误:WaitForEvent 失败”

在 Windows 7 上,我尝试通过执行命令从 Java 进程获取堆栈跟踪

jstack.exe -F xxx

来自另一个 Java 进程,其中 xxx 是目标进程的 PID。我收到错误

附加到进程时出错:Windbg 错误:WaitForEvent 失败!

知道为什么吗?

java windows jstack

5
推荐指数
2
解决办法
4296
查看次数

removeAll()处的线程转储

我有一个按钮删除现有的JPanel并添加新的JPanel.但是当我按下那个按钮时,我的程序会挂起.我使用jstack跟踪并发现程序卡在removeAll()

这些是相关的线程转储:

"AWT-EventQueue-0" prio=6 tid=0x000000000df7f000 nid=0x394 runnable [0x000000002752a000]
   java.lang.Thread.State: RUNNABLE
    at java.lang.Thread.holdsLock(Native Method)
    at java.awt.Component.checkTreeLock(Component.java:1199)
    at java.awt.Component.getOpaqueShape(Component.java:9804)
    at java.awt.Container.getOpaqueShape(Container.java:4066)
    at java.awt.Component.calculateCurrentShape(Component.java:9892)
    at java.awt.Component.applyCurrentShape(Component.java:9925)
    at java.awt.Container.recursiveApplyCurrentShape(Container.java:4132)
    at java.awt.Container.recursiveApplyCurrentShape(Container.java:4111)
    at java.awt.Component.applyCurrentShapeBelowMe(Component.java:9943)
    at java.awt.Component.mixOnHiding(Component.java:10003)
    - locked <0x0000000089600fd0> (a java.awt.Component$AWTTreeLock)
    at java.awt.Container.mixOnHiding(Container.java:4265)
    - locked <0x0000000089600fd0> (a java.awt.Component$AWTTreeLock)
    at java.awt.Component.removeNotify(Component.java:7027)
    - locked <0x0000000089600fd0> (a java.awt.Component$AWTTreeLock)
    at java.awt.Container.removeNotify(Container.java:2816)
    - locked <0x0000000089600fd0> (a java.awt.Component$AWTTreeLock)
    at javax.swing.JComponent.removeNotify(JComponent.java:4771)
    at java.awt.Container.removeNotify(Container.java:2800)
    - locked <0x0000000089600fd0> (a java.awt.Component$AWTTreeLock)
    at javax.swing.JComponent.removeNotify(JComponent.java:4771)
    at java.awt.Container.removeNotify(Container.java:2800)
    - locked <0x0000000089600fd0> (a java.awt.Component$AWTTreeLock)
    at javax.swing.JComponent.removeNotify(JComponent.java:4771)
    at java.awt.Container.removeNotify(Container.java:2800)
    - …
Run Code Online (Sandbox Code Playgroud)

java multithreading jstack thread-dump

5
推荐指数
0
解决办法
186
查看次数