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

标签 java reflection reference jvm

我需要通过在给定类的实例上调用特定方法来停止进程。这个进程已经运行了一天,如果我硬关闭它,我会失去很多工作。由于 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/

相关文章:

java - 使用 Java Reflection 来确定要实例化哪个类

java - newInstance() 的实例化异常

c++ - 是否可以使用右值引用作为 pimpl 句柄?

java - 如何为仅包含对下一个节点的引用的节点实现HashCode()?

Java 为什么局部变量不能隐藏而全局变量可以?

java - 编译器能否通过泛型方法验证对象的泛型类型?

java - 用户猜完 6 个随机数后,游戏还剩下 1 个

c# - 在运行时动态创建具有与其所有者相同类型的字段的类型

java - 如何将 Flux<List<T>> 转换为合并的 Flux<T>?

c++ - 从按值构造函数参数初始化的引用成员