什么时候应该为JVM采用线程转储

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么时候应该为JVM采用线程转储相关的知识,希望对你有一定的参考价值。

我正在阅读关于Thread Dumps的概念,并找到了各种方法来获取线程转储,但没有文章提到应该采取转储的基础/问题/原因。我们在针对JVM的特定服务器上执行负载测试,并在我们观察到高CPU利用率或占用线程时采用线程转储。它是否正确 ?有人可以说明正常进行螺纹转储或在任何负载测试期间的原因。

我们使用jstack命令捕获转储:

/app/jdk/jdk1.7.0_111/bin/jstack -l <ProcessID> > <PathToSaveTheFile>

TIA。

答案

线程转储用于事后调试。国际海事组织,你所做的是对的。我没有看到在正常情况下进行转储的原因。

另一答案

非- 微创调试

只要你认为可以分析任何与线程锁争用,死锁检测,系统资源争用,...有关的事情,你就可以进行线程转储。

这就是为什么只要我们认为合适就有工具来促进线程转储,而不仅仅是在JVM崩溃之后。随着时间的推移分析多个转储比上一次崩溃转储更全面。

这意味着您可以执行侵入性较小的线程调试,而无需附加分析器,这在大多数情况下会降低应用程序执行的速度(并可能会改变某些动态属性)。

以上是关于什么时候应该为JVM采用线程转储的主要内容,如果未能解决你的问题,请参考以下文章

OpenJDK为什么采用JVM线程和内核线程1:1的模型?

线程中会有的问题

JVM面试题汇总

JVM面试题汇总

HashMap 和 ConcurrentHashMap 的区别

分析定位占用CPU资源高的JVM线程