熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

JVM Memory

2013-11-23 19:08:48  來源: Java核心技術 

  · Stack Memory (棧內存)  <_edition/html/l>: 虛擬機的每一個線程都有一個私有的棧當一個方法被調用時下面內容被作為一個Frame (幀) <_edition/html/l>被創建並且被壓入棧中

  + 局部變量包括基本數據類型對象的引用和返回值地址

  + 一個自己的操作棧幀內局部變量進行運算時使用也用於傳遞方法的參數和接受方法的返回值

  + 一個當前方法所在類的Runtime constant pool (常量池) <_edition/html/l>的引用

  方法調用完成時幀出棧並銷毀無論方法是正常結束還是有未捕獲的異常

  · Heap Memory(堆內存) <_edition/html/l> : 虛擬機的堆內存保存的是對象類變量以及實例變量它被所有線程共享常說的垃圾回收就是對堆內存的回收

  ++

  |    Stack Memory       | > 線程私有

  ++

  |         ^             | +

  +|+        |

  |         |             |        |

  +Heap Memory+        |

  |         |             |        |> 線程共享

  +|+        |

  |         v             |        |

  ++        |

  |    Method Area        | +

  ++

  當JVM加載一個class時 將該類的一些信息保存到Method Area包括Runtime constant pool 方法數據方法和構造器代碼域等Runtime constant pool 則 包括類名父類名靜態變量等

  Method Area在邏輯上屬於Heap不過它垃圾回收與Heap可能不同取決於JVM的實現

  當通過new Class()方式創建一個實例時JVM在Method Area尋址到該類的基 本信息 同時進行相關實例的初始化(包括實例變量)存貯在Heap中


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26358.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.