java中會存在內存泄漏嗎

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

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

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

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

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

參考地址:https://www.cnblogs.com/camile123/p/8472349.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章