新聞中心
? 作為運(yùn)維,你不一定要會(huì)寫Java代碼,但是一定要懂Java在生產(chǎn)跑起來之后的各種機(jī)制。
? 本文為《Hi,運(yùn)維,你懂Java嗎》系列文章 第四篇,敬請(qǐng)關(guān)注后續(xù)系列文章
? 歡迎關(guān)注 ?龍叔運(yùn)維(公眾號(hào)) ?持續(xù)分享運(yùn)維經(jīng)驗(yàn)
前言本篇對(duì)java的JVM進(jìn)行初步的拆分講解,希望大家可以有一個(gè)整體概念,JVM是java運(yùn)維工作中很重要的點(diǎn)哦。
1、JVM組成JVM核心內(nèi)容一共分為四大塊:類加載器,運(yùn)行時(shí)數(shù)據(jù)區(qū),本地方法庫接口,執(zhí)行引擎
? 而對(duì)運(yùn)維來說最重要的就是要掌握運(yùn)行時(shí)數(shù)據(jù)區(qū)。
類加載器的作用就是將class文件字節(jié)碼內(nèi)容加載到JVM的運(yùn)行時(shí)數(shù)據(jù)區(qū)中。
類加載器按照加載的內(nèi)容來看可以分為:????????
- 啟動(dòng)類加載器(Bootstrap ClassLoader): 負(fù)責(zé)加載存放在
\lib 目錄中的核心類庫,如rt.jar、resources.jar等(或者被 -Xbootclasspath 參數(shù)所指定的路徑中的,并且是虛擬機(jī)識(shí)別的類庫)。這個(gè)加載器是 C++ 編寫的,隨著JVM啟動(dòng)。 - 擴(kuò)展類加載器(Extension ClassLoader): 負(fù)責(zé)加載
\lib\ext 目錄中的類庫,(同樣也可以用 java.ext.dirs 系統(tǒng)變量來指定路徑)。 - 應(yīng)用程序類加載器(Application ClassLoader): 負(fù)責(zé)加載用戶類路徑 classpath 上所有的 jar 包和 .class 文件。
- 自定義類加載器: 可以支持一些個(gè)性化的擴(kuò)展功能。
對(duì)于運(yùn)維來講,運(yùn)行時(shí)數(shù)據(jù)區(qū)是最需要掌握的知識(shí)點(diǎn)
分為 方法區(qū)(元空間)、堆、虛擬機(jī)棧、本地方法棧、程序計(jì)數(shù)器
這里不多講,回單開章節(jié)詳細(xì)講解
4、本地方法庫接口首先,什么是本地方法?
一個(gè)Native Method 就是一個(gè)java調(diào)用非java代碼的接口。該方法的實(shí)現(xiàn)由非java語言實(shí)現(xiàn),比如C 。定義一個(gè)native method時(shí),并不提供實(shí)現(xiàn)體,因?yàn)橛煞莏ava實(shí)現(xiàn)。
本地方法庫接口的作用是融合不同的編程語言為java所用。
5、執(zhí)行引擎類加載器只負(fù)責(zé)加載,而class文件是否可以執(zhí)行,這里就要看執(zhí)行引擎的了。
?????執(zhí)行引擎的任務(wù)就是將字節(jié)碼指令解釋/編譯為對(duì)應(yīng)平臺(tái)上的本地機(jī)器指令才可以。簡單來說,JVM中的執(zhí)行引擎充當(dāng)了將高級(jí)語言翻譯為機(jī)器語言的譯者。
執(zhí)行引擎在執(zhí)行的過程中究竟需要執(zhí)行什么樣的字節(jié)碼指令完全依賴于JVM中的程序計(jì)數(shù)器。每當(dāng)執(zhí)行完一項(xiàng)指令操作后,程序計(jì)數(shù)器就會(huì)更新下一條需要被執(zhí)行的指令地址。
————完
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
當(dāng)前名稱:Hi,運(yùn)維,你懂Java嗎--No.4:JVM-概述-創(chuàng)新互聯(lián)
本文來源:http://www.ef60e0e.cn/article/dggoeo.html