b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

android画图板 [转]深入Android内存泄露(4)

电脑杂谈  发布时间:2018-11-02 01:04:59  来源:网络整理

* 此时的Context 还是上一个activity实例的Context,所以,上一个activity实例并未被释放,造成内存泄漏

*

* 此时,只需要将application的上下文,作为context即可解决问题

android studio_android什么意思_android画图板

* @param context

* @return

*/

public static SingleExample getExampleInstance(Context context) {

if (mExample == null) {

mExample = new SingleExample(context);

}

return mExample;

}

}

2.非静态内部类(匿名内部类) 的内存泄漏

非静态内部类实例:

public class MainActivity extends Activity {

//会持有MainActivity实例。MainActivity.this.a

public void load(){

new Thread(new Runnable() {

@Override

public void run() {

while(true){

try {

int b=a;

Thread.sleep(500);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}).start();

}

}

解决方案:

将非静态内部类修改为静态内部类。因为静态内部类不会隐士持有外部类

3.Handler 造成的内存泄漏

Java对引用的分类有 Strong reference, SoftReference, WeakReference, PhatomReference 四种。

在Android应用的开发中,为了防止内存溢出,在处理一些占用内存大而且声明周期较长的对象时候,可以尽量应用软引用和弱引用技术。

在 java里没有象c++中的,所谓的析构函数 ,因为当一个对象不在使用的时候,它会自动被垃圾回收器回收,所以也就用不着析构函数了, 那个finalize 也只有在被垃圾回收器回收,才会被执行,而且很多时候,垃圾回收器并不一定执行,所以它不能当做c++中的,所谓的析构函数使用, 虚函数在java里也是没有的,比较象近的应该算是abstract。

虚引用 (phantomreference), 这是一个最虚幻的引用类型 . 无论是从哪里都无法再次返回被虚引用所引用的对象 . 虚引用在系统垃圾回收器开始回收对象时 , 将直接调用 finalize() 方法 , 但不会立即将其加入回收队列 . 只有在真正对象被 gc 清除时 , 才会将其加入 reference 队列中去 .。

weakreference是弱引用,其中保存的对象实例可以被gc回收掉。

软引用可以和一个引用队列(referencequeue)联合使用,如果软引用所引用的对象被垃圾回收器回收,java虚拟机就会把这个软引用加入到与之关联的引用队列中。

Handler 实例:

5:从端sms的收发//如下 主要用于内部改变,向外面的界面(activity)做反应class smshandler extends handler{ public void handlemessage(message msg) { //handle message }}// 对收到短消息后,做出的处理,这里直接删除,并没有反应到界面,所以上面的handlemessage是空的。

它在 javascript 内部有一些使用场景(比如声明原型链的终结foo.prototype = null),但是大多数情况下都可以使用undefined 来代替。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-89859-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...