【jv篇之4個核心問題】
1、jv的原理?
2、描述下java虛拟機(jv)的内存結構?
3、談談jv中的類加載過程?
4、如何優化jv的性能?
二、jv(4個)
1、jv的原理?
在java中,jv(javavirtualae,java虛拟機)是java平台的核心組件。
它負責執行java字節碼,并在不同的操作系統和硬件平台上,提供一緻的java運行環境。
jv的原理,要從7個方面說起,即java字節碼,類加載,執行引擎,内存管理,垃圾回收,本地方法接口,安全性。
下面,我就從以上這7個方面,來具體簡要介紹一下,jv的原理:
1)java字節碼
java源代碼(java文件)首先被java編譯器(javac)編譯成字節碼(class文件)。
這些字節碼,是平台無關的,意味着它們可以在任何支持java的平台上運行。
2)類加載
jv中有一個類加載器(classloader)。
它的任務是将字節碼文件加載到jv中,并轉換成jv可以執行的數據結構。
這個過程中,還會進行包括鍊接(驗證、準備、解析)和初始化等步驟。
3)執行引擎
執行引擎負責解釋(或即時編譯)和執行字節碼。
解釋執行是指逐條讀取字節碼指令并執行。
而即時編譯(jit,jt--tipiler)則是,将一部分頻繁執行的字節碼,編譯成機器碼,以提高執行效率。
4)内存管理
jv管理着java程序的内存,包括方法區、堆、棧、程序計數器以及本地方法棧等部分。
(1)方法區存放類元數據;
(2)堆是存放對象實例的地方;
(3)棧用于存放基本數據類型和對象引用;
(4)程序計數器記錄當前線程執行的字節碼位置;
(5)本地方法棧用于執行本地方法。
5)垃圾回收
jv負責自動管理堆内存中的對象生命周期。
當對象不再被引用時,垃圾回收器會自動回收其占用的内存,防止内存洩漏。
6)本地方法接口
jv提供了本地方法接口(jni),允許java代碼與本地代碼(如c、c++代碼)進行交互。
javanativeterface(jni)。
jni使得java代碼,可以與其他語言寫的代碼,進行交互。
通過jni,java程序,可以調用本地方法庫(通常是c或c++編寫的)中的函數。
也可以,被其他語言寫的程序調用。
7)安全性
請勿開啟浏覽器閱讀模式,否則将導緻章節内容缺失及無法閱讀下一章。
相鄰推薦:病嬌女總裁,開局非要貼貼才能好 火槍靈能與錦衣衛 讓你去修仙,不是去修仙子! 修仙:我的分身是洪荒巨獸 豬肉西施她,幹活比殺豬還絲滑! 末世多子多福,從美豔老闆娘開始 大明中興全憑殺殺殺搶搶搶 主宰見聞錄 這真是戀愛攻略? 我的監護人是機器人 全家都在拖後腿,大帥追妻太難了 惹我?開局就讓你跪下求治病 鬥羅:不想成為主角呀 某魔圓的真理之名 穿越諸天:從拜師九叔開始 萬器 赤紅,寶可夢最強精靈訓練家 大唐皇子:我有農場系統 重生?我真是好男人啊! 我被她們戀愛模拟了?