java的内存溢出和内存泄漏

2022-09-21 12:59:12

1、内存溢出
内存溢出的原因主要有以下几个部分:
1)程序中出现死循环(比如递归是最常见,本人亲遇)
2)程序中循环产生过多重复的实体
3)启动内存参数设置过小
4)内存中加载的数据量过于庞大
5)集合类中有对对象的引用,使用完后未清空,使得JVM不能回收

递归:每一次递归循环的实现,系统都会重新为变量分配内存空间而不是覆盖原来的空间。因此,当问题没有特别复杂,并不一定需要使用到递归程序时,应当避免使用递归程序,
尤其是递归次数多的程序,可能会造成内存分配的崩溃。

2、内存泄漏
概念:
内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。

(内存泄漏也称作"存储渗漏",用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。(其实说白了就是该内存空间使用完毕之后未回收)即所谓内存泄漏)

  • 作者:今夜无风亦无雨
  • 原文链接:https://blog.csdn.net/hello_world_9664/article/details/115742114
    更新时间:2022-09-21 12:59:12