gpt4 book ai didi

java - JVM - 在正在运行的(非检测的) session 中获取类的实例

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:28:06 25 4
gpt4 key购买 nike

我需要通过在给定类的实例上调用特定方法来停止进程。这个进程已经运行了一天,如果我硬关闭它,我会失去很多工作。由于 API 中的一个错误,GUI 连接错误并且没有调用正确的停止函数。我附加了一个交互式 Java (Scala) 解释器,所以如果我能掌握流程的实例,我就可以轻松调用正确的方法。

我不在调试 session 中,没有com.sun.jdi。我可以在堆栈跟踪转储中看到该实例,但 StackTraceElement 不包含实际实例,仅包含类和行号。

在没有特定检测的情况下,在运行的 session 中是否有任何方法可以通过它的类,通过线程转储来获取该实例?

最佳答案

可以使用 JVMTI 获取给定类的所有实例 IterateOverInstancesOfClass功能。请参阅 this answer 中的示例.

创建一个 JNI 库,它将使用上述函数找到所需的实例,并从 JNI_OnLoad 调用它的方法入口。然后从解释器控制台调用 System.load 来加载这个库。

关于java - JVM - 在正在运行的(非检测的) session 中获取类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40102428/

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