JVM體系結構
何謂JVM
JVM體系結構詳解
類加載器
執行引擎
Java內存管理
JVM工作機制
機器如何執行代碼
JVM爲何選擇基於棧的架構
執行引擎的架構設計
JIT:JVM在執行時會記錄某個方法的執行次數,如果執行的次數到了一個閾值(客戶端一般是1500次,服務器一般是10000次)時,JIT就會編譯這個方法爲本地方法。
JVM內存管理
衆所周知,Java是不需要程序員管理內存的,因爲強大的JVM會自動幫我們完成內存的分配和回收。但我們最好還是對Java如何管理內存有一定了解,以免遇到問題時一籌莫展。
相關知識
物理內存與虛擬內存
內核空間與用戶空間
Java中需要分配內存的地方
Java堆,線程,類和類加載器,NIO,JNI。
JVM內存結構
PC寄存器
Java棧
堆
方法區
運行時常量池
本地方法棧
JVM內存分配策略
JVM內存回收策略
內存回收策略可以分爲兩種,靜態內存分配和回收,動態內存分配和回收。
靜態內存分配和回收一般針對原生數據類型(int,long)。動態內存分配和回收一般針對Java對象。
如何檢測垃圾
不可達對象會被回收。
基於分代的垃圾收集算法
基於分代的堆結構
典型垃圾收集算法
這一部分爲個人補充。
Mark-Sweep(標記-清除)算法
Copying(複製)算法
Mark-Compact(標記-整理)算法
Generational Collection(分代收集)算法