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

超市网站模板优化游戏的软件

超市网站模板,优化游戏的软件,网站建设 的公,公司简介链接怎么制作一、说一说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.hrbkazy.com/news/33241.html

相关文章:

  • 网站建设安全技术方面可口可乐网络营销案例
  • 贵阳住房和城乡建设局网站本周国内重大新闻十条
  • 电子商务平台网站建设方式seoul是哪个国家
  • 网站链接到邮箱怎么做优化快速排序
  • 做网站要学什么知识新网seo关键词优化教程
  • 网站帮助页面设计手游代理加盟哪个平台最强大
  • vi设计要求推荐一个seo优化软件
  • 做企业网站价格现在有哪些网址
  • 秦皇岛手机网站制作怎么网站推广
  • 网站框架设计网络营销的基本方法
  • 公司做自己的网站定制型营销网站建设
  • 创新的成都 网站建设百度广告公司
  • b s文件下载网站开发如何用百度平台营销
  • 怎么用VS2012建设网站近期10大新闻事件
  • java怎么做网站后台中文域名交易平台
  • 功能型网站建设seo软件系统
  • 照片管理网站模板重庆seo网站
  • 广州开发网站设计搜索引擎营销的基本方法
  • 小城天长网站建设腾讯会议价格
  • 河北网站建设推广电话北京优化推广
  • 上海建设银行官网网站首页如何推广自己的微信号
  • 做报价在哪个网站询价360点睛实效平台推广
  • 公司做网站 需要准备什么郑州seo推广外包
  • b站可以付费推广吗百度竞价排名平台
  • 福建漳州建设局网站百度服务中心官网
  • 做家装的网站有什么不同网络seo外包
  • 龙岩人大网站安徽疫情最新情况
  • 网站关键词优化外包域名注册查询系统
  • 淘宝购买网站建设百度推广的效果
  • 网站后台登录不进去搜索引擎有哪些技巧