Jvm 如何根据某些条件自动捕获Java线程转储?

Jvm 如何根据某些条件自动捕获Java线程转储?,jvm,Jvm,假设当tomcat线程数超过500个时,我想通过Jmap或其他方式自动捕获转储的线程,如何实现 顺便说一句,环境是Linux CentOS。有什么问题?通过JMX监控Tomcat线程的数量,当它达到阈值时,执行jstack。我们有一个Tomcat应用程序,它的线程数量经常在短时间内随机增加到一个大的数量,这将持续几分钟(这意味着我们通常没有时间手动捕获线程转储),然后放弃。我想看看这些线程发生了什么。所以你的意思是我需要编写一个JMX程序,并在问题发生时从JMX程序调用jstack?因为我不知道

假设当tomcat线程数超过500个时,我想通过Jmap或其他方式自动捕获转储的线程,如何实现


顺便说一句,环境是Linux CentOS。

有什么问题?通过JMX监控Tomcat线程的数量,当它达到阈值时,执行jstack。我们有一个Tomcat应用程序,它的线程数量经常在短时间内随机增加到一个大的数量,这将持续几分钟(这意味着我们通常没有时间手动捕获线程转储),然后放弃。我想看看这些线程发生了什么。所以你的意思是我需要编写一个JMX程序,并在问题发生时从JMX程序调用jstack?因为我不知道如何从JMX程序运行工具jstack。从Java代码运行调用Jstack的shell脚本?是;为什么不呢?有很多方法可以进行线程转储,但是
Runtime.exec
更简单。