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

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

當(dāng)前位置:首頁(yè)  >  IT問答庫(kù)  >  Java基礎(chǔ)知識(shí)

JVM模型的介紹二

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

JVM模型的介紹二

推薦答案

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

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

JavaEE

  堆

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

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

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

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

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

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

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

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

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

  方法區(qū)

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

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

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

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

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

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

相關(guān)問題

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

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

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

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

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

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

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

JVM模型的介紹二

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

JVM模型的介紹一

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

測(cè)一測(cè)
你知道多少IT梗

主站蜘蛛池模板: 卫辉市| 龙山县| 太保市| 南京市| 凌海市| 绵阳市| 沈阳市| 靖宇县| 霍州市| 万年县| 华亭县| 彩票| 且末县| 连平县| 镇沅| 合水县| 砚山县| 垦利县| 高清| 永顺县| 攀枝花市| 来凤县| 文水县| 天台县| 临澧县| 项城市| 潼关县| 吉木萨尔县| 都匀市| 渝中区| 平凉市| 于都县| 灌南县| 岐山县| 高邮市| 黔西| 沐川县| 商南县| 锡林郭勒盟| 松桃| 吕梁市|