gpt4 book ai didi

java - Java中的对象大小

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:29:41 24 4
gpt4 key购买 nike

假设我有:

Class A{
int a;
}

A obj = new A();

那么obj的大小是多少?它的大小是否与 int 大小相同,就像在 C 中一样?

如果我能弄清楚这一点,那么我就可以在不使用数据库的情况下将大型 HashMap 保存在 RAM 中。

提前致谢。

编辑

friend ,

其实我有:

HashMap<Long, List<T>> map;

class T{
private int a;
private int b;
private int c;
// constructor, getters and setters
}

map 的大小可能会增长到有 10000000 个键,对于每个键,我将有大小为 100-1000 的列表。

整个 map 会保留在堆中吗?

编辑 2

当我用大约 70000 个键加载 map ,并将其序列化到文件时,文件大约有 18 MB,那么我的 map 在堆中是否为 18 MB?

最佳答案

它可能取决于 JVM,但实际上,对于 32 位 JVM,对象 = 8 字节 header + 字段。 header 由 Id + 对类的引用组成。

字段大小取决于字段类型,引用 - 8 个字节, boolean 值 - 1 个字节等

此外,对象对齐到 8 个字节。那就是你的 A 需要 16 个字节。最小大小 = 8 字节,无字段。

更多信息 http://www.javamex.com/tutorials/memory/object_memory_usage.shtml

如果您使用 Oracle JVM,您可以使用 sun.misc.Unsafe 逐字节地研究对象结构。

关于java - Java中的对象大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14057192/

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