java 運行時內存分配 堆和棧區別

meteor 8年前發布 | 22K 次閱讀 Java開發

來自: http://blog.csdn.net//never_cxb/article/details/47976943


java 運行時 內存 分配

一個java進程可以包含多個線程

一個Java進程對應唯一一個JVM實例

一個JVM實例唯一對應一個堆

每一個線程有一個自己私有的棧

這兒也可以看出線程共享進程的堆, 但不共享棧
這篇文章里有一道 線程和進程面試題

堆是被線程共享的
一個進程只有一個堆
堆中存放對象本身和數組本身

java 中, 數組(比如 int[]) 也是繼承Object對象, 不是繼承Object[]

數據結構里面講了, 棧是先入后出
棧中存放的是對象的引用(聲明和引用對象是有先后順序的, 可能也是和棧有關)


堆和棧比較

棧的速度比堆快, 堆分配比棧靈活
一般來說, 可用的堆空間比棧大

靜態存儲區

這點好像有異議, java 到底有沒有靜態存儲區?
一般 帶有 static 關鍵字的就存放在靜態存儲區

細節的就不要深究了

</div>

 本文由用戶 meteor 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!