Android应用程序中的内存泄漏与规避方法

2012-09-21 10:43:36尹文刚杨斌
单片机与嵌入式系统应用 2012年6期
关键词:进程程序

尹文刚,杨斌

(西南交通大学 信息科学与技术学院,成都 610031)

引 言

Android应用程序中内存使用的问题经常容易被忽视,在传统的编程语言中(例如C语言),回收内存的任务是由程序本身来完成的,程序可以显式分配和释放变量所占用的内存。Android[1]应用程序采用Java编程语言编写,而Java区别于其他语言的一个重要优点就是它通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,Java程序员只需通过内存分配操作创建对象,而无须关心对象占用的空间是如何被收回的。因此很多程序员认为在Java中不必担心内存泄漏的问题,然而实际并非如此,Java中仍然存在着内存泄漏。Android应用程序运行在嵌入式系统中,而嵌入式系统中内存的总量非常有限,因此如何合理地规避“内存泄露”问题也就显得十分关键。

1 造成Android应用程序内存泄漏的原因

1.1 引用没释放造成的内存泄露

(1)注册没有取消造成的内存泄漏

这种Android的内存泄露比纯Java的内存泄漏还要严重,因为其他一些Android程序可能引用系统的Android程序的对象(比如注册机制)。即使Android程序已经结束了,但是别的应用程序仍然还有对Android程序的某个对象的引用,泄漏的内存依然不能被垃圾回收。

(2)集合中对象没有关闭造成的内存泄漏

通常把一些对象的引用加入到了集合中,当我们不需要该对象时,并没有把它的引用从集合中清理掉,慢慢地这个集合就会越来越大。如果这个集合是静态的话,那情况就会更严重。

1.2 资源对象没有关闭造成的内存泄漏

资源对象比如Cursor、File文件等往往都用了一些缓冲,在不使用的时候应该及时关闭它们,以便它们的缓冲及时回收内存。……

登录APP查看全文

猜你喜欢
进程程序
债券市场对外开放的进程与展望
中国外汇(2019年20期)2019-11-25 09:54:58
试论我国未决羁押程序的立法完善
人大建设(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事诉讼程序
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
环球时报(2017-03-30)2017-03-30 06:44:45
创卫暗访程序有待改进
中国卫生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事诉讼程序的完善
我国高等教育改革进程与反思
教育与职业(2014年7期)2014-01-21 02:35:04
Linux僵死进程的产生与避免
男女平等进程中出现的新矛盾和新问题