一区二区三区精品视频-一区二区三区国产美女在线播放-一区二区三区福利视频-一区二区三区福利-毛片大全免费看-毛片大片免费看

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

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

JVM模型的介紹二

發(fā)布:Java基礎(chǔ)知識 2022-03-16 09:58

JVM模型的介紹二

推薦答案

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

  本地方法棧的作用和java虛擬機棧的作用是相類似的;區(qū)別在于java虛擬機棧是為java方法服務(wù)的,而本地方法棧是為native方法服務(wù)的;java虛擬機規(guī)范中對本地方法棧中的方法使用的語言、使用方式和數(shù)據(jù)結(jié)構(gòu)沒有強制規(guī)范

JavaEE

  堆

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

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

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

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

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

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

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

  2.大的數(shù)組對象,且數(shù)組中無引用外部對象。老年代所占的內(nèi)存大小為-Xmx對應(yīng)的值減去-Xmn對應(yīng)的值。

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

  方法區(qū)

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

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

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

  方法區(qū)也是會出現(xiàn)內(nèi)存溢出的情況的:當方法區(qū)滿時,無法再分配內(nèi)存空間,就會拋出內(nèi)存溢出的異常

  java8中已經(jīng)沒有方法區(qū)了,取而代之的是元空間metaspace

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

最新問答資訊

01 unity用什么編程語言?unity學(xué)習(xí)難度大嗎

學(xué)習(xí)
18742 人關(guān)注

02 python容易學(xué)嗎?學(xué)好python有什么好處?

學(xué)習(xí)
18111 人關(guān)注

03 html是什么語言?html學(xué)習(xí)難嗎?

學(xué)習(xí)
17784 人關(guān)注

04 c語言難學(xué)嗎?c語言學(xué)好要多久?

語言
17455 人關(guān)注

相關(guān)問題

Java培訓(xùn)班的課程一般都學(xué)習(xí)什么內(nèi)容

首先是Java技術(shù)的核心和基礎(chǔ)JavaSE,這一階段會接觸到Java基礎(chǔ)語...

學(xué)習(xí)Java有哪些技巧嗎

java作為最經(jīng)典的編程語言之一受到大家的喜愛,不止你我,很多人...

java程序員常用到的技術(shù)有哪些

操作系統(tǒng)、計算機網(wǎng)絡(luò)這些基礎(chǔ)知識,工作之后基本都忘的差不多了...

int和integer有哪些區(qū)別?

int 和 Integer 的基本區(qū)別有如下?點: int 是基本數(shù)據(jù)類型,...

JVM模型的介紹二

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

JVM模型的介紹一

Java培訓(xùn)班教程系列分享JVM模型的介紹一,Java內(nèi)存分配:JVM定義...

測一測
你知道多少IT梗

主站蜘蛛池模板: 昔阳县| 江安县| 桂平市| 灵璧县| 胶州市| 中方县| 孟连| 资中县| 新化县| 六安市| 宣武区| 桦甸市| 威宁| 富宁县| 静乐县| 银川市| 如东县| 小金县| 张北县| 肇东市| 新野县| 米林县| 博湖县| 正宁县| 岳普湖县| 耿马| 荃湾区| 平凉市| 乐陵市| 廊坊市| 台东县| 昭平县| 乐清市| 石柱| 禹州市| 海兴县| 杨浦区| 谢通门县| 靖边县| 洮南市| 宣城市|