武漢java培訓
達內武漢中心

18571612865

熱門課程

Java虛擬機之方法區

  • 時間:2019-07-30 18:38
  • 發布:武漢java培訓
  • 來源:互聯網

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

對于習慣在HotSpot虛擬機上開發和部署程序的開發者來說,很多人愿意把方法區稱為"永久代"PermanentGeneration),本質上兩者并不等價,僅僅是因為HotSpot虛擬機的設計團隊選擇把GC分代收集擴展至方法區,或者說使用永久代來實現方法區而已。對于其他虛擬機(如BEAJRockit、IBMJ9等)來說是不存在永久代的概念的。即使是HotSpot虛擬機本身,根據官方發布的路線圖信息,現在也有放棄永久代并"搬家"至NativeMemory來實現方法區的規劃了。

武漢java培訓

Java虛擬機規范對這個區域的限制非常寬松,除了和Java堆一樣不需要連續的內存和可以選擇固定大小或者可擴展外,還可以選擇不實現垃圾收集。相對而言,垃圾收集行為在這個區域是比較少出現的,但并非數據進入了方法區就如永久代的名字一樣"永久"存在了。這個區域的內存回收目標主要是針對常量池的回收和對類型的卸載,一般來說這個區域的回收"成績"比較難以令人滿意,尤其是類型的卸載,條件相當苛刻,但是這部分區域的回收確實是有必要的。在Sun公司的BUG列表中,曾出現過的若干個嚴重的BUG就是由于低版本的HotSpot虛擬機對此區域未完全回收而導致內存泄漏。根據Java虛擬機規范的規定,當方法區無法滿足內存分配需求時,將拋出OutOfMemoryError異常。

本篇文章是有武漢Java培訓為您呈現,希望給您帶來更多更好的文章

馬上預約七天免費試聽課

姓名:

電話:

上一篇:武漢Java培訓:Java基礎知識六
下一篇:武漢java培訓:什么是Java堆
選擇城市和中心
江西省

貴州省

廣西省

海南省

有位老師想和您聊一聊

中文字幕无线观看不卡网站