当前位置: 首页 > news >正文

四川省建设厅注册管理中心网站wordpress 是免费的吗

四川省建设厅注册管理中心网站,wordpress 是免费的吗,wordpress只有英文版,怎么补网站漏洞一、说一说JVM中对象的内存布局?new一个对象到底占多大内存? 话不多说,看下图,对象的内存布局图 一个对象的内存布局主要由三部分组成:对象头(Object Header)、实例数据(Instance D…

一、说一说JVM中对象的内存布局?new一个对象到底占多大内存?

话不多说,看下图,对象的内存布局图

一个对象的内存布局主要由三部分组成:对象头(Object Header)、实例数据(Instance Data)和对齐填充(Padding)。下面分别介绍这三部分:

对象头(Object Header)

  • Mark Word:存储对象自身的运行时数据,如哈希码、GC分代年龄、锁状态标志等。这部分信息是与对象自身相关的元数据。
  • 类型指针:指向对象类型数据的指针,即该对象属于哪个类的实例。这个地址用于访问类型数据区中的类信息,包括方法表和其他静态变量。

实例数据(Instance Data)

  • 这一部分存放着对象真正有效信息,也就是程序中定义的各种类型的字段内容。这些字段按照从父类到子类的顺序分配内存,同时相同宽度的字段会被分配在一起,以优化空间使用效率。此外,JVM还可能对字段进行重新排序以进一步优化性能,这一过程称为字段排列(Field Layout)。

对齐填充(Padding)

  • JVM要求对象的起始地址必须是8字节的整数倍,这是为了提高CPU缓存命中率和访问速度。

而数组类型的对象,还有4个字节的数组长度字段,所有new一个对象需要的内存大小为:

8byte(对象头) + 4byte(类型指针) + 实例数据 + 填充字段 + 4byte数组长度(若为数组类型)

二、阐述对象的内存分配策略

整体策略如下图所示:

我们来剖析一下:

首先判读是否在栈上分配

  • 在现代JVM中,编译器可能会执行逃逸分析来判断新创建的对象是否只在当前方法或线程内使用。如果一个对象不会“逃逸”出方法的作用域或者被其他线程引用,那么它可以安全地分配在栈上而不是堆上,这被称为标量替换(Scalar Replacement)。这种优化可以减少垃圾回收的压力,并提高性能。

大对象直接进入老年代

  • 如果对象的大小超过了某个阈值(可以通过-XX:PretenureSizeThreshold参数配置),JVM可能会决定直接将该对象分配到老年代,以避免因频繁复制而增加的GC开销。对于非常大的对象,这样的分配策略能够提升性能。

线程本地分配(Thread Local Allocation Buffer, TLAB)

  • 为了减少多线程环境下的锁竞争,每个线程都有自己的小块内存区域(在堆中),称为TLAB。当一个线程需要分配对象时,它首先尝试在自己的TLAB中分配。只有当TLAB空间不足时,才会触发全局同步操作以分配新的TLAB或者直接从共享堆中分配。

对象优先分配到Eden区

  • 如果对象不适合上述任何一种特殊处理,则按照标准的内存分配流程进行,即在年轻代的Eden区分配。如果Eden区没有足够的空间,就会触发一次Minor GC;若GC后仍无足够空间,可能需要晋升部分对象到老年代,甚至引发Full GC。

三、new一个对象都有哪些步骤?

我们来看对象的创建过程,如下图:

1.类加载检查

  • JVM首先检查该类是否已经被加载到内存中。如果尚未加载,则会触发类加载过程,包括加载、链接(验证、准备、解析)和初始化。

2.分配内存

  • 为新对象分配内存空间。这一步骤涉及到如何从堆内存中划分出足够的空间给新对象。内存分配的方式取决于JVM的实现和配置,例如快速失败分配(bump-the-pointer)、线程本地分配缓冲区(TLAB, Thread Local Allocation Buffer)等。
  • 分配过程中还需要考虑对象的对齐填充,确保对象占用的内存是8字节的整数倍,以及处理并发情况下的线程安全问题。

3.内存空间初始化(初始化零值)

  • 在分配完内存后,JVM会对对象的实例变量进行零初始化(zero-initialization),即所有数值型字段被设为0或0.0,引用类型字段被设为null,boolean类型字段被设为false。

4.设置(对象头)

  • 初始化对象头的信息,如哈希码、GC分代年龄、锁状态标志等,并设置指向类元数据的指针,以便知道对象属于哪个类。

5.对象初始化(执行构造函数)

  • 调用类的构造方法来初始化对象的状态。构造方法可以设置成员变量的具体值,并执行其他必要的初始化操作。这是用户代码控制的部分,程序员可以在构造方法中编写自定义逻辑。
http://www.yayakq.cn/news/151047/

相关文章:

  • 建设网站如何进行网站备案做移动网站优
  • 莆田网站建设方案优化vs网站开发效果图
  • 网站设计公司名称WordPress开启me
  • 久其软件公司网站东京购物商城
  • 合肥能做网站的公司在网上做软件挣钱的网站
  • 建设短视频网站开发电商平台多少钱
  • 汽车用品网站建设网站标题前的小图标怎么做
  • 网站建设通俗讲南宁网站建设活动
  • 西安哪家网站做的好上海网站建设开发哪
  • sql 新建网站微信公众号app下载安装
  • 焦作建设银行网站xd网页设计教程
  • 外贸工具大全网站电子商务教材电子版
  • 网站如何防止别人抄袭在线制作印章diy印章
  • 襄阳php网站开发无锡网站制作难吗
  • 请别人做网站如何交付久久建筑网西瓜视频
  • 自己做手机版网站制作网页游戏开服表就找新壹玩
  • 网站问答平台推广方案忻州做网站公司
  • 公司部门职能介绍网络seo首页
  • 做网站网站wordpress 上传文件路径
  • 高端网站制作网址天津北京网站建设
  • 网站建设时间表公司网站开发费用怎么做账
  • 网站建设参考书504 wordpress
  • 南宁网站制作开发公司二维码制作小程序免费
  • 做一个网站后期维护需要多少钱上海哪家网站建设比较好
  • 达州网站建设wordpress播放器问题
  • 罗湖商城网站设计制作黔西南北京网站建设
  • 餐饮业网站建设石家庄飞数科技
  • 宁波定制网站建设解决方案wordpress 判断置顶
  • 厦门网站定制那里可以做工作室做网站
  • 做旅行社网站wordpress的ftp设置