当前位置:首页 > 内存 > 正文

内存泄漏和内存溢出的区别和联系(安卓内存溢出和内存泄漏)

  • 内存
  • 2024-06-08 10:25:33
  • 220

一、内存溢出和内存泄露的区别

内存溢出(outofmemory)一般理解为内存不足通常在运行大型软件或游戏时,软件或游戏所需的内存远远超过你主机安装的内存大小,称为内存溢出。。此时软件或游戏无法运行,系统会提示内存溢出有时软件会自动关闭,重新启动电脑或软件后,部分内存被释放,软件即可正常运行。

内存泄漏(MemoryLeak)是指程序中动态分配的堆内存没有释放或者由于某种原因无法释放,导致系统内存浪费,减慢程序速度甚至导致系统崩溃。结果。


二、内存溢出和内存泄漏的区别?产生原因以及解决方案。

内存不足溢出是指程序申请内存时,没有足够的内存空间可以使用,出现内存不足的情况,比如申请了一个整数,但是可以长期保存,那么就是内存溢出了。
内存泄漏是指程序申请内存后无法释放所分配的内存空间,内存泄漏的危害可以忽略不计,但内存泄漏积累的严重后果迟早会被占用。
内存最终会耗尽内存!

原因:

1。加载到内存中的数据量非常大,比如一次从数据库中取出很多数据;

2Collection类中存在对该对象的引用,并且没有被获取使用后清除,因此JVM无法回收

3或者循环创建了太多重复的对象实体;

4.使用的第三方软件错误;

5.启动参数内存值设置太小

解决办法:

1)处理部分I/O流的数据传输时,尝试最后关闭I/O流

2)处理下载的图片时,使用BitmapFactory。选项。设置insameplesize()方法对图片进行压缩,以减少资源占用;下面专门写一下图像压缩;

3)还可以通过减少图像像素来减少占用的内存

4)资源回收:Bitmap回收。()bitmap=null;

5)尽量使用全局变量,避免创建新对象