對象的內存模型

  • 聲明對象Person p;


wKiom1gZqvjQW-0QAABMv001YY8926.jpg


  • 創建對象p=new Person();


wKioL1gZqxLydS57AACCMPIlsSM766.jpg

  • 棧內存:在方法中定義的變量(基本類型和引用類型)。超過變量的作用域時,自動釋放變量的內存。


  • 堆內存:new創建的對象(包括數組),由Java的自動垃圾收集機制來清除


棧內存與內存的區別:


棧stack——連續的內存區域,大小固定編譯時確定所需空間大小,效率高

堆heap——不連續的內存區域,運行時確定所需空間大小(支持面向對象的多態性,如:運行時才能確定是哪個類的對象),效率低,但靈活


附:

虛擬機內存結構:

wKioL1g2kvXSon1_AAHiXK_6aGg073.jpg

類文件:java文件編譯後產生的字節碼文件

類加載器:虛擬機調用類加載到虛擬機的內存裏面

方法區:存類信息(類名、類修飾符、類屬性及屬性的數量、方法)、常量池、靜態數據。

:存基本數據類型、引用數據類型的變量名、引用類型的對象、局部變量

:存產生的真實對象、數組、動態分佈內存

本地方法棧:提供本地方法調用

程序計數器:控制程序指令線程

執行引擎:內存中調用數據信息

本地方法接口:調用本地方法棧、調用本地方法庫。








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章