范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Java对象背后的故事(中)

  在上篇文章中介绍一个对象的组成部分主要分为三部分。对象头、实例数据、填充对齐。实例数据。这里我们就继续分析这三部分中具体的组成情况。
  为了证实一个对象存在这3个部分。这里 使用 JOL(Java object layout 是分析 JVM 中对象布局的工具,该工具大量使用了 Unsafe、JVMTI 来解码布局情况)来分析。这里使用0.16版本。目前市面的电脑绝大多数多是64位操作系统,这里也基于64位操作系统来展开讲解,32位的大家知道就可以了。本人电脑操作系统 MacOS Monterey 12.2.1。   org.openjdk.jol  jol-core  0.16 
  Hotspot 虚拟机文档 "oops/oop.hp" 有对 Markword 字段的定义  Bit-format of an object header (most significant first, big endian layout below):   32 bits: -------- hash:25 ------------>| age:4    biased_lock:1 lock:2 (normal object) JavaThread*:23 epoch:2 age:4    biased_lock:1 lock:2 (biased object) size:32 ------------------------------------------>| (CMS free block) PromotedObject*:29 ---------->| promo_bits:3 ----->| (CMS promoted object)    64 bits: -------- unused:25 hash:31 -->| unused:1   age:4    biased_lock:1 lock:2 (normal object) JavaThread*:54 epoch:2 unused:1   age:4    biased_lock:1 lock:2 (biased object) PromotedObject*:61 --------------------->| promo_bits:3 ----->| (CMS promoted object) size:64 ----------------------------------------------------->| (CMS free block)   unused:25 hash:31 -->| cms_free:1 age:4    biased_lock:1 lock:2 (COOPs && normal object) JavaThread*:54 epoch:2 cms_free:1 age:4    biased_lock:1 lock:2 (COOPs && biased object) narrowOop:32 unused:24 cms_free:1 unused:4 promo_bits:3 ----->| (COOPs && CMS promoted object) unused:21 size:35 -->| cms_free:1 unused:7 ------------------>| (COOPs && CMS free block)
  理论上一个空对象的大小为对象头大小12字节(Markword 8字节、class pointer 4字节),考虑到8字节对齐填充,需要补齐4字节为8 的2倍16字节。
  我们来new一个空对象  public class AnalysisObject { }
  使用JOL分析AnalysisObject对象信息      public static void main(String[] args) {        AnalysisObject object = new AnalysisObject();         System.out.println(ClassLayout.parseInstance(object).toPrintable());     }
  输出结果信息  com.github.sylphlike.web.AnalysisObject object internals: OFF  SZ   TYPE DESCRIPTION               VALUE   0   8        (object header: mark)     0x000000000000000d (biasable; age: 1)   8   4        (object header: class)    0x00066a48  12   4        (object alignment gap)     Instance size: 16 bytes Space losses: 0 bytes internal + 4 bytes external = 4 bytes total
  表头依次为 OFF:在内存中的起始位置 SZ:占用大小(字节)TYPE DESCRIPTION: 类型 VALUE:具体值
  (object header: mark) 对应MarkWord,占用大小8byte
  (object header: class) 对应 class pointer 占用大小4byte
  (object alignment gap) 对应 Padding 占用大小为4
  Instance size 对象占用的总字节数大小
  Space losses 对应对齐填充大小
  接下来我们给对象添加一下属性方法。  public class AnalysisObject {     private String s;     private int i;     private boolean b;     private double d;     private Integer in;     public void method(){} }
  输出结果信息  com.github.sylphlike.web.AnalysisObject object internals: OFF  SZ                TYPE DESCRIPTION               VALUE   0   8                     (object header: mark)     0x000000000000000d (biasable; age: 1)   8   4                     (object header: class)    0x00066a48  12   4                 int AnalysisObject.i          0  16   8              double AnalysisObject.d          0.0  24   1             boolean AnalysisObject.b          false  25   3                     (alignment/padding gap)     28   4    java.lang.String AnalysisObject.s          null  32   4   java.lang.Integer AnalysisObject.in         null  36   4                     (object alignment gap)     Instance size: 40 bytes Space losses: 3 bytes internal + 4 bytes external = 7 bytes total
  从结果中看出对象占用40字节大小。Instance size: 40 bytes. 一共5个属性,一个方法。int占4字节、boolean占1字节、double占8字节、Integer和String为引用类型所以占4字节。
  从上面结果中我们还发现有两种填充方式  3 bytes internal 和 4 bytes external. 为什么存在两种填充方式?这里先给出结论。后面再探讨该问题;出现(alignment/padding gap)有以下两种情况
  1、如果都是基本数据类型,只有当不存在4字节的,或者小字节加起来填不满4字节,且所有字节和大于4的时候触发alignment/padding
  2、如果实例数据存在非基本数据类型,也就是引用数据类型,先罗列并计算所有的基本类型数据的字节和,如果字节和不是4的倍数,那么此时会触发alignment/padding。
  Markword中存放的数据在对象的整个生命周期内都是非常关键的,放在后后一篇文章中单独来阐述。

袁心玥亮相于天津女排全家福,集齐小半个国家队欲争队史第15冠排超联赛开战在即,各队全家福也正式出炉,之前争议颇多的袁心玥也终于亮相,出现在了天津女排新赛季全家福中,这算是终结了之前的各种谣传,新赛季时,袁心玥将身披天津女排战袍,向冠军发起冲回归国乒无望,朱雨玲最新身份曝光,乒乓球生涯有遗憾,但又何妨目前2022年全国乒乓球锦标赛正如火如荼的进行,比赛更是精彩纷呈,扣人心弦,只因乒乓球全国赛高手云集,奥运冠军世界冠军在全国比赛中输球也是屡见不鲜。不过在乒乓球全锦赛的历史上,有一曝冬奥冠军刘少林刘少昂将入籍中国!投奔恩师,短道队实力猛增北京时间11月9日凌晨重磅消息,匈牙利媒体通过社交平台账号发布消息,标题是刘氏兄弟正在更改国籍,称该国短道速滑冬奥会金牌得主刘少林刘少昂兄弟俩将更改国籍,不再为匈牙利效力。左边是弟辽宁名宿辟谣郭艾伦缺席国家队真正原因,球迷欠杜锋一个道歉北京时间11月8日,中国男篮已经顺利达到伊朗德黑兰,经过短暂的三天调整后,将会在11号晚上935分迎来世预赛第五窗口期的首场比赛,迎来亚洲老对手伊朗男篮的挑战,此次中国男篮出征可以职业球员的腿为何是光溜溜的,没有一丝的腿毛无论是在看比赛直播还是看新闻图片,如果你留意一下的话就会发现一个小细节,那就是职业球员的腿总是光溜溜的没有一丝腿毛,这是为什么呢?有些人说是怕体毛越位,有些人说是为了美观,还有些人朱婷归来,拿全队最高分,为中国女排带来新希望11月6日,张常宁度过了自己的27岁生日。11月6日,征战意甲的朱婷迎来了自己时隔466天的再次首发。23天之后,她将迎来自己的28岁生日。11月3日,中国排协宣布原定11月10日WILL3。0!容声冰箱新品发布大片11月22日即将上演11月22日,三亚!容声冰箱年度新品发布会终于排定档期,容声WILL3。0产品将在此次发布会上惊艳亮相。在经历了主打养鲜的容声WILL1。0产品主打养鲜超空间的WILL2。0产品后无雾净化,生态家居的新宠舒乐氏无雾加湿器评测透彻产品,明确结果,做你最想关注的评测内容打造优质的家居生态环境,是每个家庭都特别注重的大问题,其中空气质量湿度状态,是与生态环境息息相关又特别重要的一个环节,就简单拿湿度来说吧,CPU性能过剩,你有多久没换过电脑了?你有多久没有换过电脑了?近年来,随着电脑处理器性能过剩,对于不玩游戏的用户而言,几乎找不到换电脑的理由。咱们就分别聊一聊台式电脑和笔记本电脑。目前大多数台式机用户,主要用途就是办公鸿蒙OS3。1和4。0逐渐浮出水面华为P60和华为Mate60,要变更强了众所周知,HarmonyOS的设计思路也不仅限于手机产品,还同时支持全场景智能终端及其衍生,如此大融合且易操作的系统设计理念确实带来了不错的体验。因为从鸿蒙OS系统诞生到现在,已经Steam10月软硬件排行榜Win7Win10份额回升,GTX1060继续霸榜在很多人眼中,PC行业是典型的夕阳产业。原因很简单硬件卷到头了,软件开发也接近饱和,而且门槛也越来越高,新玩家想要入局,连门槛都找不到是不是有点像当下的手机行业?当然,最关键的原因
嫪毐之乱背后的宫斗戏码受李开元和芜史启发,对嫪毐之乱有一个新的推测和猜想这场变乱实际上是秦王嬴政的嫡祖母华阳太后和母亲赵姬及各自代表的政治势力之间的一场权力争夺战。嫪毐等人(包括幕后的太后赵姬,此时相邦大明最强太子当面顶撞朱元璋,朱标凭什么这么受宠?元朝至正十五年,朱标出生了。可以说,他的生活条件应该比他的父亲朱元璋好亿点。在这个时候,朱元璋已经离开起义军领袖郭子兴,白手起家,自立门户,打拼得相当红火。朱标出生这一年,朱元璋二离天堂太远,离美国太近为何美国是墨西哥毒品泛滥的根源美国是世界上最强大的国家,也是世界头号经济强国,人均GDP接近7万美元,还有着相对完善的社会福利制度,与美国只有一墙之隔的墨西哥,则毒品泛滥帮派林立,社会动荡不安。墨西哥流传着这样此次机构改革是改革的拐点改革的改革从外求西方转向内求自身此次国务院机构改革,实际上也是中国改革自身的拐点,甚至也是近代以来中国历史的拐点。以前的改革,在方向和方式上,都是朝向西方的,但此次改革却是朝向中国自身的。在以前的改革思维中,以中英国太空探索负责人称外星人肯定存在据镜报报道,英国太空探索部负责人利比杰克逊说,人类不可能是宇宙中唯一的生命形式。他表示,外星人的存在不是一个是否存在的问题,而更多的是一个我们何时能找到更多答案的问题,以解决这些紧会拐弯的光,带领人类刷新了对宇宙的认知光有重量吗?它受不受引力的作用?这个问题曾引起许多著名物理学家的好奇心,正因为对它不懈地思索,促使爱因斯坦建立著名的广义相对论,而对这个问题的实验观察,又使广义相对论的正确性得以验零跑抢走新能源车的定价权做用户的代工厂,用更少的钱,买更好的产品。打掉虚高的品牌溢价,给用户最具诚意的产品。3月1日的零跑新品发布会上,零跑汽车董事长创始人朱江明不断重复着品价比的发展思路。在他看来,现阶数字化时代,你应该知道的BI我曾经看到有人在讨论过商业智能BI的部署对于企业是否有实际意义,现在市场的数据已经证明商业智能BI在商业世界中,在企业的实践中证明了自己的价值,得到了广泛的认可。一什么是BI有一点万物互联6G概念领涨数字经济,重点概念股梳理6G是实现万物互联和数字经济发展的核心技术东风吹,战鼓擂!数字经济的东风愈刮愈烈,今天扩散到了通讯6G,6G是实现万物智联的关键底层技术,是数字经济发展的核心技术。在流浪地球2中,辛巴炮轰情感主播造假背后,平台去头部化切割利益蛋糕快手知名主播辛巴又在直播间开骂了。3月8日,辛巴在快手平台直播过程中,指责快手纵容情感主播制造虚假人气和虚假数据坑骗老人,剧本编排骗老人。直播间造假十万加,快手你们管不管?同时质问诸葛亮自比管仲,历史中二位圣贤才能可否高下立判?世人皆言诸葛孔明乃神人也!而诸葛亮却自比管仲乐毅。这到底是自谦,还是装,抑或是二者皆有。大家好,我是潜心,把历史还给百姓,用心传递智能量。今天好兄弟们一起探讨一下诸葛孔明与管仲二人