美文网首页
内存管理(二)

内存管理(二)

作者: most_xiaoya | 来源:发表于2019-04-28 17:31 被阅读0次

HotSpot 虚拟机对象

1.对象的创建:

对象的创建涉及到两个问题:
1)内存空间的分配 解决方法:指针碰撞和空闲列表(分别针对内存空间连续和内存空的不连续)
2)分配内存时的线程安全 解决方法:

  • 对分配内存空间的动作进行同步处理-其实在虚拟机采用的是CAS配上失败重试保证操作的原子性;
  • 把内存分配动作按照线程划分在不同的空间进行,也就是每个线程在Java堆中预先分配一小块儿内存,称作是本地线程分配缓冲TLAB(Thread Local Allocation Buffer)。

2.对象的内存布局

对象在内存中存储的布局可以分为三个区域

  • 对象头:对象头分为两部分,
    一部分是用于存储对象自身的运行时数据,如哈希码、GC分代年龄、锁状态标识、线程持有的锁、偏向线程ID、偏向时间戳等,这部分数据官方叫“Mark Word”;
    另一部分是类型指针,也就是对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。
  • 实力数据:对象真正存储的有效信息;
  • 对齐填充:并不是必然存在的,也没有特别含义,它仅仅起着占位符的作用。

3. 对象的访问定位:

目前主流的访问方式是使用句柄和直接指针两种。
两种访问方式各有优势:
使用句柄访问的好处是reference中存储的是稳定的句柄地址,在对象被移动的时候只会改变句柄中的实例数据指针,而reference本身不需要修改。
使用直接指针的方式最大的好处就是速度更快,它节省了一次指针定位的时间开销。

相关文章

  • OC - OC的内存管理机制

    导读 一、为什么要进行内存管理 二、内存管理机制 三、内存管理原则 四、MRC手动内存管理 五、ARC自动内存管理...

  • iOS/OS X 内存管理(二):借助工具解决内存问题

    iOS/OS X 内存管理(二):借助工具解决内存问题 iOS/OS X 内存管理(二):借助工具解决内存问题

  • iOS内存管理(二)alloc、retain、release、d

    iOS内存管理(一)、内存分区和引用计数iOS内存管理(二)alloc、retain、release、deallo...

  • iOS内存管理(一)、内存分区和引用计数

    iOS内存管理(一)、内存分区和引用计数iOS内存管理(二)alloc、retain、release、deallo...

  • 内存管理

    目录一、内存分区 1、RAM和ROM 2、内存的五大分区二、内存管理 1、OC内存管理是指什么?OC内存管理的本质...

  • 内存优化(app专项测试)

    1.优化内存的常见操作 (一)内存管理机制 (二)常用内存监控工具 (三)内存优化案例分析 2.内存管理机制 AR...

  • 内存管理(二)

    Q1:在UWA的帮助下,我们追踪到了一个Reserved GFX的内存占用,并且显示比较高。我们应当如何降低该内存...

  • 内存管理二

    Autoreleasepool Autoreleasepool的结构 我们的main函数中定义一个自动释放池 然后...

  • 内存管理(二)

    ARC&MRC主要与alloc,retain,realese,retainCount,autorealese,de...

  • 内存管理(二)

    上一篇我们简单的介绍了NSTimer、NSProxy、GCD定时器、自定义time、iOS程序的内存布局、Tagg...

网友评论

      本文标题:内存管理(二)

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