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

内存溢出和内存泄露区别(jvm内存溢出和内存泄漏)

  • 内存
  • 2024-06-01 14:19:02
  • 9431

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

内存溢出是指程序访问内存时,内存中没有足够的空间,出现内存不足的情况,例如请求一个整数,但里面可以存储一个长整型值;这就是内存溢出。
内存泄漏是指程序在请求内存后无法释放分配的内存空间。内存泄漏的危害可以忽略不计,但累积内存泄漏的后果却很严重。迟早会很忙。
记忆最终会导致失忆!

原因:

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

2.集合类中有一个引用使用后没有清除,因此JVM无法回收它

3代码中存在死循环;或者循环生成过多的重复对象

4使用的第三方软件出错;

5启动参内存值设置太小

解决方案:

1)在处理某些I/O线程的数据传输时,尝试在最后禁用I/O线程

2)在处理上传的照片时,使用位图工厂。选项。设置insameplesize()方法对图片进行压缩,以减少资源占用;将专门撰写有关图像压缩问题的主题;

3)您还可以通过减少照片中的像素数来减少内存占用

4)资源处理:e()bitmap=null;

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



二、android内存泄露和内存溢出的区别内存泄漏是指分配的内存无法回收的情况内存泄漏是指应用程序为设计分配某一段内存后,由于疏忽或错误,程序未能释放不再使用的内存的情况错误,它会丢失内存控制的内存,从而造成内存的浪费。一般来说,我们常说的内存泄漏都是指堆内存泄漏。堆内存是指程序从堆中分配的内存,任意大小(内存块的大小可以在程序运行时确定),使用后必须显示释放的内存。应用程序通常使用malloc、realloc、new等函数从堆中分配一块内存,使用后程序必须负责相应地调用free或delete来释放该内存块。我们会说这个内存正在泄漏。内存溢出是指程序所需的内存超出了系统可以分配的范围,发生了溢出。内存溢出是指在某个字段中输入过多的数据而不进行处理而导致的数据溢出问题。多余的数据可以作为指令在计算机上运行。