Native/方法區(qū)

5.Native

? native :凡是帶了native關(guān)鍵字的,說明java的作用范圍達(dá)不到了,回去調(diào)用底層c語言的庫!
? 會進(jìn)入本地方法棧
? 調(diào)用本地方法本地接口 JNI (Java Native Interface)
? JNI作用:開拓Java的使用,融合不同的編程語言為Java所用!最初: C、C++
? Java誕生的時候C、C++橫行,想要立足,必須要有調(diào)用C、C++的程序
? 它在內(nèi)存區(qū)域中專門開辟了一塊標(biāo)記區(qū)域: Native Method Stack,登記native方法
? 在最終執(zhí)行的時候,加載本地方法庫中的方法通過JNI
? 例如:Java程序驅(qū)動打印機(jī),管理系統(tǒng),掌握即可,在企業(yè)級應(yīng)用比較少
? private native void start0();
? //調(diào)用其他接口:Socket. . WebService~. .http~

Native Method Stack

它的具體做法是Native Method Stack中登記native方法,在( Execution Engine )執(zhí)行引擎執(zhí)行的時候加載Native Libraies。[本地庫]

Native Interface本地接口

本地接口的作用是融合不同的編程語言為Java所用,它的初衷是融合C/C++程序, Java在誕生的時候是C/C++橫行的時候,想要立足,必須有調(diào)用C、C++的程序,于是就在內(nèi)存中專門開辟了塊區(qū)域處理標(biāo)記為native的代碼,它的具體做法是在Native Method Stack 中登記native方法,在( Execution Engine )執(zhí)行引擎執(zhí)行的時候加載Native Libraies。 ?目前該方法使用的越來越少了,除非是與硬件有關(guān)的應(yīng)用,比如通過Java程序驅(qū)動打印機(jī)或者Java系統(tǒng)管理生產(chǎn)設(shè)備,在企業(yè)級應(yīng)用中已經(jīng)比較少見。因為現(xiàn)在的異構(gòu)領(lǐng)域間通信很發(fā)達(dá),比如可以使用Socket通信,也可以使用Web Service等等,不多做介紹!

6.PC寄存器

程序計數(shù)器: Program Counter Register ?每個線程都有一個程序計數(shù)器,是線程私有的,就是一個指針, 指向方法區(qū)中的方法字節(jié)碼(用來存儲指向像一條指令的地址, 也即將要執(zhí)行的指令代碼),在執(zhí)行引擎讀取下一條指令, 是一個非常小的內(nèi)存空間,幾乎可以忽略不計

7方法區(qū) Method Area

方法區(qū)是被所有線程共享,所有字段和方法字節(jié)碼,以及一些特殊方法,如構(gòu)造函數(shù),接口代碼也在此定義,簡單說,所有定義的方法的信息都保存在該區(qū)域,此區(qū)域?qū)儆诠蚕韰^(qū)間;
?靜態(tài)變量、常量、類信息(構(gòu)造方法、接口定義)、運行時的常量池存在方法區(qū)中,但是實例變量存在堆內(nèi)存中,和方法區(qū)無關(guān)

image.png

圖 類實例化后

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

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