JVMTI性能分析:计算堆栈内存的数量

3

我正在开发一个JVMTI代理程序,用于监控应用程序的内存使用情况。我已经成功地使用字节码注入来监视堆上的内存分配,以便在分配新对象/数组时调用本地方法。 但是,我真的很困惑如何确定堆栈上分配的内存量。 如果您能提供任何想法、提示或链接,我将不胜感激。

1个回答

2
你希望从JVMTI接口中获得多少细节?看起来它只报告Java逻辑堆栈帧信息,这意味着你无法找出实际运行时堆栈空间的使用情况,但你可以使用jmethodID来确定Java堆栈帧的布局以作出合理的猜测(特定方法的本地变量数量在编译时是固定的,请参见GetLocalVariableTable)。原生方法的堆栈帧将不可见。堆栈上存储的其他JVM状态(例如调试信息或JIT使用的空间和线程基础结构)也将不可见。

谢谢你的答复。我想到这可能是唯一的方法,但还希望有一种更好的方法,但我没有看到。看来只能这样了。 - P.M.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接