GC垃圾回收机制,iOS内存管理。
问题: MRC中通过调用静态方法创建的新对象,不再使用时需要对其发送release消息吗?
不需要,因为约定静态方法创建的对象会自动将其放入自动释放池,即已对其发送autorelease消息,因此不可再对其进行手动释放。MRC中静态方法创建新对象的实现模板如下:
问题: NSRangeException, EXC_BAD_ACCESS, 僵尸对象, 野指针,空指针?
NSRangeException: 常见于数组越界。
EXC_BAD_ACESS: 野指针问题(内存泄漏), 调用了已经释放的对象或则对象的重复释放。
僵尸对象:引用计数为0,对象可能存在但是内存已被系统回收,这部分内存可能随时被别的对象申请占用。
野指针: 指针没有被赋值,或者指向的对象已经被释放。
空指针: 没有指向任何东西的指针,是一个有效指针(nil, null, 0)
问题: 垃圾回收机制?
https://blog.csdn.net/zuopizhuanshupi/article/details/82791274
垃圾回收机制是由垃圾收集器Garbage Collection GC来实现的,是一种低优先级的后台线程,会不定时的执行已回收‘不可达的对象’。JAVA虚拟机中使用的是‘自适应,分代的,停止-复制,标记-清扫’式垃圾回收器。相对于‘RC引用计数’来说是‘宏观+延时’的。
问题: 引用计数?
当引用计数为0时释放掉对象
问题: 如果一个对象释放前被加到了NotificationCenter中,不在NotificationCenter中remove这个对象可能会出现什么问题?
EXC_BAD_ACCESS 将对象添加到通知中心后,通知中心会保存该对象的指针。当对象被释放后通知中心中添加的指针变成了野指针
问题:什么是安全释放?
释放掉不在使用的对象时,不会造成内存泄漏或指针悬挂问题。
问题: 字符串的引用计数MRC下
// 用format形式生成的字符串,如果字符串长度小于10保存在常量区,大于10保存在堆区。其余形式在常量去。
NSString *str = @"";
NSString *str2 = [NSString stringWithString:@""];
NSString *str3 = [NSString stringWithFormat:@""];
NSString *str4 = [NSString stringWithFormat:@""];
NSString *str5 = [[NSString alloc] initWithString:@""];
NSString *str6 = [[NSString alloc] initWithFormat:@""];
NSString *str7 = [[NSString alloc] initWithFormat:@""];
NSLog(@"\n %lu \n %lu \n %lu \n %lu \n %lu \n %lu \n %lu \n %lu", [str retainCount], [str2 retainCount], [str3 retainCount], [str4 retainCount], [str5 retainCount], [str6 retainCount], [str7 retainCount]);
问题: autoReleasePool自动释放池
自动释放池用于避免临时变量造成的内存峰值。
在主线程中会自动开启一个autoReleasePool, 当一次Runloop执行完毕后,会释放掉autoReleasePool,并向pool中的所有对象发送一次release消息,释放了就得autoReleasePool后,会在新建一个autoReleasePool。
参考链接:https://www.jianshu.com/p/554c9fe0f041
GC垃圾回收机制,iOS内存管理。的更多相关文章
- JVM和GC垃圾回收机制和内存分配
JVM运行期间 线程共享 线程私有 线程共享: 方法区 堆方法区:存放可以共享数据,静态常量,类的共有方法属性字段等,可以共享的存在方法区. 堆:存放class对象 . 线程私有:本地方法栈 虚拟机栈 ...
- 160930、Javascript的垃圾回收机制与内存管理
一.垃圾回收机制-GC Javascript具有自动垃圾回收机制(GC:Garbage Collecation),也就是说,执行环境会负责管理代码执行过程中使用的内存. 原理:垃圾收集器会定期(周期性 ...
- 你不知道的JavaScript--Item28 垃圾回收机制与内存管理
1.垃圾回收机制-GC Javascript具有自动垃圾回收机制(GC:Garbage Collecation),也就是说,执行环境会负责管理代码执行过程中使用的内存. 原理:垃圾收集器会定期(周期性 ...
- javascript的垃圾回收机制与内存管理
一.垃圾回收机制—GC Javascript具有自动垃圾回收机制(GC:Garbage Collecation),也就是说,执行环境会负责管理代码执行过程中使用的内存. 原理:垃圾收集器会定期(周期性 ...
- javascript 垃圾回收机制和内存管理
前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 垃圾回收机制的原理是找到不再被使用的变量,然后释放其占用的内存,但这个过程不是时时的,因为其开销比较大,所 ...
- javascript的垃圾回收机制和内存管理
垃圾回收 javascript不同于c.c++的一个特点是:具有自动的垃圾回收机制,这就意味着,开发人员可以专注于业务,而不必把过多精力放在内存的管理上,提高开发效率. 所谓的垃圾回收就是找出那些不再 ...
- js 垃圾回收机制与内存管理
1.原理 js按照固定的时间间隔找到不在继续使用的变量,释放其占用的内存. 2.实现方式 (1)标记清除 垃圾收集器给存储在内存上的所有变量都加上标记: 之后,去掉环境中的变量以及被环境引用变量的标记 ...
- Chrome V8系列--浅析Chrome V8引擎中的垃圾回收机制和内存泄露优化策略
V8 实现了准确式 GC,GC 算法采用了分代式垃圾回收机制.因此,V8 将内存(堆)分为新生代和老生代两部分. 一.前言 V8的垃圾回收机制:JavaScript使用垃圾回收机制来自动管理内存.垃圾 ...
- 乐字节Java|GC垃圾回收机制、package和import
本文接上一篇:乐字节Java|this关键字.static关键字.block块.本文是接着讲述JavaGC垃圾回收机制.package 和 import语句. 一.GC垃圾回收机制 GC全名:Garb ...
- GC垃圾回收机制详解
JVM堆相关知识 为什么先说JVM堆? JVM的堆是Java对象的活动空间,程序中的类的对象从中分配空间,其存储着正在运行着的应用程序用到的所有对象.这些对象的建立方式就是那些new一类的操作 ...
随机推荐
- js:捕获冒泡和事件委托
一.事件流(捕获,冒泡) 事件流:指从页面中接收事件的顺序,有冒泡流和捕获流. 当页面中发生某种事件(比如鼠标点击,鼠标滑过等)时,毫无疑问子元素和父元素都会接收到该事件,可具体顺序是怎样的呢?冒 ...
- spring cloud 笔记
1.在工程的启动类中,通过@EnableDiscoveryClient向服务中心注册:并且向程序的ioc注入一个bean: restTemplate;并通过@LoadBalanced注解表明这个res ...
- python入门 -- 学习笔记3
习题21:函数可以返回东西 过程解析: 1.定义函数:如def add(形参)函数 2.调用函数: add(实参) 别忘记加() 3.在函数调用的时候将实参的值传给形参,代入到函数中进行计算,r ...
- Android自定义View之上拉、下拉列表 头部元素跟随 缩放、平移效果的实现
滑动ListView列表然后 listView上边的视图 跟随着上拉或者下拉的距离 自动放大或者缩小 视图里边元素自动平移的效果 思路很简单 根据listView 的滑动距离去计算图片和文字应该平移 ...
- cookie、sesstion、strorage
1. cookie 第一:每个特定的域名下最多生成20个cookie (数量上) <IE6: 20 | >ie7:50 | firefox: 50 | IE ...
- Kettle (5) - 获取 Web 数据
使用 Kettle 获取网页数据.当然,这里的网页数据主要指结构化数据,可能是 xml 格式.json 格式 或者 csv 文件等.以 http://services.odata.org/V3/Nor ...
- Quartz.Net进阶之一:初识Job作业和触发器
前几天写了一篇有关Quartz.Net入门的文章,大家感觉不过瘾,想让我在写一些比较深入的文章.其实这个东西,我也是刚入门,我也想继续深入了解一下,所以就努力看了一些资料,然后自己再整理和翻译 ...
- CentOS 6.x下wget 下载提示 Unable to locally verify the issuer’s authority 完美解决方案
CentOS 6.x下wget 下载提示 Unable to locally verify the issuer’s authority 完美解决方案 栏目:Linux 作者:小天 点击: 1,453 ...
- how to adjust PKG_CONFIG_PATH environment-variable
PKG_CONFIG_PATH is a environment variable that specifies additional paths in which pkg-config will s ...
- Netsharp总体介绍
作者:秋时 日期:2014年02月05日 转载须说明出处 Netsharp交流群:338963050(请有详细的请求说明) Netsharp系列文章目录结构 Netsharp是一款免费的基于 ...