1. 1内存溢出:(内存不足--- OOM)
系统无法再分配您需要的空间。例如,如果您需要100M的空间,则系统仅剩90M。这称为内存溢出
示例:用尽各种方法后,一个盘子只能容纳4个水果。如果装满5个水果,当它们掉落到地面上时,您将无法再食用它们。这是溢出。例如,当堆栈已满时,将其推入堆栈将不可避免地导致空间溢出,这称为溢出;而当堆栈为空时,将其推回堆栈也会导致空间溢出,这称为下溢。也就是说,分配的内存不足以减少数据项的顺序,这被称为内存溢出。坦率地说,我忍受不了那么多,然后我将报告一个错误,
1. 2内存泄漏:(内存泄漏)----”强引用指向的对象将不会被回收,这可能会导致内存泄漏。虚拟机宁愿抛出OOM也不愿回收该对象指向
这意味着您在使用资源时为他打开了一个空间,而在使用完该资源后,却忘记了释放资源。此时,内存仍处于占用状态。没关系,但是内存泄漏的数量会导致内存溢出。
示例:您向系统申请分配使用的内存(新),但在使用后不将其返回(删除)。结果,您将无法再访问您申请的内存(也许将其地址分配给Lost),并且系统无法再次将其分配给所需的程序。等同于租用带钥匙的储物柜。存放东西后锁上储物柜后,您会丢失钥匙或无法退回钥匙。结果,该储物柜将不能供任何人使用,也不能成为垃圾。收集者之所以提出申诉,是因为它找不到有关他的任何信息。
通常,我们所说的内存泄漏是指堆内存的泄漏。堆内存是指从堆分配的程序。随机大小用完后,必须显示释放的内存。 C ++ / C中有一个免费功能可以发布。内存,Java中有一个垃圾回收机制,无需程序员手动调用发行版
如果未释放此内存,将无法再使用它。这称为内存泄漏。

--------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -----------------
2.按发生的方式进行分类,内存泄漏可以分为4类:
1.频繁的内存泄漏。具有内存泄漏的代码将被多次执行,并且每次执行都会导致内存泄漏。
2.零星的内存泄漏。具有内存泄漏的代码只能在某些情况或操作下发生。频繁和零星是相对的。对于特定的环境,偶尔可能会变得很频繁。因此,测试环境和测试方法对于检测内存泄漏至关重要。
3.一次内存泄漏。具有内存泄漏的代码将仅执行一次,或者由于算法中的缺陷,将始终存在一个和一个内存泄漏。例如,内存是在类的构造函数中分配的,但内存并未在析构函数中释放,因此内存泄漏只会发生一次。
4.隐式内存泄漏。程序在运行时会不断分配内存,但是直到结束时才释放内存。严格来说,没有内存泄漏,因为最终程序会释放所有请求的内存。但是对于服务器程序,它需要运行几天,几周甚至几个月。无法及时释放内存可能还会导致系统的所有内存最终耗尽。因此,我们将这种类型的内存泄漏称为隐式内存泄漏。
从使用该程序的用户的角度来看,内存泄漏本身不会造成任何危害。作为一般用户,根本没有内存泄漏。真正有害的是内存泄漏的累积,最终将耗尽系统的所有内存。从这个角度来看,一次内存泄漏不会造成危害,因为它不会累积,而隐式内存泄漏则非常有害,因为它比频繁和偶尔的内存泄漏更难检测。

3.内存溢出的原因和解决方案:
造成内存溢出的原因:
1.内存中加载的数据量太大,例如一次从中获取太多数据;
2.集合类中有一个对该对象的引用,该引用在使用后不会清除,从而使JVM无法回收;
3.代码中存在一个无限循环,或者该循环生成了太多的对象实体;
4.使用的第三方软件中的BUG;
5.在启动参数内存值的设置中内存溢出的原因和解决方案太小:修改JVM启动参数并直接增加内存。 (不要忘记添加-Xms和-Xmx参数。)检查错误日志,以查看在“ OutOfMemory”错误之前是否还有其他异常或错误。遍历并分析代码,以找出可能发生内存溢出的位置。使用内存查看工具动态查看内存使用情况

分析代码以找出可能发生内存溢出的地方以及几种可能的情况:
1、检查是否存在查询以获取查询中的所有数据。一般来说,如果一次将十万条记录提取到内存中,则可能导致内存溢出。这个问题是相对隐藏的。在上线之前,中的数据较少,这不容易引起问题。联机后,中有更多数据,查询可能会导致内存溢出。因此,对于查询,请尝试尽可能使用分页查询。
2、检查代码中是否存在无限循环或递归调用。
3、检查是否有大周期重复生成新的对象实体。
4、检查是否存在查询以获取查询中的所有数据。一般来说,如果一次将十万条记录提取到内存中,则可能导致内存溢出。这个问题是相对隐藏的。在上线之前,中的数据较少,这不容易引起问题。联机后,中有更多数据,查询可能会导致内存溢出。因此,对于查询,请尝试尽可能使用分页查询。
5、检查诸如List和MAP之类的收集对象用完后是否没有清除。诸如List和MAP之类的集合对象将始终具有对对象的引用,因此GC无法回收这些对象。
参考博客:
参考博客:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-362117-1.html
是要进行民煮选举的
没人敢惹吧
没发现一个有用的观点或论据