聲明對象Person p;
創建對象p=new Person();
棧內存:在方法中定義的變量(基本類型和引用類型)。超過變量的作用域時,自動釋放變量的內存。
堆內存:new創建的對象(包括數組),由Java的自動垃圾收集機制來清除
棧內存與堆內存的區別:
棧stack——連續的內存區域,大小固定,編譯時確定所需空間大小,效率高
堆heap——不連續的內存區域,運行時確定所需空間大小(支持面向對象的多態性,如:運行時才能確定是哪個類的對象),效率低,但靈活
附:
虛擬機內存結構:
類文件:java文件編譯後產生的字節碼文件
類加載器:虛擬機調用類加載到虛擬機的內存裏面
方法區:存類信息(類名、類修飾符、類屬性及屬性的數量、方法)、常量池、靜態數據。
棧:存基本數據類型、引用數據類型的變量名、引用類型的對象、局部變量
堆:存產生的真實對象、數組、動態分佈內存
本地方法棧:提供本地方法調用
程序計數器:控制程序指令線程
執行引擎:內存中調用數據信息
本地方法接口:調用本地方法棧、調用本地方法庫。