我正在阅读Thread Dumps
的概念,并找到了各种方法来获取线程转储,但没有文章提到应该采取转储的基础/问题/原因。我们在针对JVM的特定服务器上执行负载测试,并在我们观察到高CPU利用率或占用线程时采用线程转储。它是否正确 ?有人可以说明应该正常进行螺纹转储或在任何负载测试期间的原因。
我们使用jstack
命令来捕获转储:
/app/jdk/jdk1.7.0_111/bin/jstack -l <ProcessID> > <PathToSaveTheFile>
TIA。
答案 0 :(得分:1)
线程转储用于事后调试。国际海事组织,你所做的是对的。我没有看到在正常情况下进行转储的原因。
答案 1 :(得分:0)
只要您认为可以分析与线程锁争用,死锁检测,系统资源争用等有关的任何内容,您就可以进行线程转储......
这就是为什么有些工具可以在我们认为合适的时候促进线程转储,而不仅仅是在JVM崩溃之后。随着时间的推移分析多个转储比上一次崩溃转储更全面。
这意味着您可以在不附加分析器的情况下执行侵入性较小的线程调试,这在大多数情况下会降低应用程序执行的速度(并可能会改变某些动态属性)。