zoukankan      html  css  js  c++  java
  • 四、对象的创建(学习笔记)

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

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

    一、给对象分配内存

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

        

       2.空间列表

        

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

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

    二、线程安全性问题

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

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

        

        解决方案:

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

            2.本地线程分配缓冲:

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

              

          

     三、初始化对象 

     四、调用初始化方法

  • 相关阅读:
    扒几个 3D 模型备用
    向 3D 世界迈出一小步
    为什么说使用 Linux 系统学习 OpenGL 更方便
    Windows 下的 Linux环境
    windows git 的扩展用法——其他linux命令
    Linux 环境变量
    powershell(或者windows terminal)中使用git
    QT无边框窗体——拦截windows消息实现
    QT工具——开发技巧与其他工具
    QT工具——国际化工具
  • 原文地址:https://www.cnblogs.com/kangxinxin/p/11381759.html
Copyright © 2011-2022 走看看