java的內存回收機制

java使用的內存管理方式
與c或者c++不一樣的是,java的內存釋放不是由程序員控制的.java

java使用gc機制來管理內存,使用Mark and Sweep GC的方式,經過全局信息一口氣批量判斷對象的生死,而且整理釋放以後的內存.這種方式不須要爲每一個對象準備一個引用計數器,能夠集中銷燬大量的小對象,提升內存利用率,可是銷燬對象的時機則不肯定,因此java程序老是須要一些額外的內存來容納還沒有來得及銷燬的對象,有時候額外的內存還會比較大.c++

堆內存與棧內存:
須要gc釋放的內存通常是堆內存,通過new操做符獲得的內存.
棧內存在函數調用返回後,自動就釋放了.程序員

引用計數算法和可達性算法
引用計數沒法處理循環引用的狀況,導師丟失內存.
可達性算法,則判斷內存是不是gc roots可達的,不可達則回收內存.算法

相關文章
相關標籤/搜索