<a href="http://21cnbao.blog.51cto.com/109393/1024924">http://21cnbao.blog.51cto.com/109393/1024924</a>
<div><a title="评分 6" href="http://bbs.51cto.com/misc.php?action=viewratings&amp;tid=955196&amp;pid=4940619"><img alt="" src="http://bbs.51cto.com/images/default/agree.gif" border="0" /></a>
<div id="ad_thread3_0"> </div>
<div id="ad_thread4_0"> </div>
<div id="postmessage_4940619">1. 当项目中包含大量图片,或者图片过大
方法1:等比例缩小图片
<div><em>复制内容到剪贴板</em>
<h5>代码:</h5>
<code id="code0">BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4</code>

</div>
方法2:对图片采用软引用,及时地进行recyle()操作
<!--more--><div><em>复制内容到剪贴板</em>
<h5>代码:</h5>
<code id="code1">SoftReference&lt;Bitmap&gt; bitmap;
bitmap = new SoftReference&lt;Bitmap&gt;(pBitmap);
if(bitmap != null){
if(bitmap.get() != null &amp;&amp; !bitmap.get().isRecycled()){
bitmap.get().recycle();
bitmap = null;
}
}</code>

</div>
方法3 : 对复杂的listview进行合理设计与编码(个人感觉这个靠谱点)1. 注意重用Adapter里面的convertView,以及holder机制的运用
上述方法尝试还未成功,可用 lazy loading data
<div><em>复制内容到剪贴板</em>
<h5>代码:</h5>
<code id="code2">public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
v = mInflater.inflate(resource, parent, false);
final int[] to = mTo;
final int count = to.length;
final View[] holder = new View[count];
for (int i = 0; i &lt; count; i++) {
holder[i] = v.findViewById(to[i]);
}
v.setTag(holder); } else {
}
}</code>

</div>
方法4 : 单个页面,横竖屏切换N次后 OOM
1. 看看页面布局当中有没有大的图片,比如背景图之类的。去除xml中相关设置,改在程序中设置背景图(放在onCreate()方法中):
<div><em>复制内容到剪贴板</em>
<h5>代码:</h5>
<code id="code3">Drawable bg = getResources().getDrawable(R.drawable.bg);
XXX.setBackgroundDrawable(rlAdDetailone_bg); </code>

</div>
在Activity destory时注意,bg.setCallback(null); 防止Activity得不到及时的释放。
2. 跟上面方法相似,直接把xml配置文件加载成view 再放到一个容器里,然后直接调用 this.setContentView(View view);避免xml的重复加载。

方法5:在页面切换时尽可能少地重复使用一些代码。比如:重复调用数据库,反复使用某些对象等等.....

方法6:Android堆内存也可以自己定义大小和优化Dalvik虚拟机的内存
<div><em>复制内容到剪贴板</em>
<h5>代码:</h5>
<code id="code4">private final static int CWJ_HEAP_SIZE= 6*1024*1024;
private final static float TARGET_HEAP_UTILIZATION = 0.75f;
VMRuntime.getRuntime().setMinimumHeapSize(CWJ_HEAP_SIZE);
VMRuntime.getRuntime().setTargetHeapUtilization(TARGET_HEAP_UTILIZATION); </code>

</div>
</div>
</div>

转载于:https://www.cnblogs.com/xuweili/articles/3163279.html

【转】android内存溢出的解决方法相关推荐

  1. Java常见的几种内存溢出及解决方法

    Java常见的几种内存溢出及解决方法[情况一]: java.lang.OutOfMemoryError:Javaheapspace:这种是java堆内存不够,一个原因是真不够(如递归的层数太多等),另 ...

  2. python会内存泄漏吗_Python内存泄漏和内存溢出的解决方法

    Python内存泄漏和内存溢出的解决方法 发布时间:2020-10-30 23:08:34 来源:亿速云 阅读:92 作者:Leah 这篇文章将为大家详细讲解有关Python内存泄漏和内存溢出的解决方 ...

  3. MyEclipse 2015 运行tomcat 内存溢出的解决方法

    MyEclipse 2015 运行tomcat 内存溢出的解决方法 参考文章: (1)MyEclipse 2015 运行tomcat 内存溢出的解决方法 (2)https://www.cnblogs. ...

  4. ionic3生产打包javascript内存溢出的解决方法

    ionic3生产打包javascript内存溢出的解决方法 参考文章: (1)ionic3生产打包javascript内存溢出的解决方法 (2)https://www.cnblogs.com/wei- ...

  5. 内存泄露、内存溢出以及解决方法

    目录(?)[+] 内存泄露是指程序在运行过程中动态申请的内存空间不再使用后没有及时释放,从而很可能导致应用程序内存无线增长.更广义的内存泄露包括未对系统的资源的及时释放,比如句柄等. 内存溢出即用户在 ...

  6. 【移动开发】EditText输入字数限制总结(包括中文输入内存溢出的解决方法)...

    限定EditText输入个数的解决方案很多,但是一般主要考虑两点,也就是处理两件事: (1)不同语言字符(英文.中文等)处理方式 (2)输入字符达到数目后,是否仍然允许用户输入 第一点,涉及的东东其实 ...

  7. 基于Java内存溢出的解决方法详解

    一.内存溢出类型 1.java.lang.OutOfMemoryError: PermGen space JVM管理两种类型的内存,堆和非堆.堆是给开发人员用的上面说的就是,是在JVM启动时创建:非堆 ...

  8. php查询mysql返回大量数据结果集导致内存溢出的解决方法

    web开发中如果遇到php查询mysql返回大量数据导致内存溢出.或者内存不够用的情况那就需要看下MySQL C API的关联,那么究竟是什么导致php查询mysql返回大量数据时内存不够用情况? 答 ...

  9. android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法

    android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法 原方法: public static Bitmap getSmallBitmap(Strin ...

最新文章

  1. UML中的用例(Use Case)概念分析及实例
  2. 编写python程序 兀 3_帮忙写一个简单的python程序π_π 要求就是图上的那样 其实挺简单的但我就是写不出来。拜托了,...
  3. sqlserver字符串多行合并为一行
  4. 【编辑器】VSCode+PHPstudy环境配置,PHP简易开发环境搭建
  5. Android中的跨进程调用技术AIDL
  6. android 多图片优化工具,总结Android App内存优化之图片优化
  7. macbook python安装_mac下安装Python3.*(最新版本)
  8. Java枚举类的简单使用
  9. 后端Java架构师图谱(架构师必经之路)
  10. 微电子专业深度盘点:哪所大学芯片最强?强在哪?(第3弹)
  11. 在电脑上怎么做报表新手_在电脑上如何制作表格_电脑制作表格的步骤教程-系统城...
  12. 全DIY主题+小工具 正版Win7桌面新体验windows7旗舰版主
  13. python2 之 DataFrame
  14. 如何做一名优秀的下属
  15. Java 服务接入 OpenTracing(1)--从 Tracing 到 OpenTracing
  16. 零基础大数据应该学什么
  17. build tools
  18. 五组数据告诉你倒闭企业的“死亡画像”
  19. CentOS 7 多硬盘合并 mergerfs 磁盘合并 + Duf 磁盘容量查看
  20. 统计cassandra单表数据量

热门文章

  1. 高中会考计算机免考条件,高中会考学生听力残疾可免考外语听力
  2. python︱函数、for、if、_name_、迭代器、防范报错、类定义、装饰器、argparse模块、yield
  3. sklearn knn 算法
  4. Express框架是什么
  5. 远程心电监护系统在现代医疗中的应用
  6. 【通信4.0 重新发明通信网】读后感
  7. C++编译期间字节序判断
  8. ExtJS简介--车辆调度
  9. linux 查找并删除
  10. Java回顾之Spring基础