首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java对象的大小

Java对象的大小
EN

Stack Overflow用户
提问于 2015-03-19 11:28:31
回答 2查看 183关注 0票数 1

Java对象的最小大小是8个字节(只有对象头),

Java中对象的内存消耗是多少?

如果在表示java对象的C++类中,

http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/9b0ca45cd756/src/share/vm/oops/oop.hpp

我看到这个班有更多的成员。

代码语言:javascript
复制
class oopDesc {
  friend class VMStructs;
 private:
  volatile markOop  _mark; // this is the object header
  union _metadata {
    wideKlassOop    _klass;
    narrowOop       _compressed_klass;
  } _metadata; // what about size of this member?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-19 11:33:42

这是可能的,因为在32位JVM中,对象包含4个字节的标记头和4个字节的类引用。标记标头包含不同的信息,取决于对象类型(以位为单位的大小):

普通对象->未使用:25散列:31 cms_free:1年龄:4 biased_lock:1锁:2

偏置对象-> JavaThread*:54个时代:2 cms_free:1年龄:4 biased_lock:1锁:2

票数 1
EN

Stack Overflow用户

发布于 2015-03-19 11:41:12

因为头数据是二进制编码的。当通过JVMTI或本机调用访问此信息时,该二进制数据将被分解为具有更大范围的游侠的数据类型。

此外,这些大小是实现细节,取决于VM的比特性和VM使用所谓的压缩oops的事实。您可以使用分布在JOL工具中的OpenJDK读取实例的实际头。此外,您可以在源代码中找到标头编码的文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29143399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档