鉴于此堆转储
size no. of obj class
515313696 2380602 char[]
75476832 614571 * ConstMethodKlass
57412368 2392182 java.lang.String
44255544 614571 * MethodKlass
33836872 70371 * ConstantPoolKlass
28034704 70371 * InstanceKlassKlass
26834392 349363 java.lang.Object[]
25853848 256925 java.util.HashMap$Entry[]
24224240 496587 * SymbolKlass
19627024 117963 byte[]
18963232 61583 * ConstantPoolCacheKlass
18373920 120113 int[]
15239352 634973 java.util.HashMap$Entry
11789056 92102 ph.com.my.class.Person
我的应用程序中只有 1 节课,ph.com.my.class.Person
. 类定义如下:
public class Person {
private String f_name;
private String l_name;
}
在堆转储中,是否Person size (11789056)
包括 2 个字符串变量占用的内存?或者将f_name
andl_name
计入String
班级,在这种情况下大小为 57412368?
更新 - 添加了后续问题:
所以让我们说每个实例:
- f_name 大小为 30
- l_name 大小为 20
- 人的大小是75
如果有10个Person实例,就会有
- 10 * (30+20) = 500
- 10 * 75 = 750
500 将计入 String 或 char[] 吗?随后,750 人是否会被计算在内?