jvm運行時數據區域

          Java語言與c語言有一個非常重要的區別就是:內存管理方式的不同,java語言內存管理不需要程序開發人員關注,而c語言的內存的請求和釋放都是開發人員來處理。辯證的思維來看,不同內存管理實現方式有優點和缺點,所以語言應用的場景,效率會有很大不同。

           

          Jvm運行時的數據區域主要有:程序計數器、虛擬機棧、本地方法棧、方法區和堆。其中程序計數器、虛擬機棧和本地方法棧是線程獨享,而方法區和堆是所有線程共享。

          ü 程序計數器:jvm每個線程都有一個程序計數器。在任一時刻都有一個線程的方法在運行,如果這個方法不是本地方法,那么程序計數器存放的就是正在執行的指令地址;如果是本地方法,那么程序計數器中存放的指定地址為undefined

          ü 虛擬機棧:當jvm創建一個線程的時候就會為線程分配一個虛擬機棧。主要用于存放方法的一些本地變量和部分結果,一般這里的大小都是固定,但不是絕對。一個方法的執行到完成就是棧的入棧和出棧。假設在某方法中定義了一個對象Object obj=new Object();其中obj是存放在棧上,而new Object()是在堆上分配。-Xss可以控制jvm虛擬機棧的大小。

          ü 本地方法棧:大體跟虛擬機棧類似,不過是給本地方法使用的。虛擬機棧和本地方法棧在hotspot是沒有分開實現的,而是統稱為棧。

          ü 方法區:主要存放靜態變量,常量,類加載器加載的類等一些信息。

          ü 堆:jvm絕大部分的對象分配都在堆上分配。-Xmn –Xmx是控制堆最小值和最大值,一般堆的大小在使用了超過mx設定的70%的時候,就會自動擴大到最大值,所以防止這種擴大和縮小我們設置成一樣的值。

          posted on 2012-02-07 10:27 yangpingyu 閱讀(295) 評論(0)  編輯  收藏 所屬分類: java基礎

          <2012年2月>
          2930311234
          567891011
          12131415161718
          19202122232425
          26272829123
          45678910

          導航

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          收藏夾

          linux

          產品交互

          分析,設計,架構

          安全

          技術牛人

          數據庫

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 旌德县| 富川| 巫山县| 宁晋县| 花垣县| 临江市| 葫芦岛市| 黎平县| 正安县| 宕昌县| 景宁| 芮城县| 拜城县| 达孜县| 广宁县| 池州市| 五河县| 襄垣县| 塔城市| 南丹县| 和龙市| 乐亭县| 广汉市| 万荣县| 珠海市| 鄂托克旗| 桑植县| 如皋市| 红河县| 精河县| 台州市| 泸州市| 永昌县| 资溪县| 龙川县| 淮阳县| 金堂县| 东平县| 开封县| 濉溪县| 宁安市|