今天起開始總結JVM。本身也看了好多JVM相關的知識,在此作個總結。java
打算分爲五個部分來說:JVM內存模型、JVM類加載機制、JVM垃圾回收機制、JVM啓動參數設置及優化、JVM其餘相關。優化
今天首先來看JVM內存模型。spa
————————————————————————————————————————————————————————————線程
JVM是java虛擬機,它將字節碼(.class文件)加載到內存裏解釋執行。對象
JVM運行時所需的數據放在運行時數據區,分爲5個部分:blog
1.堆:存儲JVM運行過程當中生成的對象內存
2.方法區:存儲類的結構信息,靜態變量信息,包含常量池(常量池存儲常量,字符串)字符串
3.程序計數器:始終指向JVM執行的下一條指令地址虛擬機
4.棧:JVM是基於棧執行的虛擬機,每啓動一個線程,都會分配一塊棧空間,JVM的執行就是將棧幀入棧和出棧的操做class
5.本地方法棧:執行非java方法,本地方法的棧空間
其中,堆和方法區是全部線程共享的;程序計數器、棧和本地方法棧是每一個線程所私有的。