成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談JVM

開發 后端
JVM(Java Virtual Machine):Java虛擬機,所有的Java程序都在Java虛擬機中運行。本文主要介紹JVM,希望對你有幫助,一起來看。

JVM(Java Virtual Machine):Java虛擬機,所有的Java程序都在Java虛擬機中運行。

元數據:在本文中指用于描述類和接口定義的數據。

在我做J2EE系統開發的工作生涯中,經常遇到技術人員或客戶發出諸如此類的感慨:我的J2EE應用系統處理的數據量不大,系統體積也不大,技術架構也沒有問題,我的應用服務器的內存有4G或8G;系統運行起來很慢,還經常出現內存溢出錯誤。真是無奈!每次遇到這樣的情況,我心中都會忍不住竊笑之。

其實他們所遇到這種情況,不是技術架構上的問題,不是系統本身的問題,也不是應用服務器的問題,也可能不是服務器的內存資源真的不足的問題。他們花了很多時間在J2EE應用系統本身上找問題(當然一般情況下,這種做法是對的;當出現問題時,在自身上多找找有什么不足),結果還是解決不了問題。他們卻忽略了很重要的一點:J2EE應用系統是運行在J2EE應用服務器上的,而J2EE應用服務器又是運行在JVM(Java Virtual Machine)上的。 

其實在生產環境中JVM參數的優化和設置對J2EE應用系統性能有著決定性的作用。本篇我們就來分析JAVA的創建者SUN 公司的JVM的內存管理機制(在現實中絕大多數的應用服務器是運行在SUN公司的JVM上的,當然除了SUN公司的JVM,還有IBM的JVM,Bea的JVM等);下篇咱們具體講解怎樣優化JVM的參數以達到優化J2EE應用的目的。

咱們先來看JVM的內存管理制吧,JVM的早期版本并沒有進行分區管理;這樣的后果是JVM進行垃圾回收時,不得不掃描JVM所管理的整片內存,所以搜集垃圾是很耗費資源的事情,也是早期JAVA程序的性能低下的主要原因。隨著JVM的發展,JVM引進了分區管理的機制。

采用分區管理機制的JVM將JVM所管理的所有內存資源分為2個大的部分。***存儲區(Permanent Space)和堆空間(The Heap Space)。其中堆空間又分為新生區(Young (New) generation space)和養老區(Tenure (Old) generation space),新生區又分為伊甸園(Eden space),幸存者0區(Survivor 0 space)和幸存者1區(Survivor 1 space)。具體分區如下圖:

JVM所管理的內存

那JVM他的這些分區各有什么用途,請看下面的解說。

***存儲區(Permanent Space):***存儲區是JVM的駐留內存,用于存放JDK自身所攜帶的Class,Interface的元數據,應用服務器允許必須的Class,Interface的元數據和Java程序運行時需要的Class和Interface的元數據。被裝載進此區域的數據是不會被垃圾回收器回收掉的,關閉JVM時,釋放此區域所控制的內存。

堆空間(The Heap Space):是JAVA對象生死存亡的地區,JAVA對象的出生,成長,死亡都在這個區域完成。堆空間又分別按JAVA對象的創建和年齡特征分為養老區和新生區。

新生區(Young (New) generation space):新生區的作用包括JAVA對象的創建和從JAVA對象中篩選出能進入養老區的JAVA對象。

伊甸園(Eden space):JAVA對空間中的所有對象在此出生,該區的名字因此而得名。也即是說當你的JAVA程序運行時,需要創建新的對象,JVM將在該區為你創建一個指定的對象供程序使用。創建對象的依據即是***存儲區中的元數據。

幸存者0區(Survivor 0 space)和幸存者1區(Survivor1 space):當伊甸園的控件用完時,程序又需要創建對象;此時JVM的垃圾回收器將對伊甸園區進行垃圾回收,將伊甸園區中的不再被其他對象所引用的對象進行銷毀工作。同時將伊甸園中的還有其他對象引用的對象移動到幸存者0區。幸存者0區就是用于存放伊甸園垃圾回收時所幸存下來的JAVA對象。

當將伊甸園中的還有其他對象引用的對象移動到幸存者0區時,如果幸存者0區也沒有空間來存放這些對象時,JVM的垃圾回收器將對幸存者0區進行垃圾回收處理,將幸存者0區中不在有其他對象引用的JAVA對象進行銷毀,將幸存者0區中還有其他對象引用的對象移動到幸存者1區。幸存者1區的作用就是用于存放幸存者0區垃圾回收處理所幸存下來的JAVA對象。

養老區(Tenure (Old) generation space):用于保存從新生區篩選出來的JAVA對象。 

上面我們看了JVM的內存分區管理,現在我們來看JVM的垃圾回收工作是怎樣運作的。首先當啟動J2EE應用服務器時,JVM隨之啟動,并將JDK的類和接口,應用服務器運行時需要的類和接口以及J2EE應用的類和接口定義文件也及編譯后的Class文件或JAR包中的Class文件裝載到JVM的***存儲區。在伊甸園中創建JVM,應用服務器運行時必須的JAVA對象,創建J2EE應用啟動時必須創建的JAVA對象;J2EE應用啟動完畢,可對外提供服務。

JVM在伊甸園區根據用戶的每次請求創建相應的JAVA對象,當伊甸園的空間不足以用來創建新JAVA對象的時候,JVM的垃圾回收器執行對伊甸園區的垃圾回收工作,銷毀那些不再被其他對象引用的JAVA對象(如果該對象僅僅被一個沒有其他對象引用的對象引用的話,此對象也被歸為沒有存在的必要,依此類推),并將那些被其他對象所引用的JAVA對象移動到幸存者0區。

如果幸存者0區有足夠控件存放則直接放到幸存者0區;如果幸存者0區沒有足夠空間存放,則JVM的垃圾回收器執行對幸存者0區的垃圾回收工作,銷毀那些不再被其他對象引用的JAVA對象(如果該對象僅僅被一個沒有其他對象引用的對象引用的話,此對象也被歸為沒有存在的必要,依此類推),并將那些被其他對象所引用的JAVA對象移動到幸存者1區。

如果幸存者1區有足夠控件存放則直接放到幸存者1區;如果幸存者0區沒有足夠空間存放,則JVM的垃圾回收器執行對幸存者0區的垃圾回收工作,銷毀那些不再被其他對象引用的JAVA對象(如果該對象僅僅被一個沒有其他對象引用的對象引用的話,此對象也被歸為沒有存在的必要,依此類推),并將那些被其他對象所引用的JAVA對象移動到養老區。

如果養老區有足夠控件存放則直接放到養老區;如果養老區沒有足夠空間存放,則JVM的垃圾回收器執行對養老區區的垃圾回收工作,銷毀那些不再被其他對象引用的JAVA對象(如果該對象僅僅被一個沒有其他對象引用的對象引用的話,此對象也被歸為沒有存在的必要,依此類推),并保留那些被其他對象所引用的JAVA對象。

如果到***養老區,幸存者1區,幸存者0區和伊甸園區都沒有空間的話,則JVM會報告“JVM堆空間溢出(java.lang.OutOfMemoryError: Java heap space)”,也即是在堆空間沒有空間來創建對象。

這就是JVM的內存分區管理,相比不分區來說;一般情況下,垃圾回收的速度要快很多;因為在沒有必要的時候不用掃描整片內存而節省了大量時間。

通常大家還會遇到另外一種內存溢出錯誤“***存儲區溢出(java.lang.OutOfMemoryError: Java Permanent Space)”。

原文地址:http://blog.csdn.net/soulx/archive/2010/03/01/5335203.aspx

【編輯推薦】

  1. 詳解JVM的內存管理機制
  2. JVM 命令行標志您不知道的5件事
  3. 深入Java核心:JVM中的棧和局部變量
  4. 你不知道的5個JVM命令行標志
  5. 橫向對比JVM Server模式和Client模式
責任編輯:于鐵 來源: CSDN
相關推薦

2023-11-11 19:07:23

JVMJava

2009-07-10 14:55:34

2009-07-08 09:47:47

安裝JDKJREJVM

2009-07-09 10:01:26

設置JVM內存分配

2009-07-14 18:26:49

MyEclipse內存

2024-03-14 08:17:33

JVMJava對象

2009-07-09 16:33:06

eclipse jvm

2009-07-09 17:36:58

jvm.cfg

2009-07-09 09:47:26

Sun JVM

2009-07-09 17:14:11

Incompatibl

2009-07-08 11:25:36

jvm.dll

2009-07-09 18:03:25

tomcatJVM內存

2021-04-28 06:20:59

JVMJavaJVM調優

2019-07-08 14:05:53

數據庫JVMSQL

2023-06-19 07:12:51

JVM三色標記

2009-12-01 10:29:42

BSM

2019-05-22 10:43:16

Cgroups容器監控

2009-06-08 15:14:54

CMDB運維管理摩卡

2012-01-11 13:04:40

JavaJVM

2017-09-20 08:48:09

JVM內存結構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲人成免费 | 91高清在线视频 | 国产日韩欧美一区 | 久久aⅴ乱码一区二区三区 91综合网 | 国产精品免费小视频 | 精品欧美色视频网站在线观看 | 免费日韩av网站 | 成人一区av偷拍 | 秋霞在线一区 | 精品一区二区在线观看 | 久久网国产 | 黄色大片在线播放 | 免费观看羞羞视频网站 | 五月花丁香婷婷 | 天堂一区在线 | 天天天操 | 欧美日韩中文国产一区发布 | 日韩视频精品 | 中文字幕精品一区二区三区精品 | 岛国毛片 | 中文字幕第二区 | 欧美一a一片一级一片 | 中文成人在线 | 91免费小视频| 成人免费观看男女羞羞视频 | 日本一区二区视频 | 国产精品96久久久久久 | 美女爽到呻吟久久久久 | 亚洲 欧美 另类 综合 偷拍 | 亚洲一区二区不卡在线观看 | 国产精品视频一二三区 | 欧美成人精品在线观看 | 欧美一区二区免费 | 欧美福利在线 | 亚洲精品乱 | 日韩欧美专区 | 国产精品99精品久久免费 | 国产成人精品一区二区三区四区 | aaaaaaa片毛片免费观看 | 亚洲自拍一区在线观看 | 综合久久99|