對於java的類和對象內存中的分配

在Java中,類和對象的內存分配相信有很多同學和我一樣不是很清楚的,今天想到了這個疑惑,決定理清這個頭緒。

在java中內存總體分成四個部分:

stack segment(棧)

heap segment(堆)

code segment(代碼段)

data segment(靜態數據段);

然後我們再來剖析Java類中的內容,分析Java類(類封裝了對象的屬性和行爲),可以分成以下幾個部分:靜態變量、成員變量、局部變量、成員方法、局部方法,大體上就是這些;

類的定義會裝進代碼段中,然後當實例化的時候,會把new一個實實在在的對象進堆中,堆中有成員變量(不包含基本數據類型)都在堆中(也即除了8大基礎變量:byte、short、int、long、float、double、char、boolean),這些對象和變量的引用都會保存在棧中,並且指向堆中它們各自的位置,然後靜態變量的話就是存在靜態數據段,局部變量和基礎變量存在棧中,各種方法的話是保存在代碼段中的,只有當需要調用它們的時候纔會加載到棧中進行相應操作,運行完後還是會被彈出棧的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章