编程语言
首页 > 编程语言> > Java对象的创建

Java对象的创建

作者:互联网

类的创建过程

  1. new一个对象时,首先检查该指令的参数是否能在常量池中定位到一个类的符号引用
  2. 检查该符号引用代表的类是否已被加载、解析和初始化。若没有,则执行相应的类加载过程。
  3. 类加载检查通过后,进行内存的分配。
  4. 将分配到的内存空间(不包括对象头)都初始化为零值。
  5. 对对象进行必要的设置(设置对象头信息)。
  6. 执行构造函数。

为对象分配内存的方式

  1. 指针碰撞

    假设Java堆中内存是绝对规整的,所有被使用过的内存都被放在一边,空闲的内存被放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲空间方向挪动一段与对象大小相等的距离。

  2. 空闲列表

    如果Java堆中的内存并不是规整的,虚拟机就必须维护一个列表,记录上哪些内存块是可用的,在分配的时候从列表中找到一块足够大的空间划分给对象实例,并更新列表上的记录。

选择哪种分配方式由Java堆是否规整决定,而Java堆是否规整又由所采用的垃圾收集器是否带有空间压缩整理的能力决定。

解决分配内存线程不安全问题的方法

  1. 对分配内存空间的动作进行同步处理

    CAS+失败重试

  2. 把内存分配的动作按照线程划分在不同的空间中进行

    本地线程分配缓存(TLAB)

标签:Java,对象,创建,分配内存,内存,规整,分配
来源: https://www.cnblogs.com/aosrc/p/15756629.html