Java中的对象大小
发布时间:2020-12-15 08:49:03 所属栏目:Java 来源:网络整理
导读:假设我有: Class A{ int a;}A obj = new A(); 然后obj的大小是多少?它是否与int大小相同,就像在C中一样? 如果我能弄清楚这一点,那么我可以在不使用数据库的情况下将大型HashMap保留在RAM中. 提前致谢. 编辑 朋友们, 其实我有: HashMapLong,ListT map; 和
假设我有:
Class A{ int a; } A obj = new A(); 然后obj的大小是多少?它是否与int大小相同,就像在C中一样? 如果我能弄清楚这一点,那么我可以在不使用数据库的情况下将大型HashMap保留在RAM中. 提前致谢. 编辑 朋友们, 其实我有: HashMap<Long,List<T>> map; 和 class T{ private int a; private int b; private int c; // constructor,getters and setters } 并且地图的大小可能会增加到10000000个密钥,对于每个密钥,我将有100-1000的大小列表. 整个地图会留在堆里吗? 编辑2 当我用大约70000个密钥加载地图时,当我将其序列化为文件时,文件大约为18 MB,那么我的地图堆中是18 MB吗? 解决方法
它可能依赖于JVM,但实际上,对于32位JVM,对象= 8字节的头字段.标题包含对类的Id引用.
字段大小取决于字段类型,引用 – 8字节,布尔值 – 1字节等 除了对象对齐到8个字节.那是你的A需要16个字节.最小大小= 8个字节,没有字段. 更多这里http://www.javamex.com/tutorials/memory/object_memory_usage.shtml 如果使用Oracle JVM,则可以使用sun.misc.Unsafe逐字节地调查对象结构. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |