对象的创建

 这里只考虑普通的Java对象,不包括数组和CLass对象。

当虚拟机遇到new指令时,先检查这个指令的参数是否在常量池中定位到类的符号引用。检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果有没,则先执行类加载过程。

 类加载检查通过后,虚拟机为新生对象分配内存-内存大小在类加载成功后即可确定。根据使用的GC收集器是否具有压缩整理功能可分两种方式:一是“指针碰撞”-占用内存和空闲内存在物理上有一个指针作为分界点来分离开来,;二是“空闲列表“-记录哪些内存可用,分配内存的时候找到足够大的内存块,然后更新列表记录。

由于在堆上为对象分配内容是非常频繁的行为,所以在并发为对象分配内存时候会碰到内存分配后,未来得及修改指针记录的情况(如果为对象A在P位置分配内存时,还未来得及对指针进行修改,对象B同时使用了原来的指针分配内存)。解决这个问题有两种方案:一是使用CAS配上失败重试的方式保证更新操作的原子性。另一种是把内存分配的动作按照线程划分在不同的空间之中进行,即每个线程在java堆中预先分配一小块内存-本地线程分配缓冲(Thread Local Allocation Buffer-TLAB),只有TLAB用完时,才需要同步锁定。可通过-XX:+/-UseTLAB参数来控制虚拟机是否使用TLAB功能。

内存分配完成后,执行初始化零值操作(如int为0,boolean为false,String为null),此时对象可直接使用。

接下来,虚拟机依据对象头(Object Header)对对象进行必要的设置,例如这个对象是哪个类的示例、找到类的元数据信息、对象的哈希码、对象的GC分代年龄。根据运行状态,设置偏向锁等信息。

new执行成功后,执行<init>方法,对对象进行初始化,一个真正的对象产生了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的影城管理系统,源码+数据库+论文答辩+毕业论文+视频演示 随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多生活之中,随之就产生了“小徐影城管理系统”,这样就让小徐影城管理系统更加方便简单。 对于本小徐影城管理系统的设计来说,系统开发主要是采用java语言技术,在整个系统的设计中应用MySQL数据库来完成数据存储,具体根据小徐影城管理系统的现状来进行开发的,具体根据现实的需求来实现小徐影城管理系统网络化的管理,各类信息有序地进行存储,进入小徐影城管理系统页面之后,方可开始操作主控界面,主要功能包括管理员:首页、个人中心、用户管理、电影类型管理、放映厅管理、电影信息管理、购票统计管理、系统管理、订单管理,用户前台;首页、电影信息、电影资讯、个人中心、后台管理、在线客服等功能。 本论文主要讲述了小徐影城管理系统开发背景,该系统它主要是对需求分析和功能需求做了介绍,并且对系统做了详细的测试和总结。具体从业务流程、数据库设计和系统结构等多方面的问题。望能利用先进的计算机技术和网络技术来改变目前的小徐影城管理系统状况,提高管理效率。 关键词:小徐影城管理系统;Spring Boot框架,MySQL数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值