【问题标题】:JVMTI profiling: calculating the amount of stack memoryJVMTI 分析:计算堆栈内存量
【发布时间】:2012-11-25 01:21:43
【问题描述】:

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

【问题讨论】:

    标签: java memory-management stack jvmti


    【解决方案1】:

    您希望从 JVMTI 界面获得多少细节?看起来它只报告logical Java stack frame information,这意味着您无法找出实际使用了多少运行时堆栈空间,但您可以使用jmethodID 来计算the layout of a Java Stack Frame 进行合理猜测(局部变量在编译时针对特定方法是固定的,请参阅GetLocalVariableTable)。本机方法的堆栈帧将不可见。并且存储在堆栈中的其他 JVM 状态(例如,调试信息或 JIT 使用的空间,以及线程基础设施)也将不可见。

    【讨论】:

    • 感谢您的回答。我认为这将是唯一的方法,但希望有一个更好的方法我没有看到。猜猜这是必须要做的。
    猜你喜欢
    • 2020-01-13
    • 2019-02-11
    • 2017-01-04
    • 2018-07-24
    • 2011-05-28
    • 1970-01-01
    • 2014-10-26
    • 2012-07-23
    相关资源
    最近更新 更多