java - JVM 堆栈自省(introspection)

标签 java jvm stack introspection

有没有一种方法可以在 JVM 上以编程方式检查堆栈的内容(包括值和值的类型以及当前指令点)(即使它是特定于供应商的)?

例如,我想检查当前激活帧并提取它所属的方法名称,以及堆栈变量。此外,我希望能够以这种方式迭代激活帧。

这可能吗?乍一看,JVMTI似乎允许这样做,但它意味着用作 native 界面。已经used实现一个可以做这些事情的 Java 库,显然 - 但这似乎有点过时了。我想知道是否有一个解决方案集成到 JVM api 中,或者其他一些允许这样做的跨平台 JVM 库。

最佳答案

我找到的最接近的是 Javaflow它将带有局部变量的堆栈保存为一个对象。您还可以使用它来将堆栈恢复到已保存的状态。

关于java - JVM 堆栈自省(introspection),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7446607/

相关文章:

java - 将元素从堆栈复制到队列

java - 通用方法语法 <Type>method()

java - Bluecove 中的身份验证 - Linux x64 无法正常工作

java - JVM 方法调用和远程调用在性能上有什么区别?

java - 在 Kotlin 中,为什么我的每个 Float 占用 128 位而不是 16 位?

Java 8 Streams API 和 Stack 类

java - 这个整数堆栈的 Java 链表表示有什么问题?

java - 如何将字符串转换为 float ?

java - 使用 java.io.RandomAccessFile,如何编写文件并不断在开头添加内容?

java - 计数/未计数循环和安全点 - `while (++i < someInt)` 是否被视为未计数循环?