使用 PERFORM JVMSERVER SPI 生成 Java 堆栈跟踪

PERFORM JVMSERVER(jvmserver ) JVM STACKTRACE 为在 CICS® 任务上运行的 JavaJava 线程生成 Java 堆栈跟踪。

关于此任务

此命令提供了一种方法来生成正在运行 CICS 任务的 Java 线程的堆栈跟踪。 堆栈跟踪提供执行期间当前时间点的 Java 调用堆栈的报告。 它可用于了解暂挂 Java 应用程序的方法以及该方法的运行方式。

发出该命令时,将找到绑定到 CICS 任务的 Java 线程,然后将对该线程的 JVM 日志文件 (dfhjvmlog) 生成堆栈跟踪。

过程

  1. 标识 Java 线程的 CICS 任务号。

    INQUIRE TASK SPI 可用于标识长时间运行的任务。 INQUIRE PROGRAM SPI 可用于标识其中哪些任务是 Java 程序。

  2. 运行 PERFORM JVMSERVER(jvmserver) JVM STACKTRACE TASK(tasknum) 命令。

结果

在 JVM 服务器的 JVM 日志文件 (dfhjvmlog) 中生成在具有指定任务号的 CICS 任务上运行的 Java 线程的堆栈跟踪。

示例

图 1。 JVM 日志文件中用于任务 42 的堆栈跟踪的示例输出。
2024/01/01 00:00:00.000000 UTC ? [EVENT_RESPONDER] [com.ibm.cics.jvmserver.spi] [StackTraceAction] @System: driveCommand() - Dump of thread "JVMSERV.TASK42.TRAN", CICS task: "42", state: TIMED_WAITING, priority: 5
    java.lang.Thread.sleepImpl(Native Method)
    java.lang.Thread.sleep(Thread.java:977)
    java.util.concurrent.TimeUnit.sleep(TimeUnit.java:397)
    com.example.App.main(App.java:42)
    ...