精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

jvm系列(二):JVM內存結構

開發 開發工具
所有的Java開發人員可能會遇到這樣的困惑?我該為堆內存設置多大空間呢?OutOfMemoryError的異常到底涉及到運行時數據的哪塊區域?

所有的Java開發人員可能會遇到這樣的困惑?我該為堆內存設置多大空間呢?OutOfMemoryError的異常到底涉及到運行時數據的哪塊區域?該怎么解決呢?其實如果你經常解決服務器性能問題,那么這些問題就會變的非常常見,了解JVM內存也是為了服務器出現性能問題的時候可以快速的了解那塊的內存區域出現問題,以便于快速的解決生產故障。

先看一張圖,這張圖能很清晰的說明JVM內存結構布局。

JVM內存結構主要有三大塊:堆內存、方法區和棧。堆內存是JVM中***的一塊由年輕代和老年代組成,而年輕代內存又被分成三部分,Eden空間、From Survivor空間、To Survivor空間,默認情況下年輕代按照8:1:1的比例來分配;

方法區存儲類信息、常量、靜態變量等數據,是線程共享的區域,為與Java堆區分,方法區還有一個別名Non-Heap(非堆);棧又分為java虛擬機棧和本地方法棧主要用于方法的執行。

在通過一張圖來了解如何通過參數來控制各區域的內存大小

控制參數

  • -Xms設置堆的最小空間大小。
  • -Xmx設置堆的***空間大小。
  • -XX:NewSize設置新生代最小空間大小。
  • -XX:MaxNewSize設置新生代***空間大小。
  • -XX:PermSize設置***代最小空間大小。
  • -XX:MaxPermSize設置***代***空間大小。
  • -Xss設置每個線程的堆棧大小。

沒有直接設置老年代的參數,但是可以設置堆空間大小和新生代空間大小兩個參數來間接控制。

老年代空間大小=堆空間大小-年輕代大空間大小

從更高的一個維度再次來看JVM和系統調用之間的關系

方法區和對是所有線程共享的內存區域;而java棧、本地方法棧和程序員計數器是運行是線程私有的內存區域。

下面我們詳細介紹每個區域的作用

Java堆(Heap)

對于大多數應用來說,Java堆(Java Heap)是Java虛擬機所管理的內存中***的一塊。Java堆是被所有線程共享的一塊內存區域,在虛擬機啟動時創建。此內存區域的唯一目的就是存放對象實例,幾乎所有的對象實例都在這里分配內存。

Java堆是垃圾收集器管理的主要區域,因此很多時候也被稱做“GC堆”。如果從內存回收的角度看,由于現在收集器基本都是采用的分代收集算法,所以Java堆中還可以細分為:新生代和老年代;再細致一點的有Eden空間、From Survivor空間、To Survivor空間等。

根據Java虛擬機規范的規定,Java堆可以處于物理上不連續的內存空間中,只要邏輯上是連續的即可,就像我們的磁盤空間一樣。在實現時,既可以實現成固定大小的,也可以是可擴展的,不過當前主流的虛擬機都是按照可擴展來實現的(通過-Xmx和-Xms控制)。

如果在堆中沒有內存完成實例分配,并且堆也無法再擴展時,將會拋出OutOfMemoryError異常。

方法區(Method Area)

方法區(Method Area)與Java堆一樣,是各個線程共享的內存區域,它用于存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯后的代碼等數據。雖然Java虛擬機規范把方法區描述為堆的一個邏輯部分,但是它卻有一個別名叫做Non-Heap(非堆),目的應該是與Java堆區分開來。

對于習慣在HotSpot虛擬機上開發和部署程序的開發者來說,很多人愿意把方法區稱為“***代”(Permanent Generation),本質上兩者并不等價,僅僅是因為HotSpot虛擬機的設計團隊選擇把GC分代收集擴展至方法區,或者說使用***代來實現方法區而已。

Java虛擬機規范對這個區域的限制非常寬松,除了和Java堆一樣不需要連續的內存和可以選擇固定大小或者可擴展外,還可以選擇不實現垃圾收集。相對而言,垃圾收集行為在這個區域是比較少出現的,但并非數據進入了方法區就如***代的名字一樣“***”存在了。這個區域的內存回收目標主要是針對常量池的回收和對類型的卸載,一般來說這個區域的回收“成績”比較難以令人滿意,尤其是類型的卸載,條件相當苛刻,但是這部分區域的回收確實是有必要的。

根據Java虛擬機規范的規定,當方法區無法滿足內存分配需求時,將拋出OutOfMemoryError異常。

方法區有時被稱為持久代(PermGen)。

所有的對象在實例化后的整個運行周期內,都被存放在堆內存中。堆內存又被劃分成不同的部分:伊甸區(Eden),幸存者區域(Survivor Sapce),老年代(Old Generation Space)。

方法的執行都是伴隨著線程的。原始類型的本地變量以及引用都存放在線程棧中。而引用關聯的對象比如String,都存在在堆中。為了更好的理解上面這段話,我們可以看一個例子:

  1. import java.text.SimpleDateFormat; 
  2. import java.util.Date
  3. import org.apache.log4j.Logger; 
  4.   
  5. public class HelloWorld { 
  6.     private static Logger LOGGER = Logger.getLogger(HelloWorld.class.getName()); 
  7.     public void sayHello(String message) { 
  8.         SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.YYYY"); 
  9.         String today = formatter.format(new Date()); 
  10.         LOGGER.info(today + ": " + message); 
  11.     } 

這段程序的數據在內存中的存放如下:

通過JConsole工具可以查看運行中的Java程序(比如Eclipse)的一些信息:堆內存的分配,線程的數量以及加載的類的個數;

程序計數器(Program Counter Register)

程序計數器(Program Counter Register)是一塊較小的內存空間,它的作用可以看做是當前線程所執行的字節碼的行號指示器。在虛擬機的概念模型里(僅是概念模型,各種虛擬機可能會通過一些更高效的方式去實現),字節碼解釋器工作時就是通過改變這個計數器的值來選取下一條需要執行的字節碼指令,分支、循環、跳轉、異常處理、線程恢復等基礎功能都需要依賴這個計數器來完成。

由于Java虛擬機的多線程是通過線程輪流切換并分配處理器執行時間的方式來實現的,在任何一個確定的時刻,一個處理器(對于多核處理器來說是一個內核)只會執行一條線程中的指令。因此,為了線程切換后能恢復到正確的執行位置,每條線程都需要有一個獨立的程序計數器,各條線程之間的計數器互不影響,獨立存儲,我們稱這類內存區域為“線程私有”的內存。

如果線程正在執行的是一個Java方法,這個計數器記錄的是正在執行的虛擬機字節碼指令的地址;如果正在執行的是Natvie方法,這個計數器值則為空(Undefined)。

此內存區域是唯一一個在Java虛擬機規范中沒有規定任何OutOfMemoryError情況的區域。

JVM棧(JVM Stacks)

與程序計數器一樣,Java虛擬機棧(Java Virtual Machine Stacks)也是線程私有的,它的生命周期與線程相同。虛擬機棧描述的是Java方法執行的內存模型:每個方法被執行的時候都會同時創建一個棧幀(Stack Frame)用于存儲局部變量表、操作棧、動態鏈接、方法出口等信息。每一個方法被調用直至執行完成的過程,就對應著一個棧幀在虛擬機棧中從入棧到出棧的過程。

局部變量表存放了編譯期可知的各種基本數據類型(boolean、byte、char、short、int、float、long、double)、對象引用(reference類型,它不等同于對象本身,根據不同的虛擬機實現,它可能是一個指向對象起始地址的引用指針,也可能指向一個代表對象的句柄或者其他與此對象相關的位置)和returnAddress類型(指向了一條字節碼指令的地址)。

其中64位長度的long和double類型的數據會占用2個局部變量空間(Slot),其余的數據類型只占用1個。局部變量表所需的內存空間在編譯期間完成分配,當進入一個方法時,這個方法需要在幀中分配多大的局部變量空間是完全確定的,在方法運行期間不會改變局部變量表的大小。

在Java虛擬機規范中,對這個區域規定了兩種異常狀況:如果線程請求的棧深度大于虛擬機所允許的深度,將拋出StackOverflowError異常;如果虛擬機棧可以動態擴展(當前大部分的Java虛擬機都可動態擴展,只不過Java虛擬機規范中也允許固定長度的虛擬機棧),當擴展時無法申請到足夠的內存時會拋出OutOfMemoryError異常。

本地方法棧(Native Method Stacks)

本地方法棧(Native Method Stacks)與虛擬機棧所發揮的作用是非常相似的,其區別不過是虛擬機棧為虛擬機執行Java方法(也就是字節碼)服務,而本地方法棧則是為虛擬機使用到的Native方法服務。虛擬機規范中對本地方法棧中的方法使用的語言、使用方式與數據結構并沒有強制規定,因此具體的虛擬機可以自由實現它。甚至有的虛擬機(譬如Sun HotSpot虛擬機)直接就把本地方法棧和虛擬機棧合二為一。與虛擬機棧一樣,本地方法棧區域也會拋出StackOverflowError和OutOfMemoryError異常。

哪兒的OutOfMemoryError

對內存結構清晰的認識同樣可以幫助理解不同OutOfMemoryErrors:

  1. Exception in thread “main”: java.lang.OutOfMemoryError: Java heap space 

原因:對象不能被分配到堆內存中

  1. Exception in thread “main”: java.lang.OutOfMemoryError: PermGen space 

原因:類或者方法不能被加載到老年代。它可能出現在一個程序加載很多類的時候,比如引用了很多第三方的庫;

  1. Exception in thread “main”: java.lang.OutOfMemoryError: Requested array size exceeds VM limit 

原因:創建的數組大于堆內存的空間

  1. Exception in thread “main”: java.lang.OutOfMemoryError: request <size> bytes for <reason>. Out of swap space

原因:分配本地分配失敗。JNI、本地庫或者Java虛擬機都會從本地堆中分配內存空間。

  1. Exception in thread “main”: java.lang.OutOfMemoryError: <reason> <stack trace>(Native method) 

原因:同樣是本地方法內存分配失敗,只不過是JNI或者本地方法或者Java虛擬機發現

【本文為51CTO專欄作者“純潔的微笑”的原創稿件,轉載請通過微信公眾號聯系作者獲取授權】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2010-09-27 13:48:41

JVM內存結構

2010-09-27 09:31:42

JVM內存結構

2012-01-11 10:45:57

JavaJVM

2021-08-13 08:15:23

JVM 虛擬機Java

2017-09-22 15:15:23

jvm調優命令

2017-11-01 15:38:54

jvm知識點總覽

2017-10-17 14:02:30

jvm調優工具

2023-11-19 23:29:22

Heap DumpJava

2013-03-29 11:09:17

JVM內存

2018-07-04 14:43:55

對象模型內存結構內存模型

2020-04-15 21:43:22

JVMJavaVMware

2010-09-26 16:42:04

JVM內存組成JVM垃圾回收

2021-10-11 19:54:04

JVM面試虛擬機

2022-06-10 07:13:29

JVM垃圾回收

2021-06-01 09:29:43

ArthasJVM內存

2011-06-22 12:57:54

JVM

2010-09-26 11:32:39

JVM結構

2025-06-16 07:40:00

2018-11-01 10:34:37

JVM內存配置

2012-05-15 02:04:22

JVMJava
點贊
收藏

51CTO技術棧公眾號

污污视频在线观看网站| 懂色av.com| 视频一区中文字幕精品| 亚洲第一在线综合网站| 欧洲久久久久久| 国产欧美久久久| 国产精品乱看| 久久久精品电影| 国产亚洲色婷婷久久99精品91| 欧美理论影院| 亚洲一区二区在线观看视频| 欧洲一区二区在线观看| av综合在线观看| 久久激情一区| 欧美国产高跟鞋裸体秀xxxhd| 无码一区二区三区在线| 视频国产精品| 精品视频1区2区| 久激情内射婷内射蜜桃| 欧美jizz18hd性欧美| 久久综合色婷婷| 成人综合色站| 国产视频一二三四区| 首页亚洲欧美制服丝腿| 久久久这里只有精品视频| 国产激情av在线| 午夜欧洲一区| 亚洲第一在线视频| 三日本三级少妇三级99| 向日葵视频成人app网址| 亚洲在线成人精品| 国产日本欧美在线| 成黄免费在线| 久久先锋资源网| 国产精品亚洲综合| av中文字幕免费在线观看| 免费看欧美美女黄的网站| 欧美成人午夜激情| 男人av资源站| 日韩免费一区| xvideos亚洲| 四季av中文字幕| 欧美日韩色图| 国产香蕉精品视频一区二区三区| 久久午夜夜伦鲁鲁片| 91欧美极品| 亚洲国产91精品在线观看| 深夜福利网站在线观看| 国产第一精品| 欧美日韩一区高清| 国产精品久久久毛片| 国产亚洲一区二区手机在线观看| 婷婷综合在线观看| www国产精品内射老熟女| brazzers在线观看| 婷婷激情综合网| 精品国产免费av| 亚洲v.com| 色8久久人人97超碰香蕉987| 无码aⅴ精品一区二区三区浪潮| 性爽视频在线| 在线国产电影不卡| 91女神在线观看| 国产成人免费视频网站视频社区| 欧美精品自拍偷拍动漫精品| aaa一级黄色片| 日韩精品一区二区三区中文在线| 欧美一区二区三区色| 亚洲精品无码久久久久久久| 成人福利一区| 日韩精品免费观看| www.av天天| 久久久人成影片免费观看| 久久国产精品免费视频 | 欧美三级午夜理伦三级在线观看 | 日本高清视频在线播放| 成人免费一区二区三区在线观看| 蜜臀av.com| a国产在线视频| 91久久免费观看| 中文字幕66页| swag国产精品一区二区| 亚洲美女动态图120秒| 黄色av免费播放| 欧美在线网站| 欧美孕妇与黑人孕交| 亚洲天堂久久久久| 福利视频网站一区二区三区| 欧美高清性xxxxhdvideosex| 青青青青在线| 婷婷久久综合九色国产成人 | 一区二区三区高清国产| 99久久99久久精品国产| 亚洲黄色免费| 国产欧美日韩精品丝袜高跟鞋| 国产wwwxxx| 久久久电影一区二区三区| 在线视频福利一区| 麻豆免费在线| 91精品久久久久久久久99蜜臂| 男女一区二区三区| 国产精品国产三级国产在线观看| 国内精品久久久久久中文字幕| 黄色一区二区视频| 成人va在线观看| 影音欧美亚洲| 亚洲妇女成熟| 精品国产三级电影在线观看| 精品人妻中文无码av在线| 伊人影院久久| 亚洲一区亚洲二区亚洲三区| 狠狠v欧美ⅴ日韩v亚洲v大胸| 一区二区在线观看免费视频播放| jizz欧美激情18| 激情小说一区| 欧美成人激情视频| 欧美性猛交xxxx乱大交hd | 欧美成人午夜精品免费| 欧美日本在线| 国产在线播放不卡| 男女视频在线观看| 亚洲国产另类精品专区| 国产亚洲色婷婷久久| 久久国产成人午夜av影院宅| 青草青草久热精品视频在线观看| 亚洲大尺度网站| 亚洲天堂福利av| 国产精品视频黄色| 欧美人与牛zoz0性行为| 亚洲91精品在线观看| 亚洲av无码片一区二区三区| 亚洲视频1区2区| 中文字幕 91| 欧美日韩老妇| 国产精品吊钟奶在线| 天堂av在线免费观看| 亚洲一区二区三区在线看| 波多野结衣免费观看| 久久精品一区二区不卡| 国产美女直播视频一区| 中国日本在线视频中文字幕| 精品视频1区2区| 欧美日韩生活片| 秋霞av亚洲一区二区三| 相泽南亚洲一区二区在线播放| 神马电影网我不卡| 亚洲性视频网站| 黄色av一区二区| 国产午夜精品福利| 亚洲不卡视频在线| 久久精品国产99久久| 国产精品丝袜久久久久久不卡| av网站大全在线观看| 在线观看视频一区| 美国黄色特级片| 国产在线精品免费| 欧美另类videosbestsex日本| 激情五月综合婷婷| 色综合久久中文字幕综合网小说| 国产哺乳奶水91在线播放| 一区二区三区波多野结衣在线观看 | 日本免费新一区视频| 亚洲精品国产精品国自产| 四虎影视成人精品国库在线观看| 久久色免费在线视频| 国产99999| 五月综合激情网| 在哪里可以看毛片| 久久精品国产亚洲aⅴ | 国产黄色大片在线观看| 亚洲精品mp4| 无码人妻丰满熟妇区五十路| 中文字幕制服丝袜一区二区三区| www激情五月| 亚洲区第一页| 日韩欧美一区二区三区四区| 中文字幕成人| 午夜精品久久久久久久久久久久久| 亚洲色图21p| 欧美视频你懂的| 五月婷婷一区二区| 久久亚洲综合色一区二区三区| 亚洲精品一二三四五区| 91精品啪在线观看国产18| 国产高清自拍99| 日韩在线观看不卡| 欧美国产日韩一区二区| 可以在线观看的av网站| 在线不卡免费av| 天天做天天爱夜夜爽| 国产精品伦理一区二区| 欧美xxxxx少妇| 麻豆成人免费电影| 成人一对一视频| 91麻豆精品国产91久久久平台| 成人永久免费| 欧美a视频在线| 欧美亚洲国产视频小说| 快射av在线播放一区| 国产视频综合在线| 国产极品久久久| 色狠狠色狠狠综合| 国产第一页在线播放| 中文字幕精品三区| 加勒比精品视频| 国产一区二区三区在线看麻豆| 青青草原成人网| 狠狠色丁香久久综合频道| 性欧美大战久久久久久久免费观看| 高清欧美性猛交xxxx黑人猛| 成人黄色在线观看| 欧洲一级精品| 97在线看免费观看视频在线观看| 男人在线资源站| 亚洲图片在线综合| 无码精品在线观看| 日韩精品一区二区在线观看| 亚洲手机在线观看| 日本高清无吗v一区| 日本中文字幕免费| 夜夜嗨av一区二区三区中文字幕| gv天堂gv无码男同在线观看| 91麻豆免费观看| 中国免费黄色片| 国产精品资源站在线| 最新国产黄色网址| 日日摸夜夜添夜夜添国产精品 | 末成年女av片一区二区下载| 欧美日韩国产va另类| 国产黄色在线网站| 日韩中文字幕精品视频| 国产九色在线| 国产一区二区动漫| 男人久久精品| 国产亚洲精品成人av久久ww| 四虎在线免费看| 日韩免费在线观看| 精品人妻无码一区二区色欲产成人 | 欧美另类中文字幕| 91精品久久久久久久久久久| 97人人做人人爽香蕉精品| 国产成人精品最新| 网友自拍亚洲| 国产999精品| free欧美| 国产精品九九九| 欧美91在线|欧美| 成人h猎奇视频网站| 亚洲色图图片| 91免费国产视频| 日韩一区二区三区精品| 99蜜桃在线观看免费视频网站| 香港久久久电影| 国产精品v欧美精品∨日韩| 999在线精品| 激情五月综合色婷婷一区二区| 久久精品色综合| 裸体丰满少妇做受久久99精品| 亚洲警察之高压线| 色一情一乱一伦一区二区三欧美 | 极品国产人妖chinesets亚洲人妖| 国产精品污www一区二区三区| 99a精品视频在线观看| 久久精品人人做人人爽电影| 一道在线中文一区二区三区| 日日噜噜噜噜夜夜爽亚洲精品| 青青草成人影院| 自拍偷拍视频在线| 在线不卡亚洲| 日韩欧美精品在线观看视频| 免费精品视频最新在线| 一级黄色高清视频| 99这里都是精品| 亚洲av成人无码久久精品| 国产精品免费av| 欧美人妻精品一区二区三区| 欧美日韩一区二区三区在线免费观看 | 中文字幕日本在线| 欧美激情第1页| 欧美片第一页| 亚洲va码欧洲m码| 亚洲精品国产setv| 日韩video| 国产精品一页| 日本人69视频| 波多野结衣视频一区| 成人无码av片在线观看| 亚洲精品欧美在线| 日本熟女毛茸茸| 欧美一区二区大片| 欧美视频免费一区二区三区| 久久亚洲精品成人| 中文字幕不卡三区视频| 91九色国产在线| 夜夜躁狠狠躁日日躁2021日韩| 国产精品久久成人免费观看| 一本色道88久久加勒比精品| 性生生活大片免费看视频| 91美女精品福利| 欧美黑吊大战白妞| 欧美三区在线观看| 亚洲色图21p| 欧美黑人性猛交| 成人在线免费| 久久久久无码国产精品一区| 66视频精品| 热久久精品免费视频| 懂色av一区二区三区免费看| 谁有免费的黄色网址| 亚洲va国产va欧美va观看| 亚洲天堂手机版| 亚洲欧美日韩国产中文专区| 污网站在线免费看| 国产日韩在线视频| 国产精品一区二区99| 日本福利视频一区| 国产专区综合网| 欧美激情第一页在线观看| 在线视频精品免费| 日韩欧美国产系列| 天堂аⅴ在线地址8| 日韩av免费在线看| ccyy激情综合| 粉嫩av一区二区三区天美传媒 | 桃花色综合影院| 欧美精品国产精品日韩精品| 亚洲伦理一区二区| 日韩三级电影| 久久国产一二区| free性中国hd国语露脸| 亚洲曰韩产成在线| 国产福利资源在线| 久久天天躁日日躁| 日韩亚洲国产免费| 一区二区免费在线观看| 日韩成人午夜精品| 中文字幕第20页| 色呦呦日韩精品| 九色在线视频蝌蚪| 日本欧美精品在线| 国产麻豆精品久久| 免费午夜视频在线观看| 久久午夜免费电影| 91国产丝袜播放在线| 欧美一区二区三区男人的天堂| 天堂а√在线资源在线| 成人看片人aa| 久久久久美女| 69久久精品无码一区二区| 一区二区三区中文字幕| 亚洲AV无码精品自拍| 欧美精品videos| 极品尤物一区| 欧美日韩在线不卡视频| 久久久亚洲欧洲日产国码αv| 无码人妻一区二区三区免费| 亚洲天堂精品在线| 欧美日韩国产网站| 亚洲一区二区三区精品视频| 国产综合久久久久久久久久久久| 五月天色婷婷丁香| 日韩三级av在线播放| 欧美xxxx视频| 久久久久欧美| 美女久久久精品| 青青青在线免费观看| 亚洲第一二三四五区| 午夜久久中文| 亚洲永久一区二区三区在线| 国模大尺度一区二区三区| 国产精品7777| 亚洲图片制服诱惑| 国产95亚洲| 国产网站免费在线观看| 国产女人aaa级久久久级| 国产又粗又猛又爽| 久久久久久亚洲精品不卡| 奇米777国产一区国产二区| 99热手机在线| 亚洲影院理伦片| 国产午夜在线视频| 7777精品伊久久久大香线蕉语言| 99精品热视频只有精品10| 快灬快灬一下爽蜜桃在线观看| 日韩视频在线永久播放| 亚洲人免费短视频| 国产专区在线视频| 久久色.com| 亚洲av无码一区二区三区dv| 国产v综合v亚洲欧美久久| 中文字幕午夜精品一区二区三区| 182在线视频| 欧美精品在线视频| 色是在线视频| 大桥未久一区二区三区| 99热精品一区二区| 国产乱人乱偷精品视频a人人澡| 91干在线观看| 中文一区一区三区免费在线观看| 特级西西人体wwwww|