1.1)对象创建

对象的创建过程
1.当虚拟机遇到new指令时, 首先将去检查这个指令参数能否定位到常量池对应的类的符号引用, 并检查这个符号代表的类是否被加载验证解析过, 如果没有先执行上述过程
2.类加载检查通过后, 接下来虚拟机将为新生对象分配内存, 对象所需的内存大小在类加载完成后便可完全确定
3. 对象在堆中分配内存的方式分为两种, 指针碰撞和空闲列表, 取决于你采用的垃圾收集器的算法实现是否有内存碎片化情况出现, Serial和ParNew等带Compact过程的收集时, 采用的分配算法是指针碰撞, 而是用CMS这种基于Mark-Sweep算法的收集时, 通常采用空闲列表
4.由于堆中大部分内存是线程共享的, 而且创建对象发生的一般都很频繁, 所以一般需考虑并发情况, 虚拟机采用的是CAS方式保证更新操作的原子性, 另一种是TLAB即本地线程缓冲区, 将创建内存的线程隔离开来使线程独立, 这种方式TLAB空间容量有限制, 所以当空间用光之后, 仍需要同步锁
5.内存分配完成后, 虚拟机将初始化的内存空间都初始化为零值
6.接下来, 虚拟机对对象设置一些信息, eg: 此对象是哪个类的实例, 如何才能找到类的元数据信息, 对象的哈希码, 对象的GC分代年龄信息(可通过参数设置阈值), 是否启用偏向锁等, 这些信息存在对象头
到此, 从虚拟机的视角看来, 一个对象已经产生, 而从Java程序角度看, 对象创建才刚刚开始, 字节码的角度看, 也就是new指令执行, 紧接着需要执行<init>方法, 将对象按照客户端程序的意愿进行初始化, 执行后一个对象才算真正创建完成
 
对象的内存布局
对象在内存中大致分为三个部分: 对象头, 实例数据, 对齐填充
1.对象头: 又分两部分信息, 第一部分用于存储对象自身的运行时数据, 如哈希码,GC分代年龄,锁状态标识,线程持有的锁,偏向线程ID,偏向时间戳等等, 另一部分是类型指针, 即对象指向它的类元数据的指针, 但并不是所有的虚拟机实现都在对象头上保留这个指针, 或者说, 查找对象的元数据信息并不一定经过对象本身
2. 实例数据: 也就是程序代码中定义的各种类型的字段内容, 无论是从父类中继承的还是子类中存在的都需要记录下来, 这部分的定义顺序收到虚拟机分配参数策略和Java源码中定义顺序的影响, HotSpot虚拟机默认的分配策略是longs/doubles, ints, shorts/chars, bytes, booleans, oops, 在满足这个条件的前提下, 父类中出现的变量会出现在子类前
3.对齐填充: 由于HotSpot要求对象的大小必须是8字节的整数倍, 而对象头的部分正是8字节的一倍或者两倍, 所以当实例数据没有对齐时, 需要通过对齐补充来不补全
 
对象的访问定位
Java程序中通过栈上的refernce数据来操作堆上的具体对象, 方式一般有两种
1.句柄: 这种方式在Java堆中会划出一块内存作句柄池, 其中包含每个对象的两种指针分别是: 到对象实例数据的指针和到对象类型数据的指针
优点: 在栈中的refernce存储的是稳定的句柄地址, 对象被移动时只会改变句柄中的实例数据指针, 而refence本身不改变


 
 
2.直接指针: reference中存的直接就是对象地址
优点: 速度更快


 
乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值