java運行時區域總結

如圖:ide

    


程序計數器(Program Counter Register):線程

    是一塊較小的內存空間,它能夠看做是當前線程所執行的字節碼的行號指示器、每條線程都須要有一個獨立的程序計數器,各條線程之間計數器互不影響,獨立存儲。「線程私有」的內存。惟一沒有規定任何OutOfMemoryError的區域。對象


Java虛擬棧;blog

    線程私有,生命週期與線程相同。用於存儲局部變量表、操做數棧、動態連接、方法出口等信息;
生命週期

     棧長度不夠,拋出StackOverflowError;申請棧空間失敗:拋出OutOfMemoryError內存


本地方法棧:編譯器

   與Java虛擬棧功能類似;只是存儲方法不一樣;虛擬機


Java堆:it

    全部線程共享,惟一存放對象實例的內存區域,幾乎全部的對象實例都在這裏分配內存。能夠處於物理上不連續的內存空間上,只要邏輯上是連續的便可;經過(-Xmx和 -Xms控制)編譯


方法區(Method Area 或 Non-Heap):

    全部線程共享,用於存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯後的代碼等數據,能夠出現OOM


運行時常量池

方法區的一部分,用於存放編譯器生成的各類字面量和符號引用,這部份內容將在類加載後進入方法區的運行時常量池中存放

相關文章
相關標籤/搜索