Hi,运维,你懂Java吗--No.4:JVM-概述
? ? ? ? 作為運維,你不一定要會寫Java代碼,但是一定要懂Java在生產跑起來之后的各種機制。
? ? ? ? 本文為《Hi,運維,你懂Java嗎》系列文章 第四篇,敬請關注后續(xù)系列文章
? ? ? ? 歡迎關注 ?龍叔運維(公眾號) ?持續(xù)分享運維經驗
前言
????????本篇對java的JVM進行初步的拆分講解,希望大家可以有一個整體概念,JVM是java運維工作中很重要的點哦。
1、JVM組成
????????JVM核心內容一共分為四大塊:類加載器,運行時數(shù)據(jù)區(qū),本地方法庫接口,執(zhí)行引擎
? ? ? ? 而對運維來說最重要的就是要掌握運行時數(shù)據(jù)區(qū)。
2、類加載器
????????類加載器的作用就是將class文件字節(jié)碼內容加載到JVM的運行時數(shù)據(jù)區(qū)中。
????????類加載器按照加載的內容來看可以分為:????????
- 啟動類加載器(Bootstrap ClassLoader): 負責加載存放在 <JAVA_HOME>\lib 目錄中的核心類庫,如rt.jar、resources.jar等(或者被 -Xbootclasspath 參數(shù)所指定的路徑中的,并且是虛擬機識別的類庫)。這個加載器是 C++ 編寫的,隨著JVM啟動。
- 擴展類加載器(Extension ClassLoader): 負責加載<JAVA_HOME>\lib\ext 目錄中的類庫,(同樣也可以用 java.ext.dirs 系統(tǒng)變量來指定路徑)。
- 應用程序類加載器(Application ClassLoader): 負責加載用戶類路徑 classpath 上所有的 jar 包和 .class 文件。
- 自定義類加載器: 可以支持一些個性化的擴展功能。
3、運行時數(shù)據(jù)區(qū)
????????對于運維來講,運行時數(shù)據(jù)區(qū)是最需要掌握的知識點
????????分為 方法區(qū)(元空間)、堆、虛擬機棧、本地方法棧、程序計數(shù)器
????????這里不多講,回單開章節(jié)詳細講解
4、本地方法庫接口
????????首先,什么是本地方法?
????????一個Native Method 就是一個java調用非java代碼的接口。該方法的實現(xiàn)由非java語言實現(xiàn),比如C 。定義一個native method時,并不提供實現(xiàn)體,因為由非java實現(xiàn)。
????????本地方法庫接口的作用是融合不同的編程語言為java所用。
5、執(zhí)行引擎
????????類加載器只負責加載,而class文件是否可以執(zhí)行,這里就要看執(zhí)行引擎的了。
????????????????執(zhí)行引擎的任務就是將字節(jié)碼指令解釋/編譯為對應平臺上的本地機器指令才可以。簡單來說,JVM中的執(zhí)行引擎充當了將高級語言翻譯為機器語言的譯者。
????????執(zhí)行引擎在執(zhí)行的過程中究竟需要執(zhí)行什么樣的字節(jié)碼指令完全依賴于JVM中的程序計數(shù)器。每當執(zhí)行完一項指令操作后,程序計數(shù)器就會更新下一條需要被執(zhí)行的指令地址。
————完
總結
以上是生活随笔為你收集整理的Hi,运维,你懂Java吗--No.4:JVM-概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QuickBooks 2020 for
- 下一篇: 关于Mariadb数据库 配置