基于java中stack與heap的區(qū)別,java中的垃圾回收機(jī)制的相關(guān)介紹
#. 在java中有兩類內(nèi)存。分別稱為stack(堆棧)和heap(堆)。
stack是程序內(nèi)存空間,因此所有的基本類型和對(duì)象的引用是存在stack中。
heap是java虛擬機(jī)儲(chǔ)存對(duì)象的,它是一個(gè)巨大的內(nèi)存,當(dāng)你創(chuàng)造一個(gè)對(duì)象,java虛擬機(jī)把對(duì)象放入heap中,把創(chuàng)造的對(duì)象的地址放入stack中。
因此,基本類型、對(duì)象的引用儲(chǔ)存在stack中;對(duì)象儲(chǔ)存在heap中。
#. java中的垃圾回收機(jī)制
當(dāng)你new一個(gè)新的對(duì)象,java分配必需的內(nèi)存。當(dāng)你用完一個(gè)對(duì)象時(shí),java的垃圾回收器為你把內(nèi)存收回。
垃圾回收以線程的形式在后臺(tái)運(yùn)行,尋找那些無有用引用(reference)的對(duì)象,發(fā)現(xiàn)之后便銷毀對(duì)象,并收回內(nèi)存。
垃圾回收是在java虛擬機(jī)間實(shí)現(xiàn)的,它們通常有相同的步驟,首先垃圾回收器獲得正在運(yùn)行的線程和所有已經(jīng)加載的類的快照,
然后所有線程中涉及到的對(duì)象被標(biāo)記為最近使用的,當(dāng)可能涉及的對(duì)象都被標(biāo)記的時(shí)候,剩下沒標(biāo)記的就被舍棄。
為了幫助虛擬機(jī),我們主動(dòng)移除一些不在需要的對(duì)象是一個(gè)不錯(cuò)的做法,可以通過將引用設(shè)置為null來實(shí)現(xiàn)。
eg:
Text t = new Test();
t.someAction();
//all done
t = null;
相關(guān)文章
MyBatis使用級(jí)聯(lián)操作解決lombok構(gòu)造方法識(shí)別失敗問題
這篇文章主要介紹了MyBatis使用級(jí)聯(lián)操作解決lombok構(gòu)造方法識(shí)別失敗問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07springboot項(xiàng)目整合注冊(cè)功能模塊開發(fā)實(shí)戰(zhàn)
這篇文章主要介紹了springboot項(xiàng)目整合注冊(cè)功能模塊開發(fā)實(shí)戰(zhàn),在用戶的注冊(cè)是首先需要查詢當(dāng)前的用戶名是否存在,如果存在則不能進(jìn)行注冊(cè),相當(dāng)于一個(gè)查詢語句,本文通過實(shí)例代碼詳細(xì)講解,需要的朋友可以參考下2022-11-11解決gateway報(bào)netty堆外內(nèi)存溢出io.netty.util.internal.OutOfDirectMemor
這篇文章主要介紹了解決gateway報(bào)netty堆外內(nèi)存溢出io.netty.util.internal.OutOfDirectMemoryError,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12java使用RandomAccessFile類基于指針讀寫文件實(shí)例代碼
這篇文章主要介紹了java使用RandomAccessFile類基于指針讀寫文件實(shí)例代碼,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10