问题标签 [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.
java - 解释 jstack 输出
我有一个 java 进程使用 .csv 文件将大量数据从一堆 .csv 文件加载到 Neo4j 数据库中BatchInserter
。我正在使用:
- 开放JDK 7
- Ubuntu 12.04
- Neo4j 2.0 M3
加载前 164 GB(根据ls -lh
)后,文件夹大小停止增加,但进程继续运行,没有释放内存,CPU 仍处于 100%(根据htop
)。
加载过程是单线程的,只有 JVM 使用超过 1 个线程——我猜是ParallelGC
.
我不确定如何诊断此类问题,但被指示尝试jstack
,因此将其输出包含在下面。
任何人都知道出了什么问题或对我如何进行诊断有建议?
特别是,任何人都可以对这些堆值提供一些见解或建议阅读它们吗?
java - jstack 无法从 Windows 故障转储打印 java 线程堆栈
我正在尝试从 WER 崩溃时获取的本机转储中提取 Java 堆转储:
但我得到以下异常:
我已经仔细检查过:
- 我正在运行与发生崩溃的系统相同版本的 java
- Windows 的位数 (32) 与发生崩溃的系统相匹配
- jvm.dll 在路径中
- 安装了windbg
如果我尝试使用 jmap 提取 java 堆转储,我会得到完全相同的错误。
有谁知道可能出了什么问题?
jstack - 如何理解 jstack 输出
这是否意味着我有一个死锁?有人对此有什么想法吗?
shell - 使用 Crontab 运行 Jstack -F $Thread_NID
我创建了一个 Unix Shell 脚本,当 cpu 使用率高于 80% 时,我尝试在其中进行线程转储。
用于计算 cpu 使用情况mpstat 1 1|tail -1
并从中获取 cpu 空闲使用情况。
然后我找到了基于的顶级 Java 线程top -b -n1 -H
,并且使用jstack -F $Thread_Nid
thread_nid 只不过是我们从中获得的 pid top-b -n1 -H
。
现在的问题是
当我手动运行脚本时工作正常,我在日志文件中获得了 jstack 输出,但是当我通过 crontab 运行脚本时,Jstack 输出没有进入日志文件。
手动以及通过 Crontab 都在相同的用户名下运行脚本,我已经通过在脚本运行时检查 top 命令中的用户名来验证这一点。
请让我知道我在这里做错了什么。
java - Java Runtime.exec 无法正确执行 JSTACK 命令
我正在尝试使用 Runtime.exec 执行jstack命令,但似乎有错误,但我找不到。此外,我可以在 CMD 中执行以下命令,它工作正常:
C:\Users\bob>"C:\Program Files\Java\jdk1.6.0_18\bin\jstack" 5540 > d:\s.log
测试类全文:
输出:
我怎么解决这个问题?
提前致谢。
java - java - 如何获得JVM线程优先级?
我认为 jstack 应该提供线程优先级信息,但我得到的只是这个,例如......
如何找到线程优先级?
操作系统:Ubuntu 10.04.4
Java 1.6.0_26
java - java jstack工具内存不足或附加权限不足
我真的很困惑:在我的 windows 2008r2 中,我有一个 windows 服务,实际上它是以SYSTEM用户身份运行的 java 进程。现在,我直接使用Jstack来提供服务。但它发生错误:
但是如果我使用 Jstack 的选项-F,它可以正常工作。我查看了jdk的源码,上面使用了一个BugSpotAgent类来完成。
我想知道我不能原始使用Jstack的根本原因,是SYSTEM用户权限问题吗?我也尝试使用PsExec.exe(一个工具)来运行我的Jstack原始(这意味着我将使用SYSTEM用户来运行Jstack),但它仍然无法工作。
你能帮助我吗?
感谢和问候!
deadlock - 远程服务器上的 Java 死锁检测
我创建了一个简单的监控 python 程序,它使用 paramiko 和 fabric api 通过 ssh 检查远程服务器,现在我想找出远程服务器的 java 程序中是否发生死锁。
我知道我可以通过使用在本地执行此操作
但是我怎样才能通过 ssh 使用 python 做到这一点?
java - jstack命令中的frame是什么
我试图jstack
通过浏览 jstack 的在线文档来理解 java 命令,其中说:
jstack 为给定的 Java 进程或核心文件或远程调试服务器打印 Java 线程的 Java 堆栈跟踪。对于每个 Java 框架,将打印完整的类名、方法名、'bci'(字节码索引)和行号(如果有)。使用 -m 选项,jstack 会打印所有线程的 Java 和本机帧以及“pc”(程序计数器)。对于每个原生帧,如果可用,将打印最接近“pc”的原生符号。C++ 重整名称不会被重整。要对 C++ 名称进行解码,可以将此命令的输出通过管道传输到 c++filt。
我有一些疑问,请帮助我理解这个命令。
1)核心文件只是我要打印堆栈跟踪的文件的名称还是不同?什么是远程调试服务器,我们如何使用或配置它?
2) 在这种情况下,什么是 Java 框架,什么是线程的本机框架?
3)我之前在学习微处理器时了解了程序计数器,但是Java的概念应用程序也相同吗?
4) 最接近 pc 的本地符号是什么意思?还有如何在 Java 中使用 c++,我在学习 Java 时从未接触过 c++。
请澄清,提前谢谢。
java - Java TIMED_WAITING 和 Tomcat 服务器没有响应
嗨,我有一个应用程序,它有时会响应请求,但有时不会在给定端口上收到请求。随着流量的增加,这似乎是一个容量问题。现在我不知道是什么在扼流圈,因为它们需要调整很多参数,所以我决定从 jstack 中查看线程转储。
输出不是很有帮助,因为它只显示了几个处于 TIMED_WAIT 状态的线程,但是堆栈跟踪不够长,无法显示我的代码的哪一部分触发了这个问题。
“pool-135-thread-1”prio=10 tid=0x00000000427a8800 nid=0x7833 等待条件 [0x00007fd2b22a3000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - 停车在 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ 等待 <0x00000006a25a5458> (一个 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025) at java.util.concurrent.DelayQueue.take(DelayQueue.java:164) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:609) at java.util .concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue。take(ScheduledThreadPoolExecutor.java:602) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at java.lang.Thread .run(Thread.java:662)
锁定的可拥有同步器: - 无
“pool-134-thread-1”prio=10 tid=0x000000004169d800 nid=0x7832 等待条件 [0x00007fd2b23a4000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - 停车在 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196) 在 java.util.concurrent.locks.AbstractQueuedSynchronizer$ 处等待 <0x00000006a2524030> (一个 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025) at java.util.concurrent.DelayQueue.take(DelayQueue.java:164) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:609) at java.util .concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue。take(ScheduledThreadPoolExecutor.java:602) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at java.lang.Thread .run(Thread.java:662)
锁定的可拥有同步器: - 无
“pool-133-thread-1”prio=10 tid=0x000000004169c800 nid=0x7831 等待条件 [0x00007fd2b24a5000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - 停车在 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196) 在 java.util.concurrent.locks.AbstractQueuedSynchronizer$ 处等待 <0x00000006a25045d8> (一个 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025) at java.util.concurrent.DelayQueue.take(DelayQueue.java:164) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:609) at java.util .concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue。take(ScheduledThreadPoolExecutor.java:602) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at java.lang.Thread .run(Thread.java:662)
锁定的可拥有同步器: - 无
它甚至似乎都没有在等待相同的资源。
任何帮助将不胜感激。