下载此文档

java内存泄露.doc


文档分类:IT计算机 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
内存泄露简介内存泄漏分类内存泄漏的定义后果常见问题程式设计中的问题影响其他内存消耗检测内存泄漏简介内存泄漏分类内存泄漏的定义后果常见问题程式设计中的问题影响其他内存消耗检测内存泄漏简介在计算机科学中, 内存泄漏(memory leak) 指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后, 由于设计错误, 失去了对该段内存的控制, 因而造成了内存的浪费。内存泄漏与许多其他问题有着相似的症状, 并且通常情况下只能由那些可以获得程序源代码的程序员才可以分析出来。然而, 有不少人习惯于把任何不需要的内存使用的增加描述为内存泄漏, 严格意义上来说这是不准确的。一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定) ,使用完后必须显式释放的内存。应用程序一般使用 malloc , realloc , new 等函数从堆中分配到一块内存,使用完后, 程序必须负责相应的调用 free 或 delete 释放该内存块, 否则, 这块内存就不能被再次使用, 我们就说这块内存泄漏了。内存泄漏分类 1. 常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。 2. 偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境, 偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。 3. 一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷, 导致总会有一块且仅一块内存发生泄漏。比如, 在一个 Singleton 类的构造函数中分配内存, 在析构函数中却没有释放该内存。而 Singleton 类只存在一个实例,所以内存泄漏只会发生一次。 4. 隐式内存泄漏。程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏, 因为最终程序释放了所有申请的内存。但是对于一个服务器程序, 需要运行几天, 几周甚至几个月, 不及时释放内存也可能导致最终耗尽系统的所有内存。所以,我们称这类内存泄漏为隐式内存泄漏。[ 编辑本段] 内存泄漏的定义一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的, 大小任意的(内存块的大小可以在程序运行期决定) ,使用完后必须显示释放的内存。应用程序一般使用 malloc , realloc , new 等函数从堆中分配到一块内存, 使用完后, 程序必须负责相应的调用 free 或 delete 释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。以下这段小程序演示了堆内存发生泄漏的情形: void MyFunction(int nSize) { char* p= new char[nSize]; if( !GetStringFrom( p, nSize ) ){ MessageBox( “ Error ”); return; }…//using the string pointed by p; delete p; } 当函数 GetStringFrom() 返回零的时候, 指针 p 指向的内存就不会被释放。这是一种常见的发生内存泄漏的情形。

java内存泄露 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人274030239
  • 文件大小0 KB
  • 时间2016-04-08
最近更新