java中會存在內存泄漏嗎


  內存泄漏是指不再被使用的對象或者變量一直被占據在內存中。但是java中有垃圾回收機制,它能夠將不再被使用的對象,自動從內存中清除。

即使這樣,java中也存在着內存泄漏的情況:

  一:當長生命周期的對象持有短生命周期的對象的引用,就很可能發生內存泄漏。盡管短生命周期的對象已經不再需要,但是長生命周期的對象一直持有它的引用導致其無法被回收。例如,緩存系統;加載一個對象放在緩存系統中,一直不去使用這個對象,但是它一直被緩存引用,所以不會被回收導致緩存泄漏。

檢查java中的內存泄漏,一定要將程序各個分支情況都完成執行至結束,然后看其是否被使用過,如果沒有才能判定這個對象屬於內存泄漏。

  二:當一個對象被存儲進HashSet集合中,就不可修改這個對象中用於計算哈希值的屬性了。否則,對象修改后的哈希值與剛添加進HashSet集合時的哈希值不一樣,此時如果將當前對象的引用作為參數,用contains方法判斷對象是否存在,則會返回找不到對象的結果。這會導致無法從HashSet單獨刪除當前對象,造成內存泄漏

 

參考地址:http://www.cnblogs.com/guweiwei/p/6641762.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM