内存优化 从190M到5M
来源:互联网 发布:基因工程中数据分析 编辑:程序博客网 时间:2024/05/16 13:39
1.1注册没取消造成的内存泄露
1.2集合中对象没清理造成的内存泄露
2.1资源对象(Cursor,File文件等)没关闭造成的内存泄露
close()再设置为null
3.1反复new以申请内存
3.2未及时并有效的释放内存
3.2.1Bitmap调用recycle(),再设置为Null
3.2.2构造Adapter时,没有使用缓存的convertView
4.1保存了多个耗用内存过大的对象(如Bitmap、typeFace...)
5.1static
最常见的是mContext 当activity经历onDestory时由于任然有对象保存对其的引用所以此activity任就不会被释放,建议使用applicationContext
~~~~~~~~~~~~~接下来说一个4.1的例子~~~~~~~~~~~~~
使用工具发现自己的一个小程序占用内存达到190M
这样 当别的程序占用内存高一些的话 程序容易被系统杀死 更甚机子卡死或是自动重启
需求是:
可以浮在任何界面上,就像360加速球那样的存在 (WindowManager.addView)
炫酷的实时展示cpu、内存、存储的占用比(ObjectAnim动画、Thread中读文件),并没有加载图片
展示基本信息:如日期时间、网络连接状况有线无线信号强度、usb(监听各种广播:usb、net、time)
后来采用蠢办法 注释一块代码 运行一次 用Eclipse APT插件实时看
后来发现是因为7次加载了typeface .TTF文件
使用单例模式 保证程序只加载一次 优化了这个问题
代码如下
public class TypefaceUtils {
public static Typeface wryh, led = null;
private TypefaceUtils(Context context) {
AssetManager assets = context.getAssets();
wryh = Typeface.createFromAsset(assets, "fonts/wryh_ccf.ttf");
led = Typeface.createFromAsset(assets, "fonts/led_ccf.ttf");
}
static TypefaceUtils instance = null;
public static TypefaceUtils getInstance(Context context){
if(instance == null){
instance = new TypefaceUtils(context);
}
return instance;
}
优化过后 占用变成了30M
其实一个ttf文件里几千个字符, 我的程序里只用到了不到15个字符
百度TTF编辑器 使用font creator工具把多余的字符都干掉了
替换到工程中····
这次优化后 从此占用在5M左右浮动
nice~~~TUT
- 内存优化 从190M到5M
- cocos2dx 图片内存优化之从200M到50M
- wince从64M内存变更到128M大内存的实现
- 从128M升级到256M的DDR问题
- APK怎么从18M减小到9M
- APK瘦身从11M到7.8M
- 取从M到N行
- 输出从m到n的值、
- 显示从N行到M行
- 从1到m随机n个数
- 如何在wince6把内存从128M升级到256
- 如何把hotmail从2M升级到25M在升级到250M的过程
- unity安卓包大小压缩优化(146M优化到83M)
- M
- m
- m,
- m
- m
- 经典算法大全——和内之塔
- 解决tcpdump "drop by kernel" 问题
- CoCreateInstance调用COM接口伪流程
- 大数据分析:机器学习算法实现的演化
- vs2005关于stack around the variable “” was corrupted问题
- 内存优化 从190M到5M
- 第一个oc程序,关于创建对象,声明,点语法,self关键字
- Unity3D Compute Shader 新解 简单体绘制技术与点吸引【三】
- asp.net 学习之路之控件使用
- html css学习笔记-定位
- poj 3468 A Simple Problem with Integers 【线段树 + 区间更新lazy】
- 自动测试之一(QTP)
- linux netstat 命令用法
- VimGDB install