Java堆疊
Java 堆疊總是和執行緒關聯在一起,每當建立一個執行緒時,JVM就會為這個執行緒建立一個對應的Java棧,在這個Java棧中又會含有多個棧,這些棧幀是與每個方法關聯起來的,每個運行一個方法就創建一個棧幀會含有一些「內部變數"(在方法內定義的變數)、"操作棧"和"方法傳回值"等資訊。
Java堆
堆是儲存Java 物件的地方,它是JVM管理Java 物件的核心儲存區域,而堆是Java 程式設計師最應該關心的,因為它是我們的應用程度與記憶體關係最密切的儲存區域。
每一個儲存在堆疊中的Java 物件都會是這個物件的類別的副本,它會複製包含繼承自它父類別的所有非靜態屬性。
堆是被所有 Java 執行緒所共享的,所以對它的存取需要注意同步問題,方法和對應的屬性都需要保證一致性。
記憶體可以分為3個區:方法區(又叫靜態區method)、堆疊(stack)和堆疊(heap)
1.方法區
存放所有的class(即類別中的函數也存放於此區)和靜態變量,方法區存放的是整個程式中唯一的元素,如class和static變數。可以被所有的線程共享,這一點和堆heap一樣。
2.堆疊記憶體:
儲存的都是局部變量,而且變數所屬的作用域一旦結束,變數就會自動釋放。
3.堆記憶體
儲存的都是實體,陣列和物件(陣列就是物件),每個實體都有一個首位址值。凡是new出來的都在堆內存,並且都會進行預設的初始化。不需要手動釋放、自動垃圾回收。
推薦教學:Java教學
以上是java中棧和堆的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!