java内存泄露
Java的一個重要優點就是通過垃圾收集器(Garbage Collection,GC)自動管理內存的回收,程序員不需要通過調用函數來釋放內存。因此,很多程序員認為Java不存在內存泄漏問題,或者認為即使有內存泄漏也不是程序的責任,而是GC或JVM的問題。其實,這種想法是不正確的。
java的內存泄漏其實稱為無意識的對象保存更為合適 例如彈棧操作: public Object pop(){ if(0 == size) throw new EmptyStackException(); return elements[--size]; } 彈棧時: 被return的是elements[size-1],也就是棧頂元素,此后size指針--, 雖然棧頂元素被彈出,但是它并沒有被GC回收,因為它還保存著對對象的引用, 正確的做法應該是: public Object pop(){ if(0 == size) throw new EmptyStackException(); Object result = elements[--size]; elements[size] = null; return?result; } PS: 個人感覺,數組存儲的是對象的引用?
轉載于:https://www.cnblogs.com/lnas01/p/5115538.html
總結