千鋒教育-做有情懷、有良心、有品質的職業教育機構

當前位置:首頁  >  IT問答庫  >  Java基礎知識

JVM模型的介紹二

發布:Java基礎知識 2022-03-16 09:58

JVM模型的介紹二

推薦答案

          JVM模型的介紹二,接著上一篇我們繼續來分享,棧之本地方法棧。

  本地方法棧的作用和java虛擬機棧的作用是相類似的;區別在于java虛擬機棧是為java方法服務的,而本地方法棧是為native方法服務的;java虛擬機規范中對本地方法棧中的方法使用的語言、使用方式和數據結構沒有強制規范

JavaEE

  堆

  堆是jvm內存模型中內存空間最大的一塊,java堆是被所有線程共享的一塊內存區域,在虛擬機啟動時隨之創建,堆創建的唯一目的就是用來保存對象實例,幾乎所有new創建的對象實例都在這里分配內存(隨著JIT 編譯器的發展與逃逸分析技術的逐漸成熟,棧上分配、標量替換優化技術將會導致一些微妙的變化發生,所有的對象都分配在堆上也漸漸變得不是那么“絕對”了)

  堆的大小可以通過-Xms-Xmn兩個參數來設置,-XmsJVM啟動時申請的最小內存,默認為操作系統物理內存的1/64但小于1G-XmxJVM可申請的最大內存,默認為物理內存的1/4但小于1G,默認當空余堆內存小于40%時,JVM會增大Heap-Xmx指定的大小,可通過-XX:MinHeapFreeRation=來指定這個比列;當空余堆內存大于70%時,JVM會減小heap的大小到-Xms指定的大小,可通過XX:MaxHeapFreeRation=來指定這個比列,對于運行系統,為避免在運行時頻繁調整Heap的大小,通常-Xms-Xmx的值設成一樣。

  堆也是垃圾收集管理的主要區域,通常所說的垃圾回收主要是回收堆中的垃圾對象,因此堆也被稱為GC

  從垃圾回收的角度上來看,由于現在垃圾收集大多是采用分代收集算法,所以java堆還可以細分為:新生代和老年代;

  新生代:程序新創建的對象都是從新生代分配內存,新生代由Eden Space和兩塊相同大小的Survivor Space(通常又稱S0S1FromTo)構成,可通過-Xmn參數來指定新生代的大小,也可以通過-XX:SurvivorRation來調整Eden SpaceSurvivorSpace的大小。

  老年代:用于存放經過多次新生代GC仍然存活的對象(默認是15),例如緩存對象,新建的對象也有可能直接進入老年代,主要有兩種情況:

  1.大對象,可通過啟動參數設置-XX:PretenureSizeThreshold=1024(單位為字節,默認為0)來代表超過多大時就不在新生代分配,而是直接在老年代分配。

  2.大的數組對象,且數組中無引用外部對象。老年代所占的內存大小為-Xmx對應的值減去-Xmn對應的值。

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

  方法區

  方法區用于存放已被虛擬機加載的類信息、常量、類變量等數據,它也是所有線程共享的一塊內存區域,通常叫它為no-heap(用于與堆區分)或者永生代

  永生代也會被GC回收,主要針對常量池回收和類型卸載(反射生成大量的臨時class等信息)

  常量池用于保存編譯器生成的各種字節碼和符號引用,具有一定的動態性,里面可以保存編譯器生成的常量,運行期間的常量也是可以添加到常量池中的,比如Stringintern()方法;

  方法區也是會出現內存溢出的情況的:當方法區滿時,無法再分配內存空間,就會拋出內存溢出的異常

  java8中已經沒有方法區了,取而代之的是元空間metaspace

  以上就是小編介紹的"Java培訓班分享的內容,希望對大家有幫助,如有疑問還可以點擊進入Java視頻教程進行學習。

最新問答資訊

01 unity用什么編程語言?unity學習難度大嗎

學習 unity 語言
6020 人關注

02 python容易學嗎?學好python有什么好處?

學習 python 工作 培訓
5389 人關注

03 html是什么語言?html學習難嗎?

學習 html 語言 可以
5062 人關注

04 c語言難學嗎?c語言學好要多久?

語言 技術 學習
4733 人關注

06 學好平面設計要多久?報速成班靠譜嗎?

平面 設計 學習 時間
4238 人關注

相關問題

計算機前端和后端區別,到底該學哪一個?

互聯網行業的發展速度很快,有關市場上對于it行業的人才需求量越...

java和php的區別是什么?哪一個更難一些?

有很多零基礎的小白想要去學習編程技術,那么可以考慮一下java和...

java與java script的區別有哪些?

相信大多數同學對java、java script都不會陌生,二者都是編程語...

java中什么是繼承?

繼承的特點:只需明確一點,java只支持單繼承,不支持多繼承,但...

java byte取值范圍是什么?

同學您好,java byte取值范圍是什么?針對這個問題可以看看下面的...

javascript和java有什么區別

1)基于對象和面向對象:Java是一種真正的面向對象的語言,即使是...

測一測
你知道多少IT梗

主站蜘蛛池模板: 日本一道高清一区二区三区| 丰满人妻一区二区三区免费视频 | 青娱乐国产官网极品一区| 亚洲AV无码一区二三区| 伦理一区二区三区| 黑人一区二区三区中文字幕| 人妻夜夜爽天天爽一区| 亚洲AV无码一区二区三区电影| 女人18毛片a级毛片一区二区| 东京热人妻无码一区二区av| 精品国产一区二区三区免费看| 中文字幕视频一区| 欧洲精品一区二区三区在线观看| 91精品一区国产高清在线| 国产精品无码亚洲一区二区三区 | 激情内射亚洲一区二区三区 | 一本AV高清一区二区三区| 亚洲国产综合无码一区二区二三区| 国产精品毛片一区二区三区| 一区二区传媒有限公司| 国产韩国精品一区二区三区久久| 国产成人AV一区二区三区无码| 无码国产亚洲日韩国精品视频一区二区三区 | 国产在线精品一区二区三区不卡 | 精品国产一区二区三区四区| 亚洲日本va午夜中文字幕一区| 国产精品视频一区二区三区四| 在线精品国产一区二区三区| 天堂国产一区二区三区| 国产裸体舞一区二区三区| 一区二区三区电影在线观看| 国产高清不卡一区二区| eeuss鲁片一区二区三区| 文中字幕一区二区三区视频播放| 一区二区三区日本视频| 精品国产一区二区三区久久| 久久一区二区三区99| 成人区人妻精品一区二区不卡视频| 国产一区二区在线观看麻豆| 亚洲日韩国产一区二区三区 | 久久精品无码一区二区无码|