前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >四、对象的创建(学习笔记)

四、对象的创建(学习笔记)

作者头像
梅花
发布2020-09-28 10:58:19
2790
发布2020-09-28 10:58:19
举报
文章被收录于专栏:梅花的学习记录

对象创建的流程图(来自龙果学院)

对象的<init> 方法包括: 代码块、构造方法

一、给对象分配内存

  1.指针碰撞: 分为已使用的内存和未使用的内存 通过中间的指针来进行移动,来给创建的对象分配内存

  2.空间列表

  具体使用哪种方法给对象分配内存空间,由 堆内存空间是否规整来决定,而 堆内存空间是否规整 是由垃圾回收策略决定的。

  如果垃圾回收器带有压缩整理功能,就可以使用指针碰撞。否则 则使用空闲列表

二、线程安全性问题

    比如说指针碰撞给对象分配内存,在高并发的情况下,可能同时创建多个对象,指针移动,就可能出现线程安全性问题。

    比如说空闲列表,第一个线程给对象分配了一个内存,但是还没来得及更新呢,第二个线程就过来了,这样就会出现线程安全性问题。

    解决方案:

        1.线程同步(加锁,但是影响程序的执行效率)

        2.本地线程分配缓冲:

          针对每个线程在堆内存中给他单独分配一块区域 ,这种解决方案提高了程序的效率

 三、初始化对象 

 四、调用初始化方法

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档