棧用於存儲局部變量,包括基本類型的變量(方法語句塊內部定義的變量、方法中的形參)、引用類型的變量,它們都是存儲在各自的方法棧中,隨着方法的執行完成而消失;java
堆用於存儲引用類型變量所指向的對象,包括普通的java對象以及數組。當指向堆中對象的引用變量消失之後,堆中對象所佔用的內存在合適的時間會被垃圾回收器回收;數組
常量池用於存放字符串常量以及基本數據類型的常量;對象
靜態域用於存放類的靜態的成員變量,這些變量是屬於這個類的,而不是屬於某一的對象的,普通的成員變量存放在堆內存中。內存