new对象

作者: 44d95011b3f7 | 来源:发表于2018-09-19 11:37 被阅读0次

虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。

虚拟机将为新生对象分配内存,内存分配方式有两种
指针碰撞:假设Java堆中内存是绝对规整的,所有用过的内存都放在一边,空闲的放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲空间那边挪动一段与对象大小相等的距离。
空闲列表:如果Java堆中的内存并不是规整的,已使用的内存和空闲的内存相互交错,虚拟机就必须维护一个列表,记录哪些内存块是可用的,在分配的时候从列表中找到一块足够大的空间划分给对象实例,并更新列表上的记录。

对象创建线程安全问题解决方案有两种:
1、对分配内存空间的动作进行同步处理
2、每个线程在Java堆中预先分配一小块内存,成为本地线程分配缓冲(Thread Local Allocation Buffer,TLAB)。

内存分配完成后,虚拟机需要将分配到的内存空间都初始化为零值(不包括对象头)。

虚拟机对对象进行必要的设置,如这个对象是哪个类的实例、如何找到类的元数据信息、对象的哈希码、对象的GC分代年龄等信息(存放于对象头)。

执行在<init>方法,把对象按照程序员的意愿进行初始化。

相关文章

  • new对象

    虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用...

  • new对象

    对象new的流程 当我们使用new关键字时,我们就创建了一个对象。比如new Date(); 那么,创建对象的流程...

  • NEW对象 NEW2017

    0. 前言 2017年,又开始了新的一年,新的一年了,你是否依旧很骄傲的说自己是"单身狗",是不是在2016年12...

  • Java中的对象

    使用对象的步骤:1、创建对象类名 对象名 = new 类名();TestClass phone = new Tes...

  • JavaScript 日期、日期格式化、时间计时器

    1. 日期对象的几种常见参数 new Date() // 当前时间对象new Date(十三位时间戳)new Da...

  • (GeekBand)C++设计模式 第二周学习笔记

    Factory Method模式 “对象创建”模式 通过“对象创建”模式绕开new,来避免对象创建(new)过程中...

  • 26.1 匿名对象2020-01-20

    平时创建对象格式为: Person one=new Person(); 那么匿名对象就是无名字对象 格式为 new...

  • 关于new Image()的应用

    基本用法 var a = new Image();建立图像对象:图像对象名称=new Image([宽度],[高度...

  • JavaScript 纯粹对象

    JavaScript 纯粹对象1、定义:通过 "{}" 或者 "new Object" 创建的对象,像new Da...

  • 源码时代前端干货分享|new关键字底层原理-执行过程

    构造对象关键字:new 众所周知,js是用new来产生对象的,那么今天我们就来说说js里new产生对象的构造原理。...

网友评论

      本文标题:new对象

      本文链接:https://www.haomeiwen.com/subject/spzbnftx.html