java内存泄露

内存泄漏的慨念 

  1.c/c++是程序员自己治理内存,Java内存是由GC自动回收的。 

  我虽然不是很熟悉C++,不过这个应该没有犯常识性错误吧。 

  2.什么是内存泄露? 

  内存泄露是指系统中存在无法回收的内存,有时候会造成内存不足或系统崩溃。 

  在C/C++中分配了内存不释放的情况就是内存泄露。 

  3.Java存在内存泄露 

  我们必须先承认这个,才可以接着讨论。虽然Java存在内存泄露,但是基本上不用很关心它,非凡是那些对代码本身就不讲究的就更不要去关心这个了。 

  Java中的内存泄露当然是指:存在无用但是垃圾回收器无法回收的对象。而且即使有内存泄露问题存在,也不一定会表现出来。 


    Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或 JVM的问题。其实,这种想法是不正确的,因为Java也存在内存泄露,但它的表现与C++不同。 

    在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对象。如果对象满足这两个条件,这些对象就可以判定为Java中的内存泄漏,这些对象不会被GC所回收,然而它却占用内存。 
posted @ 2022-04-08 18:02  oceanyang  阅读(56)  评论(0编辑  收藏  举报