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