美文网首页
避免内存溢出的方法

避免内存溢出的方法

作者: 李俊的博客 | 来源:发表于2016-06-23 16:17 被阅读201次

OOM(Out Of Memory,内存溢出)是指程序在申请内存的时候,没有足够的内存空间供其使用,出现 Out Of Memory。比如申请了一个float,但给它存了double才能存下的数据,这就是内存溢出。

当我们的应用程序申请的内存资源超过Android系统为每个进程设置的最大内存限制时,系统就会抛出OOM错误。

1、查看手机每个应用程序最高可用内存

// 每个应用程序最高可用内存
int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
// 使用Log打印出来
Log.i("TAG", "Max memory is " + maxMemory + "KB");

2、每个程序都会有可使用的内存上限,这被称为堆大小(Heap Size)。

ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
// 堆大小
int heapSize = manager.getMemoryClass();
// 使用Log打印出来
Log.i("TAG", "Heap size is " + heapSize + "MB");

注意:以上两种方式查看的内存大小是一样的。

避免OOM的常见方法

1、避免不必要的大图载入,在把图片载入内存之前,先计算出一个合适的缩放比例,然后再载入。
2、采用低内存占用量的编码方式,比如Bitmap.Config.ARGB_4444比Bitmap.Config.ARGB_8888更省内存。
3、使用图像缓存,比如在ListView中加载大量图片时,只加载屏幕显示的资源,尚未显示的不加载;移出屏幕的资源及时释放。
4、不要在循环中创建过多的本地变量,慎用static。用static来修饰成员变量时,该变量就属于该类,而不是该类实例,它的生命周期是很长的。
5、自定义堆内存分配大小。

相关文章

  • 避免内存溢出的方法

    OOM(Out Of Memory,内存溢出)是指程序在申请内存的时候,没有足够的内存空间供其使用,出现 Out ...

  • 内存溢出和内存泄漏

    1.内存泄漏 2.内存溢出 -如何避免内存泄漏、内存溢出?

  • 内存溢出的几种情况

    1、堆内存溢出(outOfMemoryError:java heap space) 2、方法区内存溢出(outOf...

  • 基本性能优化

    布局优化 避免过度绘制嵌套,导致16秒无法完成绘制 使用viewstub提高布局性能 内存优化 避免内存溢出和内存...

  • Android避免内存溢出(Out of Memory)方法总结

    避免内存溢出的方法,主要是对以下三个方面对程序进行优化 内存引用 在处理内存引用之前,我们先来复习下什么是强引用、...

  • Android避免内存溢出(Out of Memory)

    避免内存溢出的方法,主要是对以下三个方面对程序进行优化内存引用在处理内存引用之前,我们先来复习下什么是强引用、软引...

  • 优化

    1.内存溢出和内存泄漏有什么区别?何时会产生内存泄漏?内存优化有哪些方法? 内存溢出通俗理解就是软件(应用)运行需...

  • 2020-05-23

    jdk1.7之前,永久带是方法区的实现,永久带不再堆中。方法区内存溢出,会报永久带内存溢出,即:OutOfMemo...

  • 5、哪些情况下会导致oom问题?

    1、根据java的内存模型会出现内存溢出的内存有堆内存、方法区内存、虚拟机栈内存、native方法区内存;2、一般...

  • ionic3 - 打包时加"--prod"参数导致内存溢出

    说明 打包的时候报了内存溢出的错误(不加prod的时候不会内存溢出) 解决方法 node v8.0+: windo...

网友评论

      本文标题:避免内存溢出的方法

      本文链接:https://www.haomeiwen.com/subject/donndttx.html