<分区>
更新
我试过
的答案In Java, what is the best way to determine the size of an object?
但是当我尝试下面的代码时,下面的代码给了我 16
public class MemoryTest {
public static void main(String[] args) {
System.out.println(ObjectSizeFetcher.getObjectSize(new ArrayList<>().add(new DummyObject())));
}
}
而16不是我要找的,所以我又问了这个问题。 这道题还是重复题吗?
我想检查一个对象的内存使用情况,这是我尝试过的。 ( java 8)
// Dummy Object class
public class DummyObject {
int dummy;
}
// Separate class to check memory
public class MemoryTest {
public static void main(String[] args) {
Runtime runtime = Runtime.getRuntime();
long before = runtime.totalMemory() - runtime.freeMemory();
DummyObject obj = new DummyObject();
long after = runtime.totalMemory() - runtime.freeMemory();
System.out.println(after - before);
}
}
结果为“0”
谁能告诉我
1. 为什么结果是0
2. 什么是衡量对象内存使用的正确方法
提前致谢
更新
当我在 Android 项目中尝试如下相同的代码时,(SDK 版本 23)
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Runtime runtime = Runtime.getRuntime();
long before = runtime.totalMemory() - runtime.freeMemory();
DummyObject obj = new DummyObject();
long after = runtime.totalMemory() - runtime.freeMemory();
System.out.println("test memory: " + (after - before));
}
}
结果是“680”
是什么造成了这种差异,为什么?