Tag: jstack

解释jstack输出

我有一个java进程使用BatchInserter将大量.csv文件中的大量数据加载到Neo4j数据库中。 我用的是: OpenJDK 7 Ubuntu 12.04 Neo4j 2.0 M3 加载第一个164 GB(根据ls -lh )后,文件夹大小停止增加,但进程继续运行,没有释放内存,CPU仍然是100%(全部根据htop )。 加载过程是单线程的,只有JVM使用多个线程 – 我猜是ParallelGC 。 我不确定如何诊断这类问题,但被指示尝试jstack ,所以将其输出包含在下面。 任何人都知道出了什么问题,或者对如何进行诊断提出建议? Full thread dump OpenJDK 64-Bit Server VM (22.0-b10 mixed mode): “Attach Listener” daemon prio=10 tid=0x00007fc3a4001000 nid=0x5636 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE “Service Thread” daemon prio=10 tid=0x00007fcf58123000 nid=0x4545 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE “C2 CompilerThread1” daemon prio=10 […]

jstack是否停止使用较新的JDK8版本?

我很惊讶地发现,不知怎的,最近,jstack停止了在更新的JDK 8上工作。我不知道发生了哪个版本,但我得到了: 36649: Unable to open socket file: target process not responding or HotSpot VM not loaded The -F option can be used when the target process is not responding ps -Af|grep 36649 conflue+ 36649 1 62 08:14 ? 00:48:28 /usr/lib/jvm/java-8-oracle/bin/java -Djava.util.logging.config.file=/opt/atlassian/confluence/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms15000m -Xmx15000m -Duser.timezone=UTC -Djava.awt.headless=true -Dconfluence.upgrade.recovery.file.enabled=false -Dmail.smtp.connectiontimeout=10000 -Dmail.smtp.timeout=10000 -XX:MaxMetaspaceSize=256m -XX:+UseG1GC -Djava.awt.headless=true -Xloggc:/opt/atlassian/confluence/logs/gc-2015-07-02_08-14-39.log -XX:+UseGCLogFileRotation […]

获取正在运行的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线程:解释正在运行的JVM的线程状态

Java线程始终处于以下十种状态之一: NEW: Just starting up, ie, 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: […]

java jstack工具内存不足或附加权限不足

我真的很困惑:在我的Windows 2008r2中,我有一个Windows服务,实际上它是一个以SYSTEM用户身份运行的java进程。 现在,我将Jstack原始用于服务。 但它发生错误: insufficient memory or insufficient privilege to attach 但是,如果我使用Jstack的选项-F ,它可以很好地工作。 我查看了jdk的源代码,它使用了一个BugSpotAgent类来完成上面的操作。 我想知道我不能原始使用Jstack的根本原因,是SYSTEM用户权限问题吗? 我也尝试使用PsExec.exe (一个工具)来原始运行我的Jstack (这意味着我将使用SYSTEM用户来运行Jstack ),但它仍然无法工作。 你能帮助我吗? 感谢和问候!

jstack -F如何影响正在运行的Java进程?

我正在尝试诊断我正在使用的Java Web应用程序(Jenkins)无响应的问题。 如果我在没有-F标志的情况下运行jstack它不会给我任何东西,但是如果我将标志放入以强制进行线程转储,不仅我得到了结果,而且应用程序开始响应并继续进行,好像什么都没发生直到它最终再次停止响应。 什么是jstack -F标志会影响正在运行的JVM并导致无响应的应用程序再次开始响应?

Jstack和Jstat停止了升级到JDK6u23的工作

我们最近从JDK6u20(Linux,32位和64位)升级到JDK6u23。 从那时起,我们不能再使用工具jstack和jstat从运行进程中获取监控信息。 如果我们切换回JDK6u20,一切正常。 我们正在运行Tomcat 6.根据此论坛post,其他人也有同样的问题: http : //forums.oracle.com/forums/thread.jspa?threadID = 2151967&tstart = 0 运行简单的普通Java进程并使用这些工具。 Jstack说:无法打开套接字文件:目标进程没有响应或未加载HotSpot VM当目标进程没有响应时,可以使用-F选项。 Jstat说:找不到19799 使用Jps根本不显示正在运行的进程,所以我猜这个问题更多是JDK6u23和JDK6u24的一般性质。 它有一个新的热点引擎。 也许某些东西不能与Tomcat和Hotspot v19一起使用。 任何想法? 感谢帮助。 PS当然,我们以同一个用户身份运行它,我们没有改变任何其他内容。 只有JDK。

Java Swing:GUI冻结 – jstack解释

我有一个Gui应用程序,可以在串行热敏打印机上打印票据。 当我点击启动此操作的按钮时,我的GUI被冻结。 我认为那是因为代码是在EDT上执行的。 我使用jstack确定但我不理解下面的结果: Full thread dump Java HotSpot(TM) Client VM (23.3-b01 mixed mode, sharing): “Thread-12” prio=6 tid=0x03012000 nid=0xd04 runnable [0x038ef000] java.lang.Thread.State: RUNNABLE at gnu.io.RXTXPort.eventLoop(Native Method) at gnu.io.RXTXPort$MonitorThread.run(RXTXPort.java:1575) “Thread-6” prio=6 tid=0x0302c400 nid=0x1b0 waiting on condition [0x039ef000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at posO2.Threads.ThreadHorloge.run(ThreadHorloge.java:46) “Thread-5” prio=6 tid=0x03511c00 nid=0x9e4 waiting on condition [0x0399f000] java.lang.Thread.State: TIMED_WAITING (sleeping) […]

获取Java线程id和堆栈跟踪的失控Java线程

在我最繁忙的生产安装中,有时我会得到一个似乎陷入无限循环的单个线程。 经过大量的研究和调试后,我还没弄清楚谁是罪魁祸首,但似乎应该是可能的。 以下是血腥的细节: 目前的调试说明: 1) ps -eL 18975向我展示了Linux pid问题子线程,19269 $ps -eL | grep 18975 … PID LWP TTY TIME CMD 18975 18994 ? 00:00:05 java 18975 19268 ? 00:00:00 java 18975 19269 ? 05:16:49 java 18975 19271 ? 00:01:22 java 18975 19273 ? 00:00:00 java … 2) jstack -l 18975表示没有死锁, jstack -m 18975不起作用 3) jstack […]

Java线程转储:没有“等待锁定……”的BLOCKED线程

我在理解我从jstack获得的线程转储有困难,因为在Tomcat 6上运行的Spring MVC Web应用程序(java 1.6.0_22,Linux)。 我看到阻塞线程(导致其他线程等待)自己被阻塞,但是线程转储没有告诉我为什么或者他们正在等待哪个监视器。 例: “TP-Processor75” daemon prio=10 tid=0x00007f3e88448800 nid=0x56f5 waiting for monitor entry [0x00000000472bc000] java.lang.Thread.State: BLOCKED (on object monitor) at java.lang.Class.initAnnotationsIfNecessary(Class.java:3067) – locked (a java.lang.Class for org.catapultframework.resource.ResourceObject) at java.lang.Class.getAnnotation(Class.java:3029) … 即我错过了堆栈跟踪中的“等待锁定…”行。 显然线程锁定了一个Class对象,但是我不明白为什么线程本身被阻塞了。 线程转储不包含任何死锁提示。 如何识别锁定监视器? 谢谢,奥利弗