1. 程式人生 > >解釋內存中的棧(stack)、堆(heap)和靜態區(static area)的用法。

解釋內存中的棧(stack)、堆(heap)和靜態區(static area)的用法。

ner 創建 static padding IT body 新版 變量 類型

通常我們定義一個基本數據類型的變量,一個對象的引用,還有就是函數調用的現場保存都使用內存中的棧空間;而通過new關鍵字和構造器創建的對象放在堆空間;程序中的字面量(literal)如直接書寫的100、”hello”和常量都是放在靜態區中。棧空間操作起來最快但是棧很小,通常大量的對象都是放在堆空間,理論上整個內存沒有被其他進程使用的空間甚至硬盤上的虛擬內存都可以被當成堆空間來使用。

1 String str = new String("hello");

上面的語句中變量str放在棧上,用new創建出來的字符串對象放在堆上,而”hello”這個字面量放在靜態區。

補充:

較新版本的Java(從Java 6的某個更新開始)中使用了一項叫”逃逸分析”的技術,可以將一些局部對象放在棧上以提升對象的操作性能。

解釋內存中的棧(stack)、堆(heap)和靜態區(static area)的用法。