# 垃圾回收机制(了解)# 1.引用计数# 引用计数减少为0时,作为垃圾被回收x = 10 # 直接引用print(id(x))lx = ['a', x] # 间接引用x = 1print(id(lx))print(lx[1])print(x)# 2.标记清除# 循环引用会导致内存泄漏# 循环引用: ...
分类:
编程语言 时间:
2021-06-25 17:11:36
阅读次数:
0
检测视图控制器是否被释放,可以检测是否调用了-dealloc生命周期方法。 具体操作就是在该视图控制器中重写dealloc方法,加上一些打印信息用以判断,只要打印了这个信息就可以认为视图控制器释放了。 相关链接: 循环引用不释放控制器【https://www.cnblogs.com/cchHers/ ...
分类:
其他好文 时间:
2021-05-24 04:20:20
阅读次数:
0
对于以下代码: @property (strong, nonatomic) NSTimer *timer; self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerTes ...
分类:
其他好文 时间:
2021-02-26 13:22:00
阅读次数:
0
线上有一个消息消费服务,主线程批量从kafka拉取消息,然后提交到子线程池中挨个消费。分布式追踪用到的kafka插件会使子线程创建的ThreadLocalScope被循环引用,从而造成内存泄漏。 ...
分类:
其他好文 时间:
2021-02-20 11:53:15
阅读次数:
0
内存泄漏检测原理: 内存分类:1. 泄漏内存2. 废弃内存:无用场景,Arc时代多见于循环引用3. 缓存内存 Leaks检测内存泄漏Allocations检测废弃内存,通过对比屏幕快照的方式发现内存的便捷化 过往的开源库:HeapInspector-iOS:改进Allocations检测,hook方 ...
分类:
移动开发 时间:
2021-02-02 10:50:05
阅读次数:
0
1.概述 2.对象回收算法 执行垃圾回收之前,要判断哪些内存需要回收,在JVM垃圾回收机制中主要体现为两种对象回收算法。 2.1 引用计数算法 给对象添加一个引用计数器,难以解决循环引用的问题,因此主流的java虚拟机基本上没有选用引用计数算法来管理内存的。 从图中可以看出,如果不小心直接把 Obj ...
分类:
其他好文 时间:
2021-02-02 10:37:48
阅读次数:
0
深拷贝一般用JSON.parse(JSON.stringify(object))就可以解决了, 也知道这种方法的局限性: 会忽略 undefined 不能序列化函数 不能解决循环引用的对象 因为MessageChannel的postMessage传递的数据也是深拷贝的,这和web worker的po ...
分类:
其他好文 时间:
2021-01-19 12:10:47
阅读次数:
0
1. 判断对象存活 回收内存首先需要判断,那些内存需要回收。即需要判断那些对象还存活着,则这些是不需要被回收的。 (1) 引用计数法 原理:对象中添加一个引用计数器。被引用则累计。则计数器中数值大于0,则代表仍然被引用,不能被回收。 缺点:不能解决循环引用的情况。 (2) 可达性分析法 原理:从一些 ...
分类:
其他好文 时间:
2020-11-10 10:27:32
阅读次数:
8
判断对象是否存活 引用计数 假如对象被引用,则计数加1,计数为0时回收。但是存在循环引用问题:A引用B,B引用A,导致AB永远不能被回收。 可达性分析(JAVA采用的算法) 从GC Root出发看某个对象是否可达。假如不可达,则回收。 GC Root:存活时间很长的对象,有存在意义的对象。 虚拟机栈 ...
分类:
其他好文 时间:
2020-07-21 11:37:02
阅读次数:
74