我们有一种情况,我们希望能够创建一个zip文件,其中包含有关当前正在运行的Java程序(可能正在运行)的尽可能多的信息,以便进行事后取证分析。我们目前部署到Java 5,但是Java 6的特性也很有趣。
到目前为止我想到的是:
- 程序生成的线程转储。这似乎在Java 6中工作得更好。
- 记录最近X分钟的日志事件。我们目前使用logback或java.util.logging。
- 外部环境-所有系统属性。
JVM信息还有什么有用的?
是否有可能以一种通用的方式遍历调用堆栈并查看参数?(或者这是否需要JVMTI或同等的东西)。它是一个IBM JVM,所以我们不能使用jvisualvm和Attach API。
您可以一直捕获一个完整的堆转储?我知道您使用的是IBM JVM,但是这个页面似乎表明有一种方法。