就是这个了
相对于内存溢出:length = 5的数组往里面添加10个数据,这就造成溢出。

解决方案 »

  1.   

    在形成一套严密的理论体系之前,并非所有的词语都要有一个严格“定义”,有的甚至只是人们约成俗成的叫法而已。
    至于“Memory Leak”,wiki上倒是有不错的解释:
    http://en.wikipedia.org/wiki/Memory_leak
      

  2.   

    在C++中,new 出的东西必须要有delete与之配对。如果没delete很可能就出现内存泄露。
    java中一般很少出现,主要注意向 文件打开关闭,数据库连接打开和关闭等等,这些要配对。处理完要及时释放
      

  3.   

    分配内存后不能回收,就是泄漏。
    实际上,内存分配后,长时间既不用也不回收,也可以认为是泄漏了。
    其他资源如文件锁、Socket、数据库连接等资源都可能出现泄漏。
      

  4.   

    对于java来说
    内存由jvm管着呢
    你使用system.gc()也只是 建议 jvm来进行垃圾收集
    内存泄漏指new了新对象并分配空间
    由于特定的情况
    但jvm的垃圾回收算法不能将其回收
    造成这块内存在程序执行期间不能被释放
    实际上这块内存存储的数据已经无用了
    举例如下:
    你new了几个对象
    然后把它们放在一个静态的arraylist中
    然后呢
    对于你的程序来说
    这几个对象不再使用
    但由于没有从arraylist中remove它们
    造成jvm判断这些对象还存在引用
    所以不进行垃圾回收
    造成内存泄漏
      

  5.   

    简单地理解,就是申请了太多无用的内存。
    如果严格按照定义理解,应该是申请的内存无法被程序释放才叫泄漏。这种情况在Java中是不存在的,因为有GC定期扫描内存中没有被引用的对象,一旦发现即回收。
    内存不够用并不等于出现了内存泄漏,比如,程序的可用内存为1M,但却读取了一个大于1M的文件,这时内存不够用,但并没有出现泄漏。