美文网首页
iOS的内存5大区

iOS的内存5大区

作者: CyberDunk1997 | 来源:发表于2020-10-09 20:42 被阅读0次

1. 内存中的五大区域

  • 内存分为5个区域,分别指的是----->栈区/堆区/BSS段/数据段/代码段
  1. 栈:存储局部变量,当其作用域执行完毕之后,就会被系统立即收回
  2. 堆:存储OC对象,手动申请的字节空间,需要调用free来释放
  3. BSS段:未初始化的全局变量和静态变量,一旦初始化就会从BSS段中回收掉,转存到数据段中
  4. 数据段:存储已经初始化的全局变量和静态变量,以及常量数据,直到结束程序时才会被立即收回
  5. 代码段:代码,直到结束程序时才会被立即收回

什么是类加载?

  • 当某个类第一次被访问时,会被加载到代码段,这个过程叫类加载
  • 执行方法的4步:
    1. 将方法加载到代码段
    2. 声明方法的参数到栈
    3. 把实参的值赋值给形参

一个对象在内存中的存储

一个对象在内存中的存储
  • 对象中不存储方法,只存储属性
  • 对象访问属性通过

2. 为什么有堆和栈?

  • 移动设备的内存是有限的,每个App所占的内存都有一定限制,所以需要堆和栈来管理内存。

App占用手机内存的行为有:

  1. 创建一个OC对象
  2. 定义一个变量
  3. 调用一个函数或者方法
  4. 内存管理的范围和原因:

只有OC对象需要内存管理,基本数据类型不需要进行数据管理

  • OC对象一般存储在堆里,由于堆内存是动态分配的,所以堆内存需要程序员手动回收;非OC对象存储在栈中,栈内存会被系统自动回收。
  • 对于对象而言,栈内存用于存放对象的指针,堆内存用于存放对象

相关文章

  • 内存5大区

    iOS程序中的内存分配分为5大区 内存5大区:堆,栈,方法区,全局区,常量区 栈:不需要手动管理内存,会自动清理栈...

  • 内存管理面试题

    讲一下 iOS 内存管理的理解 讲一下 iOS 内存管理的理解实现原理 内存中的5大区分别是什么? ARC 的 r...

  • 内存五大区

    iOS内存五大区 在iOS中,内存主要分为 五大区域。如下图所示 下面分别介绍这五大区 *栈区 stack 定义...

  • iOS开发最新:各大厂面试题(二)

    一、iOS程序内存分为几个区 iOS内存分为5大区域 1. 栈区:编译器自动分配并释放,存放函数的参数值,局部变量...

  • 2020 iOS 面试题集 2

    iOS程序内存分为几个区 iOS内存分为5大区域 栈区:编译器自动分配并释放,存放函数的参数值,局部变量等。栈是系...

  • iOS Objective-C 内存管理简介

    iOS Objective-C 内存管理 [TOC] 在iOS开发中我们常说内存有五大区,那么都是哪五大区呢?在i...

  • OC底层探索21-内存五大区域

    iOS设备中,内存被人为的分成5大区域:栈区、堆区、全局/静态区、常量区、代码区,所占内存都为系统分配的虚拟内存。...

  • iOS 内存管理--弱引用和强引用

    前言 前面我们已经学习了几篇iOS内存相关的内容,分别如下: iOS 内存管理--内存五大区、TiggedPoin...

  • iOS的内存5大区

    1. 内存中的五大区域 内存分为5个区域,分别指的是----->栈区/堆区/BSS段/数据段/代码段 栈:存储局部...

  • iOS 内存五大区

    文章摘抄链接:iOS-底层原理 24:内存五大区[https://www.jianshu.com/p/5d9006...

网友评论

      本文标题:iOS的内存5大区

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