1

我是 C 和 C++ 的初学者,我不太了解如何使用 JVMTI。我想获取 java 对象的物理内存位置(十六进制)。可能吗?我不想得到像“从这个分析器等获取它”这样的答案......到目前为止,我在 linux 终端中使用这个命令:

java -showversion -agentpath:../CPrg/DLL/bin/Debug/libDLL.so SimpleMemAlloc

libDLL.so 是我使用 c 创建的库,我在其中使用我的 java 应用程序运行它。它确实有效,它与我的代码一起运行,但我不知道如何获取我想要的数据。

例如,我正在使用这个简单的代码:

public class SimpleMemAlloc{

    Object [] oarray = new Object[10000];

    public static void main(String args []){
        Object [] o= new Object[100];
        for (int i= 0; i<100; i++){
        o[i] = new Integer [10000];
        }
    }
}

我想获取我创建的每个新整数数组的内存位置(0x ...)...如果我使用 jvmti 获得一个不错的示例代码,我将非常高兴

4

1 回答 1

0

如果对象没有覆盖hashCode()默认实现,则将对象的内部地址作为整数返回。同样,这可能不是最好的方法。

这通常通过将对象的内部地址转换为整数来实现,但 JavaTM 编程语言不需要这种实现技术。

更多信息请点击这里

于 2011-12-28T18:21:29.207 回答