在Java中,內存的管理分爲: Stack(棧), Heap(堆), DataSegment(數據段), CodeSegment(代碼段)
Stack(棧): 基本數據類型(byte,short,int,long,char,float,double,boolean), 局部變量, 對象的引用地址
Heap(堆): 存放對象實例,new出來的東西放這裏
DataSegment(數據段): 靜態變量和字符串常量
CodeSegment(代碼段): 顧名思義存放代碼
實例:
下面通過分析一個例子來說明java變量是怎麼存放在內存中的
Code segment:arraylistlist[]=new arraylist[2];
Arraylist[0]=2;arraylist[1]=3;arraylist[2]=4;
因爲list[]是一個變量,這是一個聲明我們放到棧中。
而後面每個數組實例化出來的變量,所以放到堆中。
而實實在在存在的變量的值都是常量,所以放在常量池中,也就是上圖中的datasegment。