JAVA内存泄露专题.docx

内存泄露与内存溢出 定义 1、内存泄漏:一般可以理解为系统资源(各方面的资源,堆、栈、线程等)在错误使用的情况下,导致使用完毕的资源无法回收(或没有回收),从而造成那部分内存不可用的情况。 2、内存溢出:指内存不够使用而抛出异常,内存泄露是其形成的原因之一。 危害 会导致新的资源分配请求无法完成,引起系统错误,最后导致系统崩溃。 内存泄漏分类 类型 描述 常发性内存泄漏 发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏 偶发性内存泄漏 发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的 一次性内存泄漏 发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅且一块内存发生泄漏。比如,在类的构造函数中分配内存,在析构函数中却没有释放该内存,所以内存泄漏只会发生一次 隐式内存泄漏 程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏,因为最终程序释放了所有申请的内存。但是对于一个服务器程序,需要运行几天,几周甚至几个月,不及时释放内存也可能导致最终耗尽系统的所有内存。所以,我们称这类内存泄漏为隐式内存泄漏 内存泄露/溢出发生的区域?? 内存区域 发生情况 备注 程序计数器 不可能 虚拟机栈VM Stack Y 本地方法栈 Y 非堆内存

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档