【发布时间】:2015-07-12 20:04:53
【问题描述】:
JOL 工具可以计算对象的内存布局。
我注意到,静态字段不参与计算,例如:
public class Foo {
private static final int i = 1;
private char value;
public Foo(char value) {
this.value = value;
}
}
那么,
System.out.println(ClassLayout.parseClass(Foo.class).toPrintable());
给出以下输出:
com.kishlaly.Foo object internals:
OFFSET SIZE TYPE DESCRIPTION VALUE
0 12 (object header) N/A
12 2 char Foo.value N/A
14 2 (loss due to the next object alignment)
Instance size: 16 bytes (estimated, the sample instance is not available)
Space losses: 0 bytes internal + 2 bytes external = 2 bytes total
private static final int在内存中的什么位置?
【问题讨论】:
-
i显然没有存储在对象实例中(这就是static的意思)。它的确切放置位置取决于 JVM。 (我不知道更多细节,因此我评论而不是回答。) -
是的,问题是静态变量在哪里=)
标签: java java-memory-model object-layout jol