问题标签 [jstack]

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.

0 投票
4 回答
7763 浏览

java - 获取正在运行的 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 混合模式):

“附加侦听器”守护进程 prio=10 tid=0x000000000272f800 nid=0x614b 等待条件 [0x0000000000000000] java.lang.Thread.State: RUNNABLE

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

0 投票
3 回答
1086 浏览

tomcat - Take thread dump of application without tomcat restart

I had to create thread dump of web application in tomcat runned as a service without need to restart tomcat. I tried to attach jconsole, jvisualvm, jstack, but without success.

  • Tomcat is not jmx remote enabled. (But can't introduce properties - can't restart it)
  • I tried to execute applications from the same user as the service, change TEMP, TMP folders
  • I want to execute it locally - on the same server as tomcat as no configuration should be needed (hence no restarting) ("Note: This configuration is needed only if you are going to monitor Tomcat remotely. It is not needed if you are going to monitor it locally, using the same user that Tomcat runs with.")
  • In jConsole process is showed grayed, sometimes not visible - could not attach it
  • In jStack: Insufficient memory or insufficient privilages to attach
  • Tomcat is running on Windows machine

Any ideas?

0 投票
1 回答
214 浏览

java - Tomcat webapp 挂起

我的 webapp 最近开始挂起。当它挂起时,我已经设法使用 jstack 来获取它的线程转储。转储包括在这里

除一个IN_NATIVE线程外,其他所有线程都是BLOCKED.

任何提示可能是什么原因?

0 投票
0 回答
145 浏览

java - Citrix 虚拟化进程的线程转储?

我需要对通过 Citrix XenApp(在 Windows 2008 上)运行的 JAVA 应用程序进行线程转储。

我可以在任务管理器中看到该进程,但是当我尝试使用线程转储时,jstack -l <PID>我收到以下错误:"Not enough storage is available to process this command".

当我使用该JVisualVM工具时,我没有看到正在运行的进程。

当直接从服务器(Windows 2008)运行应用程序时,可以在上面的工具中看到该过程。

有没有收集线程转储的工作方法?

0 投票
0 回答
945 浏览

java - 使用 jstack 获取线程转储时出现 NullPointerException

我正在尝试调试 CPU 峰值问题。为了获取线程转储,我使用了 Jstack,它给出了下面提到的错误:

有没有人见过这个问题?

JDK版本:1.7

0 投票
1 回答
384 浏览

spring - 当 Active MQ 代理运行时,Webapp 挂起

我的spring webapp(在本地码头上运行)遇到了一个奇怪的问题,它连接到本地运行的ActiveMQ代理以实现JMS功能。一旦我启动代理,应用程序就会变得异常缓慢,例如,使用活动代理启动 ApplicationContext 需要很长时间(即 > 10 分钟,还没有等待足够长的时间来完成它)。如果我在 webapp 之后(即加载 ApplicationContext 之后)启动代理,它会以非常慢的方式运行(通常需要 <1s 的请求需要 >30s)。即使不涉及 JMS,所有操作也需要更长的时间。当我在没有 activemq 代理的情况下运行应用程序时,一切都运行顺利(当然 JMS 相关的东西除外 ;-))

这是我到目前为止所尝试的:

  1. 将 ActiveMQ 版本更新为 5.10.1
  2. 使用独立的 ActiveMQ 而不是 maven-plugin
  3. 将代理从单独的 JVM(通过活动的 mq maven 插件,通过 jetty 配置中的 JNDI 查找连接)移动到同一个 JVM(通过 spring 配置启动,没有 JNDI)
  4. 将活动 mq 传输从 tcp 更改为 vm
  5. 几个 activemq 设置(alwaysSyncSend、alwaysSessionAsync、producerWindowSize)
  6. 使用 CachingConnectionFactory 和 PooledConnectionFactory

在分析线程转储 (jstack) 时,我看到许多 activemq 线程在监视器上休眠。看起来像这样:

任何帮助是极大的赞赏 !

0 投票
0 回答
1367 浏览

java - 使用奇怪的线程转储启动 Java 程序

我在 Java 1.8 上编写了一个 JavaFX 程序,它在我的机器上运行良好。但是,当我将程序部署到另一台机器时,UI 挂起并且没有响应。所以我使用 jstack 命令来弄清楚发生了什么。

在我的机器上运行良好,转储日志如下:

但是,当我在另一台机器上启动它时,转储日志完全不同,就像:

据我所知,我发现文件夹 hsperfdata_[myusername] 的用户名与我的机器不匹配,如果我正确地修改了名称,那么转储日志也会像第二个示例一样。

任何人都可以帮助解释这些技巧吗?

0 投票
0 回答
350 浏览

java - jstack可以在linux上转储特定的线程堆栈吗

热点的 jstack 命令可以只转储指定线程的堆栈吗?

jstack $pid 将转储Linux上所有线程的堆栈。如果 $pid 是线程 ID,它可以只转储指定的堆栈吗?

0 投票
1 回答
929 浏览

intellij-idea - How to perform analysis of jstack output using IntelliJ

Is there a way to parse and analyze jstack output in IntelliJ. It can be done in Eclipse but I'm not able to figure out how in IntelliJ 13. Thanks.

0 投票
1 回答
2006 浏览

java - Java以编程方式强制线程转储-例如“jstack -F -l"

我正在尝试以编程方式强制执行 Java 线程转储,就像命令jstack -F -l <PID>会执行此操作一样。

我最好的尝试:我使用以下代码sun.jvm.hotspot.tools.JStack覆盖创建了一个子类,run()类似于sun.jvm.hotspot.tools.JStack.run()但在最后一行调用start(printstream)而不是start()

问题:java.lang.RuntimeException: Attempt to initialize VM twice

因此我做了:

但这会导致:

java.lang.RuntimeException: Unable to deduce type of thread from address 0xa5d12400 (expected type JavaThread, CompilerThread, ServiceThread, JvmtiAgentThread, or SurrogateLockerThread) at sun.jvm.hotspot.runtime.Threads.createJavaThreadWrapper(Threads.java:152) at sun.jvm.hotspot.runtime.Threads.first(Threads.java:140) at sun.jvm.hotspot.runtime.DeadlockDetector.createThreadTable(DeadlockDetector.java:149) at sun.jvm.hotspot.runtime.DeadlockDetector.print(DeadlockDetector.java:56) at sun.jvm.hotspot.runtime.DeadlockDetector.print(DeadlockDetector.java:39) at sun.jvm.hotspot.tools.StackTrace.run(StackTrace.java:52) at de.chili.savelogfiles.ChiliJStack.run(ChiliJStack.java:40) at sun.jvm.hotspot.tools.Tool.start(Tool.java:221) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at de.chili.savelogfiles.JStackFRunnable.run(JStackFRunnable.java:81) at java.lang.Thread.run(Thread.java:722) Caused by: sun.jvm.hotspot.types.WrongTypeException: No suitable match for type of address 0xa5d12400 (nearest symbol is _ZTV10JavaThread) at sun.jvm.hotspot.runtime.InstanceConstructor.newWrongTypeException(InstanceConstructor.java:62) at sun.jvm.hotspot.runtime.VirtualConstructor.instantiateWrapperFor(VirtualConstructor.java:80) at sun.jvm.hotspot.runtime.Threads.createJavaThreadWrapper(Threads.java:148) ... 13 more sun.jvm.hotspot.utilities.AssertionFailure: Expecting GenCollectedHeap, G1CollectedHeap, or ParallelScavengeHeap, but got sun.jvm.hotspot.gc_interface.CollectedHeap

我没有想法......