gpt4 book ai didi

java - Java 存储 native 对象的位置

转载 作者:行者123 更新时间:2023-11-28 23:00:06 26 4
gpt4 key购买 nike

我一直在检查对象,我注意到 java.lang.String 的大小始终为 24 字节,无论它包含什么文本。

例如:

String str1 = "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest";
String str2 = "test";

使用此方法计算字符串的大小时:

String test = "hello";
for(int i=0; i<10000; i++){
test += test + i;
}
log.debug( Agent.inst.getObjectSize( test ) );

它告诉我两个字符串都是 24 个字节。

我知道所有对象只存储值的地址并且该值是静态的,但我不明白我在观察什么。怎么回事?

最佳答案

您使用的测量对象大小的技术太粗糙了:它只为您提供 String 实例本身的大小,而不是它引用的所有其他实例的大小——它的大小整个对象图。现有工具使用您使用过的粗略调用,并结合反射来遍历对象图的其余部分,在每个步骤中调用相同的方法。

具体来说,String将字符数据存储在char[]中,其对象大小与String占用的整体内存最相关code>,对于任何更长的字符串。

关于java - Java 存储 native 对象的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20455861/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com