jvm 內存管理(初見)

java內存泄露即是:對象可達,但是對象沒有使用,gc不會回收該對象,但是對象又會佔用內存,所以會造成內存不夠,如果對象沒有被引用,即對象沒用,則會被gc在不定時間進行垃圾回收

java jvm內存管理大概分爲兩種情況,

1.有向圖的方式進行內存管理(即對象是否可達)。

大多數情況下通過main函數能夠訪問到對象即爲有效對象,gc不會回收,如果不能訪問到的對象,即會被gc回收。

特點:效率低,精度高

2.通過計數器的方式進行內存管理

jvm跟蹤每個對象,判斷對象被引用的次數,如果次數爲0則被回收。

特點:效率高,精度低(很難判斷循環引用:例如A對象引用了B對象,B對象引用了A對象)


一些方法:

1.在別寫代碼時當引用的對象使用完畢,即將引用設置爲null,使其引用的對象爲無用對象,這樣gc進行垃圾回收

2.儘量避免對象循環引用

3.利用工具跟蹤判斷內存中對象使用情況

發佈了20 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章