第二章

在第二章中,我有幾個(gè)小疑問吧

1.在第二章中,提到本地方法棧是為虛擬機(jī)使用的Native 方法服務(wù),那么什么是Native方法呢?
Native方法簡(jiǎn)而言之就是一個(gè)java調(diào)用非java代碼(如c語(yǔ)言等)的接口,因?yàn)樵谂c操作系統(tǒng)或其他java環(huán)境外的接口進(jìn)行交互時(shí),可能使用其他語(yǔ)言在效率上會(huì)更加有優(yōu)勢(shì)。
在JVM中,使Native方法跑起來的方法是:當(dāng)一個(gè)類第一次被使用到時(shí),它的字節(jié)碼會(huì)被加載進(jìn)內(nèi)存,在這個(gè)被加載的字節(jié)碼的入口維持著一個(gè)該類所有方法描述符的list,這些方法描述符包含這樣一些信息:方法代碼存于何處,它有哪些參數(shù),方法的描述符(public之類)等等。
如果一個(gè)方法描述符內(nèi)有native,這個(gè)描述符塊將有一個(gè)指向該Native方法的實(shí)現(xiàn)的指針。這些實(shí)現(xiàn)在一些DLL文件內(nèi),但是它們會(huì)被操作系統(tǒng)加載到j(luò)ava程序的地址空間。當(dāng)一個(gè)帶有本地方法的類被加載時(shí),其相關(guān)的DLL并未被加載,因此指向方法實(shí)現(xiàn)的指針并不會(huì)馬上被設(shè)置。當(dāng)本地方法被調(diào)用之前,這些DLL才會(huì)被加載,這是通過調(diào)用java.system.loadLibrary()實(shí)現(xiàn)的。

相關(guān)的知識(shí)參考:http://blog.csdn.net/wike163/article/details/6635321

2.什么是內(nèi)存泄漏
以前在學(xué)習(xí)c++的時(shí)候聽到過這個(gè)概念,看書時(shí)又再次看到。
內(nèi)存泄漏就是在你的代碼中創(chuàng)建對(duì)象之后,因?yàn)槟撤NBUG的存在導(dǎo)致沒有釋放這個(gè)對(duì)象所占有的內(nèi)存。在JAVA中由于存在垃圾自動(dòng)收集機(jī)制,會(huì)大大減少內(nèi)存泄漏的幾率。

有關(guān)內(nèi)存泄漏的詳細(xì)內(nèi)容可以參考
http://www.itdecent.cn/p/54b5da7c6816

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容