JAVA_4
- 一、JAVA內存總體架構
- 二、棧的特點如下
- 三、堆的特點如下
- 四、方法區(又叫靜態區,也是堆)特點如下
- 五、this的本質
一、JAVA內存總體架構
- 多個線程里面有:程序計數器、虛擬機棧、本地方法棧
- 方法區:運行時常量池
- 堆:新生代和老生代,用于做對象的管理
- 直接內存和其他內存
二、棧的特點如下
- 棧描述的是方法執行的內存模型,每個方法被調用都會創建一個棧幀
- 先進后出,后進先出
- 棧系統自動會分配,速度快,是連續內存空間
- jvm為每個線程創建一個棧
- 棧為線程私有,不可共享
三、堆的特點如下
- 堆用于存儲創建好的對象和數組(也是對象)
- 堆是一個不連續的內存空間,分配靈活,速度慢(需要查找)
- jvm只有一個堆,所有線程共享
四、方法區(又叫靜態區,也是堆)特點如下
- 方法區是java虛擬機規范,可以有不同的實現,jdk8是元數據空間和堆結合起來
- 方法區也是堆,只是用于存儲類、常量相關的信息
- 用來存放程序中永遠不變或唯一的內容
- jvm只有一個方法區,所有線程共享
五、this的本質
- this的本質就是當前對象的地址,普通方法中指向調用該方法的對象,構造方法中指向初始化對象
- this可以調用重載的構造器!這種方法必須位于構造方法第一行
- 作為方法鏈式調用:通過在方法中返回"this",可以實現。這在建造者模式和流式API中很常見