java底层原理书籍_不愧是阿里p8大佬!终于把Java 虚拟机底层原理讲清楚了,请签收...
概述
JVM 的內存模型和 JVM 的垃圾回收機制一直是 Java 業內從業者繞不開的話題(實際調優、面試)JVM是java中很重要的一塊知識,也是面試常問的問題之一,直至今天,仍然還有許多面試者在被問到Java虛擬機相關問題時,還是一臉懵逼,面試完之后直接被虐哭。今天特分享阿里架構師整理的Java虛擬機底層原理,請簽收!
清單
由于文章篇幅限制,為了避免影響閱讀體驗,以下內容已截圖展示,需要完整超清版本的可以在文末獲取!!!
JVM 內存結構
Java 虛擬機的內存空間分為 5 個部分:
- 程序計數器
- Java 虛擬機棧
- 本地方法棧
- 堆
- 方法區
HotSpot 虛擬機對象探秘
在 HotSpot 虛擬機中,對象的內存布局分為以下 3 塊區域:
- 對象頭(Header)
- 實例數據(Instance Data)
- 對齊填充(Padding)
垃圾收集策略與算法
程序計數器、虛擬機棧、本地方法棧隨線程而生,也隨線程而滅;棧幀隨著方法的開始而入棧,隨著方法的結束而出棧。這幾個區域的內存分配和回收都具有確定性,在這幾個區域內不需要過多考慮回收的問題,因為方法結束或者線程結束時,內存自然就跟隨著回收了。
而對于 Java 堆和方法區,我們只有在程序運行期間才能知道會創建哪些對象,這部分內存的分配和回收都是動態的,垃圾收集器所關注的正是這部分內存。
HotSpot 垃圾收集器
HotSpot 虛擬機提供了多種垃圾收集器,每種收集器都有各自的特點,雖然我們要對各個收集器進行比較,但并非為了挑選出一個最好的收集器。我們選擇的只是對具體應用最合適的收集器。
內存分配與回收策略
對象的內存分配,就是在堆上分配(也可能經過 JIT 編譯后被拆散為標量類型并間接在棧上分配),對象主要分配在新生代的 Eden 區上,少數情況下可能直接分配在老年代,分配規則不固定,取決于當前使用的垃圾收集器組合以及相關的參數配置。
JVM 性能調優
在高性能硬件上部署程序,目前主要有兩種方式:
- 通過 64 位 JDK 來使用大內存;
- 使用若干個 32 位虛擬機建立邏輯集群來利用硬件資源。
類文件結構
類加載的時機
類從被加載到虛擬機內存開始,到卸載出內存為止,它的整個生命周期包括以下
7 個階段:
- 加載
- 驗證
- 準備
- 解析
- 初始化
- 使用
- 卸載
驗證、準備、解析 3 個階段統稱為連接。
類加載的過程
類加載過程包括 5 個階段:加載、驗證、準備、解析和初始化。
類加載器
如果需要獲取上述Java 虛擬機底層原理知識筆記,只需要轉發+關注,私信關鍵詞【筆記】即可免費獲取!!!
總結
以上是生活随笔為你收集整理的java底层原理书籍_不愧是阿里p8大佬!终于把Java 虚拟机底层原理讲清楚了,请签收...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 数据库 实战_干货!pyt
- 下一篇: everedit选择_EverEdit(