Handler 内部类持有 外部类Activity的引用,如果Activity退出而Handler还有延迟处理的消息没有处理完,会导致Activity不能回收,反复如此会导致内存泄露。
解决方案:声明Handler为static并持有Activity的弱引用。
public class MainActivity extends Activity {
private static fi...
分类:
移动开发 时间:
2015-06-10 14:11:30
阅读次数:
185
所谓内存泄露,其实就是对象在该被回收的时候并没有被正确回收,内存里游走着这些野指针。所以理解这几种引用方式很重要,借大神的博客一用。转载:http://blog.csdn.net/mazhimazh/article/details/19752475引用类型被垃圾回收时间 用途 生存时间强引用从来不会...
分类:
编程语言 时间:
2015-06-09 19:48:59
阅读次数:
139
在Android开发中,基本上很少有用到软引用或弱引用,这两个东东若用的很好,对自己开发的代码质量的提高有很大的帮助。若用的不好,会坑了自己。所以,在还没有真正的去了解它们之前,还是慎用比较好。 下面将通过两个Demo来结识软引用和弱引用在开发中的运用。 一.WeakReference:防止内存泄漏...
分类:
移动开发 时间:
2015-06-02 12:48:10
阅读次数:
195
新版特性
支持Sticky事件;
弱引用持有订阅者,无需手动unregister,避免内存泄露。...
分类:
移动开发 时间:
2015-05-28 09:32:50
阅读次数:
247
解决循环引用: 在知道存在循环引用的条件下,使用boost::weak_ptr,即弱引用来代替循环引用中的某个强引用,从而打破循环引用的环。由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete,比如流程太复杂,最终导致没有 delete,异常导致程序过早退出,...
分类:
编程语言 时间:
2015-05-27 22:39:10
阅读次数:
597
强引用一般程序中通过new创建的对象的引用都是强引用,强引用只有在从根节点不可达的情况下才会被垃圾回收器回收,所以可能产生内存溢出。软引用使用SoftReference创建,弱于强引用,在内存紧张的时候会被回收,不会产生内存溢出。弱引用使用WeakReference创建,弱于软引用,在系统gc时只要发现弱引用直接回收,不会产生内存溢出。虚引用使用PhantomReference创建,最弱的引用类型,...
分类:
编程语言 时间:
2015-05-27 19:09:38
阅读次数:
199
使用代码块可能会造成循环保持,循环保持是一个内存问题,假设A对象保持了B对象,B对象也保持了A对象,造成A和B无法释放,为了解决代码块循环保持问题,在声明ASIHTTPRequest对象之前使用“_weak"关键字,它的意思是ASIHTTPRequest对象是弱引用的,不进行保持处理,这种解决方式适...
分类:
其他好文 时间:
2015-05-27 09:45:33
阅读次数:
119
从一个弱引用导致的奔溃 谈 weak assign strong的应用场景.h中的定义方法一: @property (nonatomic, assign) NSArray *dataSource; 定义方法二 @property (nonatomic, strong) NSArray *dataSo...
分类:
移动开发 时间:
2015-05-26 06:43:09
阅读次数:
204
几次编写lua时。总是有同事遇到A中对象已经释放了。但B对象中A对象的值不是为空的。
Lua的gc和Java的类似。只有当对象没有被引用时候才会释放这块内存。要想实现A释放了B中A的值也释放了这时候需要用到弱引用。
setmetatable(t,{__mode="k"});
__mode 的值可以为"k","v","kv"
~ ~第一段代码中可以看到内...
分类:
其他好文 时间:
2015-05-24 15:50:26
阅读次数:
134
经常比较疑惑NSArray、NSDictionary、NSSet这几个对象容器管理对象所采用的方式是“强引用”还是“弱引用”。通过简单的命令行程序得到的结论是“NSArray、NSDictionary、NSSet这几个容器都是强引用容器”。打开Xcode,新建project,选择“OS X”-“Ap...
分类:
其他好文 时间:
2015-05-22 12:57:59
阅读次数:
129