美文网首页
java new一个object对象占用多少内存

java new一个object对象占用多少内存

作者: tracy_668 | 来源:发表于2018-04-22 22:11 被阅读150次

    在java中,一个引用在32位jdk中占用四个字节,64位jdk是8字节。一个对象由对象头,对象实际数据,以及对齐填充(可能存在)三部分组成。

    对象头: 包括_mark:markOop : 用于存储对象状态信息,比如hashcode,对象年龄(经历gc的次数),是否被当作锁同步,等等信息, 并非全部信息而是有选择性记录一些。_klass:klassOop,类元数据指针,指向一个描述自身的元数据的对象。

    对象实例数据: 笼统的说,基类声明的实例字段会出现在派生类申明的实例字段之前。

    java.lang.String:

    _mark: markOop 4字节

    _klass: klassOop 4字节

    value:char[]------------------------》 typeArrayOopDesc:  在java中数组也是一个对象

    offset: int                                         _mark

    count: int                                         _klass

    hash: int (哈希缓存)                        _length=3

                                                            [0]='h' [1]='e'[2]='l'

    这揭示了string对象在内存的本质情况。

    receiver.instanceMethod(), receiver实际作为隐式参数传入,《==》instanceMethod(receiver)

    instance.StaticMethod()   <==> instance.class.StaticMethod(),  语法糖而已。

    相关文章

      网友评论

          本文标题:java new一个object对象占用多少内存

          本文链接:https://www.haomeiwen.com/subject/nofhlftx.html