我是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
获得一个很好的示例代码,我将非常高兴答案 0 :(得分:0)
如果对象没有覆盖hashCode()
,则默认实现将对象的内部地址作为整数返回。同样,这可能不是最好的方法。
这通常是通过转换内部地址来实现的 将对象转换为整数,但这种实现技术不是 JavaTM编程语言所要求的。
了解更多信息click here