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

什么是内存溢出和内存泄露(怎么解决内存泄露问题)

  • 内存
  • 2024-06-04 12:06:17
  • 2813

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

内存泄漏是指程序执行时没有足够的空间可供使用,导致内存不足;例如,如果实现一个整数,则可以长期存储它。内存太大了。
内存泄漏是指程序申请内存后无法释放所分配的内存空间,但无论内存大小,其损害都可以忽略不计。或者后来被抓到。
Memoriak终于带来了回忆!

原因:

1。加载到内存的数据量太大,比如一次取很多数据,

2集合类中有对象的引用,使用后没有清除,所以JVM无法重用。

3或者循环生成太多重复项;4.使用的第三方软件中;

5

解决办法:

1)在传输某些IO的数据时,尝试杀死IO流的末尾Stream

2)处理下载的照片时使用BitmapFactory。选项。设置async()方法压缩图片以减少资源占用;下面专门写一篇关于图像压缩问题的文章;

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

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


二、内存溢出和内存泄漏的区别品牌型号:华为MateBookD15
系统:Windows11

内存溢出是指程序请求内存时,没有足够的空间使用,会出现OutOfMemory的情况例如申请存储时显示。得到了一个整数,但是只能用长数来存储的数字就是内存溢出。

内存泄漏是指程序无法释放分配的内存空间。内存泄漏的危害可以忽略不计,但是累积内存泄漏的后果就很严重了,如果内存很多,迟早会被占用。

内存泄漏可以分为4类:

1.存在内存泄漏的代码会被多次执行,每次执行都会导致内存泄漏。

2.偶尔会出现内存泄漏。导致内存泄漏的代码仅在某些情况或操作下发生。频繁和偶发是相对的。在某些情况下,偶尔发生的事情可能会变得正常。因此,测试环境和测试方法对于检测内存泄漏至关重要。

3.一次性内存泄漏。导致内存泄漏的代码只会执行一次,或者由于算法错误,一次只会泄漏单个内存块。例如,如果在类的构造函数中分配了内存,但在析构函数中没有释放内存,则内存泄漏只会发生一次。

4.隐式内存泄漏。程序在执行过程中不断分配内存,但只在最后释放内存。严格来说,这里不存在内存泄漏,因为程序最终释放了所有请求的内存。但对于需要运行数天、数周甚至数月的服务器程序来说,未能及时释放内存也可能导致所有系统内存被耗。因此,我们将这种类型的内存泄漏称为隐式内存泄漏。