亚洲综合在线一区二区三区-日韩超碰人人爽人人做人人添-麻豆国产精品久久人妻-无码人妻丰满熟妇啪啪-天堂精品一区二区三区-99久久综合狠狠综合久久aⅴ

×
新網 > 虛擬主機 > 正文

java虛擬機內存管理機制:內存管理與垃圾回收

  • 作者:新網
  • 來源:新網
  • 瀏覽:100
  • 2018-05-12 10:50:33

java語言具有垃圾回收的能力,內存管理不需要應用程序去過問,這對于我們來說非常方便。但是,垃圾回收是怎么進行的,VM的內存參數應該怎么調整,如何優化,往往我們不是太清楚。小編接下就帶大家了解一下吧。

   java語言具有垃圾回收的能力,內存管理不需要應用程序去過問,這對于我們來說非常方便。但是,垃圾回收是怎么進行的,VM的內存參數應該怎么調整,如何優化,往往我們不是太清楚。小編接下就帶大家了解一下吧。

<div>  當JVM進行GC的時候,是要消耗CPU資源和需要一定時間的,這會影響到程序的正常運行,因此需要盡可能減少GC消耗的時間。Java程序運行過程中,對象的生命周期有長有短,其中相當大部分是都是比較短命的,例如局部的對象一用完就可以回收了。在大多數情況下,只要能夠及時回收這些短命對象的內存,就能夠確保JVM有足夠內存來分配給新的對象。因此JVM采用一種分代回收(generational collection) 的策略,用較高的頻率對年輕的對象(young generation)進行掃描和回收,這種叫做minor collection,而對老對象(old generation)的檢查回收頻率要低很多,稱為major collection。這樣就不需要每次GC都將內存中所有對象都檢查一遍。
1409629340384445.jpg
  Sun JVM 1.3 有兩種最基本的內存收集方式:一種稱為copying或scavenge,將所有仍然生存的對象搬到另外一塊內存后,整塊內存就可回收。這種方法有效率,但需要有一定的空閑內存,拷貝也有開銷。這種方法用于minor collection。另外一種稱為mark-compact,將活著的對象標記出來,然后搬遷到一起連成大塊的內存,其他內存就可以回收了。這種方法不需要占用額外的空間,但速度相對慢一些。這種方法用于major collection。
  在JVM 1.3及以后的版本中,還有其他可選的內存收集方法,通過特定的參數來設定。例如:增量式回收,每次只處理一小部分;替代單線程copying的多線程并行回收;替代mark-compact的concurrent mark-sweep回收等等。參考資料[4][5]中有更多描述。
  JVM管理的內存,通常叫做堆(heap),JVM啟動后,保留一段地址空間,這個空間的大小由-Xmx指定。這塊空間的大小就是heap可能的最大值,但一開始不一定全都分配了物理內存,初始分配的heap大小由-Xms指定,如果-Xms小于-Xmx,剩余部分是virtual的,當需要的時候,再向OS申請。而且申請之后,是繼續占用而不釋放給該jvm以外的程序。比如你的jvm申請了1G的內存,剛開始用了200M,然后隨著程序的進行,內存用到900M,然后進行垃圾回收,想釋放一些內存給其他程序,這是不可以的,此時,jvm依然會保有著900M內存。
  綠色部分是young generation的內存,由一塊Eden(伊甸園,有意思)和兩塊Survivor Space(1.4文檔中稱為semi-space)構成。新創建的對象的內存都分配自eden。兩塊Survivor Space總有會一塊是空閑的,用作copying collection的目標空間。Minor collection的過程就是將eden和在用survivor space中的活對象copy到空閑survivor space中。所謂survivor,也就是大部分對象在伊甸園出生后,根本活不過一次GC。對象在young generation里經歷了一定次數的minor collection后,年紀大了,就會被移到old generation中,稱為tenuring。(是否僅當survivor space不足的時候才會將老對象tenuring? 目前資料中沒有找到描述)
  淺藍色部分是old generation的內存。
  深藍色部分稱為permanent generation,是JVM用來保存class object和meta data,大小由-XX:PermSize和-XX:MaxPermSize指定。大量動態生成(編譯)和加載class會增加這部分內存的耗用。
剩余內存空間不足會觸發GC,如eden空間不夠了就要進行minor collection,old generation空間不夠要進行major collection,permanent generation空間不足會引發full GC。
以上就是小編對于垃圾回收的了解了,大家可以留言哦。
  很多參數會影響里面各部分空間的分配。-XX:MinHeapFreeRatio與-XX:MaxHeapFreeRatio設定空閑內存占總內存的比例范圍,這兩個參數會影響GC的頻率和單次GC的耗時。-XX:NewRatio決定young與old generation的比例。Young generation空間越大,minor collection頻率越低,但是old generation空間小了,又可能導致major collection頻率增加。-XX:NewSize和-XX:MaxNewSize直接指定了young generation的缺省大小和最大大小。

免責聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,也不承認相關法律責任。如果您發現本社區中有涉嫌抄襲的內容,請發送郵件至:operations@xinnet.com進行舉報,并提供相關證據,一經查實,本站將立刻刪除涉嫌侵權內容。

免費咨詢獲取折扣

Loading
主站蜘蛛池模板: 一二区成人影院电影网| 国产9 9在线 | 欧洲| 天天在线看无码av片| 亚洲精品无码mv在线观看| 亚洲成色综合网站在线| 少妇人妻偷人精品视频1出轨| 国产成a人亚洲精品无码樱花 | 亚洲精品无码久久久久yw| 国产欧美精品一区二区三区| 亚洲色偷偷偷综合网| 香港台湾经典三级a视频| 性色av无码专区一ⅴa亚洲| 欧美顶级metart裸体全部自慰| 精品国产乱码久久久久久1区2区| 成人欧美一区二区三区黑人| 永久免费的av在线电影网无码| 亚洲制服丝袜无码av在线| 国产激情з∠视频一区二区| 中文无码日韩欧| 亚洲精品久久久久久久久毛片直播| 熟妇人妻午夜寂寞影院| 蜜臀性色av免费| 国产欧美一区二区色老头| 2018av天堂在线视频精品观看| 亚洲一区av无码专区在线观看| 国产精品综合av一区二区国产馆| 一出一进一爽一粗一大视频免费的| 日韩av高清在线观看| 国产麻无矿码直接观看| 亚洲一区在线播放视频| 天堂精品视频一区二区| 久久视频在线视频| 国产高清不卡一区二区| 亚洲国产精品久久电影欧美| 免费av岛国大片在线观看| 亚洲精品国产一区二区三| 国产日韩成人内射视频| 亚洲日本成本人观看| 人妻无码av一区二区三区精品| 精品国产自在现线电影| 亚洲一区二区三区香蕉|