我正在开发一个 JVMTI 代理来监视应用程序的内存使用情况。我已经设法使用字节码检测来监视堆上的内存分配,以便在分配新对象/数组时调用本机方法。但是我真的很困惑如何确定堆栈上分配的内存量。如果您能提供任何想法、提示或链接,我将不胜感激。
问问题
248 次
1 回答
2
您希望从 JVMTI 界面获得多少细节?看起来它只报告逻辑 Java 堆栈帧信息,这意味着您无法找出实际使用了多少运行时堆栈空间,但您可以使用jmethodID
来确定Java 堆栈帧的布局以做出合理的猜测(局部变量的数量在编译时针对特定方法是固定的,请参阅GetLocalVariableTable)。本机方法的堆栈帧将不可见。并且存储在堆栈中的其他 JVM 状态(例如,调试信息或 JIT 使用的空间,以及线程基础结构)也将不可见。
于 2012-12-08T16:10:08.867 回答