腾讯公司在五月三十一日开展【腾讯Bugly移动开发人员沙龙】大会。大会上面叶方正老师解说了 关于Android的内存优化的问题,只是我感觉叶老师许多其它的站在了測试的角度上去解释了这一方面,叶老师给我们介绍了许多的工具去測试Android应用在各种情况下的内存占用情况。只是好像对我们开发的帮助并非特别的大。我在这里总结叶老师所说的重点和自己对内存优化的一些理解,希望可以对大家有所帮助。
Android应用优化主要集中在内存和UI流畅度上。从内存占用与泄露、UI流畅度的帧数和响应时间到IO的堵塞式响应时间等。
内存优化
首先。为什么要优化内存?主要体如今OOM(Out of Memory)和导致UI不流畅上。对于手机来说。内存是一个很稀缺的资源,即使是如今普遍拥有着很大内存的Android手机也不可避免。
而造成内存泄露或者说引发OOM主要是由于下面四个原因:
- 1、万恶的Static(通常见到在单例模式)
- 2、大胖子bitmap位图
- 3、多线程生命周期过长。导致本该释放的资源没有的到释放
- 4、变量生成没有被关闭(I/O流。Cursor)
这些原因都会导致我们的应用程序内存被大量的占用。知道了原因之后自然也就有个处理的办法。
应用之中假设存在大量的static变量。假设这些static的变量在Activity被结束的时候得不到销毁。那么它就会一直占用着内存空间,特别是一些数组。假设这些静态变量许多的话。那么它占用的内存就是一个很可观的数目。那么解决的方法是什么那?
1、除非这个变量会在整个应用之中被大量的反复使用
2、假设这个变量以后都不会再被使用到了。那么记得把他销毁掉
而对于bitmap位图我们可以通过BitmapFactory.Options的inSampleSize属性使他占用更小的空间。
第三个第四个问题,就仅仅能自己记得释放他。比方在onStop()或者onDestory()方法里面把它滞空。
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i ').text(i));
};
$numbering.fadeIn(1700);
});
});