我正在开发一个JVMTI代理程序,用于监控应用程序的内存使用情况。我已经成功地使用字节码注入来监视堆上的内存分配,以便在分配新对象/数组时调用本地方法。 但是,我真的很困惑如何确定堆栈上分配的内存量。 如果您能提供任何想法、提示或链接,我将不胜感激。
我正在开发一个JVMTI代理程序,用于监控应用程序的内存使用情况。我已经成功地使用字节码注入来监视堆上的内存分配,以便在分配新对象/数组时调用本地方法。 但是,我真的很困惑如何确定堆栈上分配的内存量。 如果您能提供任何想法、提示或链接,我将不胜感激。
jmethodID
来确定Java堆栈帧的布局以作出合理的猜测(特定方法的本地变量数量在编译时是固定的,请参见GetLocalVariableTable)。原生方法的堆栈帧将不可见。堆栈上存储的其他JVM状态(例如调试信息或JIT使用的空间和线程基础结构)也将不可见。