gpt4 book ai didi

Java运行进程: view byte code at runtime of an arbitary process

转载 作者:行者123 更新时间:2023-12-01 08:47:41 25 4
gpt4 key购买 nike

使用 jmap 命令我可以查看变量及其状态。同样,是否有一个开源工具可以保存在 JVM 中运行的字节码?尽管我们有源代码,但有时它会发生变化 - 例如在 AOP 的帮助下。此外,运行时可能存在不同版本的代码,例如具有 2 个版本的 jar 的类路径...

目标是能够附加到我的系统上的进程,并将 JVM 的状态(包括字节代码)保存到文件中,以供进一步检查,而无需更改启动器中的任何内容。因此,我们在进程运行时进行连接,取出快照并分离(这样我们就不会过多干扰现有的生产系统)。

可以使用Open JDK或Oracle JDK来运行应用程序。

最佳答案

以下命令适用于 Oracle JDK(无法使用 OpenJDK 进行测试)

java -cp ${JDK_HOME}/lib/sa-jdi.jar \
-Dsun.jvm.hotspot.tools.jcore.filter=sun.jvm.hotspot.tools.jcore.PackageNameFilter \
-Dsun.jvm.hotspot.tools.jcore.PackageNameFilter.pkgList=sub.optimal \
sun.jvm.hotspot.tools.jcore.ClassDump \
12345

这将从 JVM 中转储 pid 12345sub.optimal 中的所有类。这些类被转储到当前目录sub/optimal/...

注意 正在运行的进程和上述命令中的 java 可执行文件必须具有相同的 JVM 版本。否则它将失败并出现类似的异常

VMVersionMismatchException: Supported versions are 25.112-b15. Target VM is 25.112-b6

关于Java运行进程: view byte code at runtime of an arbitary process,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42574100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com