java虛擬機(jī)高質(zhì)量面試題

前言:

原文地址:https://blog.csdn.net/weixin_42599693/article/details/107514619

本篇文章整理了一些網(wǎng)上關(guān)于jvm比較火熱的面試題,答案有作者自己寫(xiě)的也有從網(wǎng)上借鑒的,當(dāng)然借鑒的都已標(biāo)注原文地址案淋,有不合適的地方留言給我宦言,或者有比較代表性的面試題也留言給我公壤。

面試題:

1.說(shuō)一下 jvm 的主要組成部分换可?及其作用?

類(lèi)加載器:負(fù)責(zé)加載.class文件到內(nèi)存中厦幅。Class loader檢驗(yàn)是否符合文件規(guī)范沾鳄,符合則加載到內(nèi)存中,加載過(guò)程中常量确憨,類(lèi)信息译荞,接口信息,方法信息會(huì)被存儲(chǔ)到對(duì)應(yīng)的運(yùn)行時(shí)數(shù)據(jù)區(qū)(方法區(qū)休弃,堆)

執(zhí)行引擎(解釋器):負(fù)責(zé)解釋加載到內(nèi)存的字節(jié)碼轉(zhuǎn)化為操作系統(tǒng)認(rèn)識(shí)的底層命令吞歼,對(duì)接操作系統(tǒng),讓操作系統(tǒng)執(zhí)行對(duì)應(yīng)的命令塔猾。

本地接口庫(kù):本地接口庫(kù)應(yīng)該是為了java能夠調(diào)用其他語(yǔ)言所實(shí)現(xiàn)的功能浆熔,java調(diào)用C或者C++。

運(yùn)行時(shí)數(shù)據(jù)區(qū):jvm內(nèi)存區(qū)域桥帆,程序加載到內(nèi)存的中信息存儲(chǔ)位置以及運(yùn)行時(shí)信息存儲(chǔ)位置。

簡(jiǎn)單的說(shuō)一下程序執(zhí)行過(guò)程慎皱,加載器 -> 執(zhí)行器:尋找main函數(shù)運(yùn)行入口老虫。每啟動(dòng)一個(gè)java程序相應(yīng)的啟動(dòng)一個(gè)jvm進(jìn)程,進(jìn)程與進(jìn)程之間是相互隔離的茫多。

2.說(shuō)一下 jvm 運(yùn)行時(shí)數(shù)據(jù)區(qū)祈匙?

?

共有5部分構(gòu)成:程序計(jì)數(shù)器,本地方法棧天揖,虛擬機(jī)棧夺欲,方法區(qū),堆今膊。

其中堆些阅,方法區(qū)是線(xiàn)程共享部分;程序計(jì)數(shù)器斑唬,本地方法棧市埋,虛擬機(jī)棧是線(xiàn)程隔離部分。

1.程序計(jì)數(shù)器

程序計(jì)數(shù)器是很小的一塊內(nèi)存區(qū)域恕刘,用來(lái)存儲(chǔ)當(dāng)前線(xiàn)程所執(zhí)行字節(jié)碼的順序指令缤谎。簡(jiǎn)單的解釋一下:java文件被編譯器編譯為.class的字節(jié)碼文件,類(lèi)加載器加載到內(nèi)存中褐着。當(dāng)一個(gè)線(xiàn)程需要執(zhí)行某個(gè)方法時(shí)需要那類(lèi)中方法的字節(jié)碼進(jìn)行執(zhí)行坷澡,實(shí)際上字節(jié)碼是一些底層的指令,第一步干什么含蓉,第二步干什么频敛,當(dāng)前線(xiàn)程執(zhí)行到哪一步都會(huì)存儲(chǔ)到當(dāng)前線(xiàn)程的私有空間:計(jì)數(shù)器中项郊。

2.虛擬機(jī)棧(答案引用:http://blog.csdn.net/wangwenjun69)

虛擬機(jī)棧也是線(xiàn)程私有的,每一個(gè)方法被執(zhí)行的時(shí)候都會(huì)創(chuàng)建一個(gè)棧幀姻政,存放在虛擬機(jī)棧中呆抑,虛擬機(jī)棧的結(jié)構(gòu)大致如下所示

?

每一個(gè)方法被調(diào)用直到完成的過(guò)程,就對(duì)應(yīng)著一個(gè)棧幀在虛擬機(jī)棧中從如棧到出棧的過(guò)程汁展,其中局部變量表就是很多人所說(shuō)的棧(堆棧地址)鹊碍,他所存放的是基本類(lèi)型數(shù)據(jù)和對(duì)象的引用類(lèi)型(reference),其局部變量表中的數(shù)據(jù)在編譯時(shí)期就基本上已經(jīng)確認(rèn)了食绿,操作棧主要就是壓棾薰荆或者彈棧,其中動(dòng)態(tài)鏈接這一部分我個(gè)人的理解是動(dòng)態(tài)尋找獲取下一個(gè)方法的入口地址信息等(個(gè)人理解的器紧,有可能不準(zhǔn)確)大多數(shù)JVM的虛擬機(jī)棧都可以動(dòng)態(tài)擴(kuò)展的耀销,當(dāng)無(wú)法申請(qǐng)到足夠的內(nèi)存時(shí)候會(huì)拋出OutOfMemoryError。

3.本地方法棧

本地方法棧和虛擬機(jī)棧一樣的結(jié)構(gòu)铲汪,只是他只支持被navite修飾的方法

4.方法區(qū)

方法區(qū)和java堆一樣熊尉,是所有線(xiàn)程共享的內(nèi)存區(qū)域。它存儲(chǔ)了每一個(gè)類(lèi)的結(jié)構(gòu)信息掌腰,例如運(yùn)行時(shí)常量池狰住,字段和方法數(shù)據(jù),構(gòu)造函數(shù)和普通方法的字節(jié)碼內(nèi)容齿梁,還包括一些在類(lèi)催植,實(shí)例,接口初始化時(shí)用到的特殊方法勺择。

5.堆

堆在java內(nèi)存單元中占據(jù)著比較大的比重创南,也是最大的一部分內(nèi)存單元,在虛擬機(jī)啟動(dòng)的時(shí)候省核,該部分的內(nèi)存就會(huì)被創(chuàng)建稿辙,所有的對(duì)象創(chuàng)建,以及數(shù)組內(nèi)存的申請(qǐng)分配都是在該內(nèi)存單元上發(fā)生的气忠。由于堆內(nèi)存所占的比重比較大邓深,因此他也就是java垃圾回收器最關(guān)注的一塊內(nèi)存,因此該內(nèi)存單元也被稱(chēng)為GC堆笔刹。

如果以后您了解了GC機(jī)制芥备,您會(huì)知道,Java允許內(nèi)存單元不連續(xù)舌菜,只要邏輯上是連續(xù)的即可萌壳,這部分的內(nèi)存也是可以進(jìn)行擴(kuò)展的,在啟動(dòng)虛擬機(jī)時(shí)我們可以通過(guò)-Xmx,-Xms進(jìn)行控制袱瓮,當(dāng)堆中的內(nèi)存再也申請(qǐng)不到的時(shí)候就會(huì)拋出內(nèi)存溢出的異常缤骨,另外該內(nèi)存空間是線(xiàn)程共享的,我們經(jīng)常使用到的鎖其實(shí)就是在這部分內(nèi)存中活動(dòng)尺借。

補(bǔ)充一下绊起,我們常說(shuō)看一下虛擬機(jī)的堆棧日志,其實(shí)就是jvm運(yùn)行時(shí)日志燎斩,該日志包含jvm中每一個(gè)線(xiàn)程的執(zhí)行過(guò)程虱歪,從方法區(qū)拿什么數(shù)據(jù),從棧中獲取那個(gè)引用栅表,在堆上創(chuàng)建了那個(gè)對(duì)象等笋鄙。

3.說(shuō)一下堆棧的區(qū)別?

1.堆是線(xiàn)程共享區(qū)域怪瓶,棧是線(xiàn)程獨(dú)享區(qū)域

2.堆存放對(duì)象實(shí)體以及數(shù)組信息萧落,棧存放基本類(lèi)型數(shù)據(jù)和對(duì)象數(shù)組引用地址

注意一點(diǎn):遞歸很容易導(dǎo)致棧溢出,遞歸會(huì)不斷的調(diào)用方法洗贰,每執(zhí)行一個(gè)方法都會(huì)形成一個(gè)棧幀找岖,直到超過(guò)棧最大存儲(chǔ)量。

4.隊(duì)列和棧是什么敛滋?有什么區(qū)別宣增?

隊(duì)列和棧都是線(xiàn)性表的數(shù)據(jù)結(jié)構(gòu)。

隊(duì)列是先進(jìn)先出矛缨,隊(duì)尾進(jìn)隊(duì)頭出,棧是先進(jìn)后出帖旨,只有一個(gè)口能操作隊(duì)列箕昭,壓棧和彈棧。

5.什么是雙親委派模型解阅?

這是面試官考察我們對(duì)jvm類(lèi)加載知識(shí)點(diǎn)的掌握:類(lèi)加載器有哪些落竹,雙親委派模型,為什么這么設(shè)計(jì)

1.類(lèi)加載器分為三類(lèi)依次從上往下

Bootstrap classLoader:主要負(fù)責(zé)加載核心的類(lèi)庫(kù)(java.lang.*等)货抄,構(gòu)造ExtClassLoader和APPClassLoader述召。

ExtClassLoader:主要負(fù)責(zé)加載jre/lib/ext目錄下的一些擴(kuò)展的jar。

AppClassLoader:主要負(fù)責(zé)加載應(yīng)用程序的主函數(shù)類(lèi)

2.雙親委派蟹地,當(dāng)加載一個(gè)class字節(jié)碼文件從最底層的AppClassLoader一層一層向上詢(xún)問(wèn)是否加載過(guò)此類(lèi)积暖,類(lèi)加載優(yōu)先級(jí)是 Bootstrap -> ExtClassLoader -> AppClassLoader。當(dāng)父類(lèi)不能加載此class才會(huì)將加載的權(quán)利依次向下放怪与。

3.安全性考慮夺刑,如果有人想要替換系統(tǒng)級(jí)別的類(lèi)比如:Object,String等,在這種機(jī)制下是不能加載到內(nèi)存中,因?yàn)橄到y(tǒng)級(jí)別的類(lèi)已經(jīng)被最上級(jí)的加載器加載成功了遍愿。

6.說(shuō)一下類(lèi)加載的執(zhí)行過(guò)程存淫?

類(lèi)加載概括性說(shuō):將.class文件加載到內(nèi)存中。記載過(guò)程中分為三個(gè)步驟:加載沼填,鏈接桅咆,初始化。

加載:

將class文件字節(jié)碼從各種來(lái)源加載到內(nèi)存中坞笙。兩個(gè)知識(shí)點(diǎn):來(lái)源岩饼,加載。

字節(jié)碼的來(lái)源有本地class文件羞海,三方class文件忌愚,網(wǎng)絡(luò)獲取。

加載器分為啟動(dòng)類(lèi)加載器却邓,擴(kuò)展類(lèi)加載器硕糊,應(yīng)用類(lèi)加載器,用戶(hù)自定義加載器腊徙。三方class文件以及網(wǎng)絡(luò)字節(jié)碼需要通過(guò)用戶(hù)自定義加載器進(jìn)行加載简十。

舉例:很多人會(huì)把自己編譯后的class文件加密,在加載時(shí)就需要通過(guò)自定義加載器進(jìn)行加載撬腾。

鏈接:

分為驗(yàn)證螟蝙,準(zhǔn)備,解析民傻。

驗(yàn)證:校驗(yàn)加載到內(nèi)存中字節(jié)碼是否符合jvm規(guī)范胰默。

準(zhǔn)備:準(zhǔn)備階段則負(fù)責(zé)為類(lèi)的靜態(tài)屬性分配內(nèi)存,并設(shè)置默認(rèn)初始值漓踢;

解析:將常量池內(nèi)的符號(hào)引用替換為直接引用的過(guò)程牵署。

初始化:

1.類(lèi)的初始化階段主要是對(duì)類(lèi)變量進(jìn)行初始化,在Java類(lèi)中對(duì)類(lèi)變量指定初始值有兩種方式:

聲明類(lèi)變量時(shí)指定初始值(static修飾的變量)

使用靜態(tài)初始化塊為類(lèi)變量指定初始值(static修飾的代碼塊)

2.JVM初始化一個(gè)類(lèi)一般包括如下幾個(gè)步驟:

假如這個(gè)類(lèi)還沒(méi)有被加載和連接喧半,程序先加載并連接該類(lèi)奴迅;

假如該類(lèi)的直接父類(lèi)還沒(méi)有被初始化,則先初始化其直接父類(lèi)挺据;

假如類(lèi)中有初始化語(yǔ)句取具,則系統(tǒng)依次執(zhí)行這些初始化語(yǔ)句

當(dāng)執(zhí)行第二步時(shí),系統(tǒng)對(duì)直接父類(lèi)的初始化也遵循此1扁耐、2暇检、3步驟,如果該直接父類(lèi)又有直接父類(lèi)婉称,系統(tǒng)再次重復(fù)這三步占哟,所以JVM最先初始化的總是java.lang.Object類(lèi)心墅。

7.怎么判斷對(duì)象是否可以被回收?

需要回答出:根搜索算法榨乎。

主要是通過(guò)Roots對(duì)象作為起點(diǎn)進(jìn)行搜索怎燥,搜索走過(guò)的路徑稱(chēng)為“引用鏈”,當(dāng)一個(gè)對(duì)象到 Roots 沒(méi)有任何的引用鏈相連時(shí)時(shí)蜜暑,證明此對(duì)象不可用铐姚,當(dāng)然被判定為不可達(dá)的對(duì)象不一定就會(huì)成為可回收對(duì)象。被判定為不可達(dá)的對(duì)象要成為可回收對(duì)象必須至少經(jīng)歷兩次標(biāo)記過(guò)程肛捍,如果在這兩次標(biāo)記過(guò)程中仍然沒(méi)有逃脫成為可回收對(duì)象的可能性隐绵,則基本上就真的成為可回收對(duì)象了,能否被回收其實(shí)主要還是要看finalize()方法有沒(méi)有與引用鏈上的對(duì)象關(guān)聯(lián)拙毫,如果在finalize()方法中有關(guān)聯(lián)則自救成功依许,改對(duì)象不可被回收,反之如果沒(méi)有關(guān)聯(lián)則成功被二次標(biāo)記成功缀蹄,就可以稱(chēng)為要被回收的垃圾了峭跳。

Roots對(duì)象有哪些?

1缺前、引用棧幀中的本地變量表的所有對(duì)象蛀醉;

2、引用方法區(qū)中靜態(tài)屬性的所有對(duì)象衅码;

3拯刁、引用方法區(qū)中常量的所有對(duì)象;

4逝段、引用Native方法的所有對(duì)象垛玻。

8.java 中都有哪些引用類(lèi)型?

Jdk1.2之后有四種引用類(lèi)型:強(qiáng)引用奶躯,軟引用帚桩,弱引用,虛擬引用巫糙。

強(qiáng)引用:A a = new A();a的引用就是強(qiáng)引用,只要有強(qiáng)引用存在颊乘,GC就不會(huì)回收此對(duì)象参淹,如果內(nèi)存不足則拋出OutOfMemoryError。如果想要快速回收對(duì)象A乏悄,則將引用a = null ,強(qiáng)行中斷引用與對(duì)象之間的聯(lián)系浙值。

軟引用:軟引用是用來(lái)描述一些非必需但仍有用的對(duì)象,在內(nèi)存足夠的時(shí)候檩小,軟引用對(duì)象不會(huì)被回收开呐,只有在內(nèi)存不足時(shí),系統(tǒng)則會(huì)回收軟引用對(duì)象,如果回收了軟引用對(duì)象之后仍然沒(méi)有足夠的內(nèi)存筐付,才會(huì)拋出內(nèi)存溢出異常卵惦。這種特性常常被用來(lái)實(shí)現(xiàn)緩存技術(shù),比如網(wǎng)頁(yè)緩存瓦戚,圖片緩存等沮尿。在 JDK1.2 之后,用java.lang.ref.SoftReference類(lèi)來(lái)表示軟引用

弱引用:弱引用的引用強(qiáng)度比軟引用要更弱一些無(wú)論內(nèi)存是否足夠较解,只要 JVM 開(kāi)始進(jìn)行垃圾回收畜疾,那些被弱引用關(guān)聯(lián)的對(duì)象都會(huì)被回收。在 JDK1.2 之后印衔,用 java.lang.ref.WeakReference 來(lái)表示弱引用啡捶。

虛擬引用:虛引用是最弱的一種引用關(guān)系,如果一個(gè)對(duì)象僅持有虛引用奸焙,那么它就和沒(méi)有任何引用一樣瞎暑,它隨時(shí)可能會(huì)被回收,在 JDK1.2 之后忿偷,用 PhantomReference 類(lèi)來(lái)表示金顿,通過(guò)查看這個(gè)類(lèi)的源碼,發(fā)現(xiàn)它只有一個(gè)構(gòu)造函數(shù)和一個(gè) get() 方法鲤桥,而且它的 get() 方法僅僅是返回一個(gè)null揍拆,也就是說(shuō)將永遠(yuǎn)無(wú)法通過(guò)虛引用來(lái)獲取對(duì)象,虛引用必須要和 ReferenceQueue 引用隊(duì)列一起使用茶凳。

9.說(shuō)一下 jvm 有哪些垃圾回收算法嫂拴?

常用的垃圾回收算法有如下四種:標(biāo)記-清除、復(fù)制贮喧、標(biāo)記-整理和分代收集筒狠。

標(biāo)記-清除算法

從算法的名稱(chēng)上可以看出,這個(gè)算法分為兩部分箱沦,標(biāo)記和清除辩恼。首先標(biāo)記出所有需要被回收的對(duì)象,然后在標(biāo)記完成后統(tǒng)一回收掉所有被標(biāo)記的對(duì)象谓形。這個(gè)算法簡(jiǎn)單灶伊,但是有兩個(gè)缺點(diǎn):一是標(biāo)記和清除的效率不是很高;二是標(biāo)記和清除后會(huì)產(chǎn)生很多的內(nèi)存碎片寒跳,導(dǎo)致可用的內(nèi)存空間不連續(xù)聘萨,當(dāng)分配大對(duì)象的時(shí)候,沒(méi)有足夠的空間時(shí)不得不提前觸發(fā)一次垃圾回收童太。

復(fù)制算法

這個(gè)算法將可用的內(nèi)存空間分為大小相等的兩塊米辐,每次只是用其中的一塊胸完,當(dāng)這一塊被用完的時(shí)候,就將還存活的對(duì)象復(fù)制到另一塊中翘贮,然后把原已使用過(guò)的那一塊內(nèi)存空間一次回收掉赊窥。這個(gè)算法常用于新生代的垃圾回收。復(fù)制算法解決了標(biāo)記-清除算法的效率問(wèn)題择膝,以空間換時(shí)間誓琼,但是當(dāng)存活對(duì)象非常多的時(shí)候,復(fù)制操作效率將會(huì)變低肴捉,而且每次只能使用一半的內(nèi)存空間腹侣,利用率不高。

標(biāo)記-整理算法

這個(gè)算法分為三部分:一是標(biāo)記出所有需要被回收的對(duì)象齿穗;二是把所有存活的對(duì)象都向一端移動(dòng)傲隶;三是把所有存活對(duì)象邊界以外的內(nèi)存空間都回收掉。標(biāo)記-整理算法解決了復(fù)制算法多復(fù)制效率低窃页、空間利用率低的問(wèn)題跺株,同時(shí)也解決了內(nèi)存碎片的問(wèn)題。

分代收集算法

根據(jù)對(duì)象生存周期的不同將內(nèi)存空間劃分為不同的塊脖卖,然后對(duì)不同的塊使用不同的回收算法乒省。一般把Java堆分為新生代和老年代,新生代中對(duì)象的存活周期短畦木,只有少量存活的對(duì)象袖扛,所以可以使用復(fù)制算法,而老年代中對(duì)象存活時(shí)間長(zhǎng)十籍,而且對(duì)象比較多蛆封,所以可以采用標(biāo)記-清除和標(biāo)記-整理算法。

10.說(shuō)一下 jvm 有哪些垃圾回收器勾栗?

新生代收集器:

serial收集器

ParNew收集器--是Serial收集器的多線(xiàn)程版本

Parallel Scaverge收集器

老年代收集器:

  Serial Old收集器--是Serial收集器的老年代版本

Parallel Old--是Parallel Scavenge收集器的老年代版本

CMS收集器

新生代+老年代收集器

G1 收集器

ZGC 收集器

?

11.詳細(xì)介紹一下 CMS 垃圾回收器惨篱?

(答案引用:https://www.cnblogs.com/chenpt/p/9803298.html)

一種以獲取最短回收停頓時(shí)間為目標(biāo)的收集器。

特點(diǎn):基于標(biāo)記-清除算法實(shí)現(xiàn)围俘。并發(fā)收集砸讳、低停頓。

應(yīng)用場(chǎng)景:適用于注重服務(wù)的響應(yīng)速度界牡,希望系統(tǒng)停頓時(shí)間最短簿寂,給用戶(hù)帶來(lái)更好的體驗(yàn)等場(chǎng)景下。如web程序欢揖、b/s服務(wù)陶耍。

CMS收集器的運(yùn)行過(guò)程分為下列4步:

初始標(biāo)記:標(biāo)記GC Roots能直接到的對(duì)象奋蔚。速度很快但是仍存在Stop The World問(wèn)題她混。

并發(fā)標(biāo)記:進(jìn)行GC Roots Tracing 的過(guò)程烈钞,找出存活對(duì)象且用戶(hù)線(xiàn)程可并發(fā)執(zhí)行。

重新標(biāo)記:為了修正并發(fā)標(biāo)記期間因用戶(hù)程序繼續(xù)運(yùn)行而導(dǎo)致標(biāo)記產(chǎn)生變動(dòng)的那一部分對(duì)象的標(biāo)記記錄坤按。仍然存在Stop The World問(wèn)題毯欣。

并發(fā)清除:對(duì)標(biāo)記的對(duì)象進(jìn)行清除回收。

?CMS收集器的內(nèi)存回收過(guò)程是與用戶(hù)線(xiàn)程一起并發(fā)執(zhí)行的臭脓。

?CMS收集器的工作過(guò)程圖:

?

CMS收集器的缺點(diǎn):

對(duì)CPU資源非常敏感酗钞。

無(wú)法處理浮動(dòng)垃圾,可能出現(xiàn)Concurrent Model Failure失敗而導(dǎo)致另一次Full GC的產(chǎn)生来累。

因?yàn)椴捎脴?biāo)記-清除算法所以會(huì)存在空間碎片的問(wèn)題砚作,導(dǎo)致大對(duì)象無(wú)法分配空間,不得不提前觸發(fā)一次Full GC嘹锁。

12.新生代垃圾回收器和老生代垃圾回收器都有哪些葫录?有什么區(qū)別?

????? 新生代收集器:serial收集器领猾,ParNew收集器米同,Parallel Scaverge收集器

????? 老年代收集器:Serial Old收集器,Parallel Old摔竿,CMS收集器

????? 新生代內(nèi)存占用較少面粮,一般采用復(fù)制算法回收器進(jìn)行回收,以空間換時(shí)間继低。

????? 老年代內(nèi)存占用較多熬苍,一般采用標(biāo)記-清除或者標(biāo)記-整理算法回收器進(jìn)行回收,因?yàn)閮?nèi)存占用空間比較大所以不能采用復(fù)制算法郁季。

13.簡(jiǎn)述分代垃圾回收器是怎么工作的冷溃?

同學(xué)們自己收集下答案

14.說(shuō)一下 jvm 調(diào)優(yōu)的工具?

Java的jconsole,visualVM梦裂。阿里的Arthas

15.常用的 jvm 調(diào)優(yōu)的參數(shù)都有哪些

(答案引用:https://www.cnblogs.com/wuhg/p/9707974.html)

-Xms:初始堆大小

-Xms:最大堆大小

-XX:NewSize=n:設(shè)置年輕代大小

-XX:NewRatio=n:設(shè)置年輕代和年老代的比值似枕。如:為3表示年輕代和年老代比值為1:3,年輕代占整體的1/4

-XX:SurvivorRatio=n:年輕代中Eden區(qū)與兩個(gè)Survivor區(qū)的比值年柠。注意Survivor區(qū)有兩個(gè)凿歼。如3表示Eden: 3 Survivor:2,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/5

-XX:MaxPermSize=n:設(shè)置持久代大小

說(shuō)明:

1冗恨、一般初始堆和最大堆設(shè)置一樣答憔,因?yàn)椋含F(xiàn)在內(nèi)存不是什么稀缺的資源,但是如果不一樣掀抹,從初始堆到最大堆的過(guò)程會(huì)有一定的性能開(kāi)銷(xiāo)虐拓,所以一般設(shè)置為初始堆和最大堆一樣。64位系統(tǒng)理論上可以設(shè)置為無(wú)限大傲武,但是一般設(shè)置為4G,因?yàn)槿绻俅笕鼐裕琂VM進(jìn)行垃圾回收出現(xiàn)的暫停時(shí)間會(huì)比較長(zhǎng)城榛,這樣全GC過(guò)長(zhǎng),影響JVM對(duì)外提供服務(wù)态兴,所以不能太大狠持。一般設(shè)置為4G。

2瞻润、-XX:NewRaio和-XX:SurvivorRatio這兩個(gè)參數(shù)喘垂,都是設(shè)置年輕代和年老代的大小的,設(shè)置一個(gè)即可绍撞,第一是設(shè)置年輕代的大小正勒,第二個(gè)是設(shè)置比值,理論上設(shè)置一個(gè)既可以滿(mǎn)足需求

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末傻铣,一起剝皮案震驚了整個(gè)濱河市昭齐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌矾柜,老刑警劉巖阱驾,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異怪蔑,居然都是意外死亡里覆,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)缆瓣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)喧枷,“玉大人,你說(shuō)我怎么就攤上這事弓坞∷砩酰” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵渡冻,是天一觀的道長(zhǎng)戚扳。 經(jīng)常有香客問(wèn)我,道長(zhǎng)族吻,這世上最難降的妖魔是什么帽借? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮超歌,結(jié)果婚禮上砍艾,老公的妹妹穿的比我還像新娘。我一直安慰自己巍举,他們只是感情好脆荷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般蜓谋。 火紅的嫁衣襯著肌膚如雪苔严。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天孤澎,我揣著相機(jī)與錄音,去河邊找鬼欠窒。 笑死覆旭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的岖妄。 我是一名探鬼主播型将,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼荐虐!你這毒婦竟也來(lái)了七兜?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤福扬,失蹤者是張志新(化名)和其女友劉穎腕铸,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體铛碑,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡狠裹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了汽烦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涛菠。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖撇吞,靈堂內(nèi)的尸體忽然破棺而出俗冻,到底是詐尸還是另有隱情,我是刑警寧澤牍颈,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布迄薄,位于F島的核電站,受9級(jí)特大地震影響煮岁,放射性物質(zhì)發(fā)生泄漏噪奄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一人乓、第九天 我趴在偏房一處隱蔽的房頂上張望勤篮。 院中可真熱鬧,春花似錦色罚、人聲如沸碰缔。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)金抡。三九已至瀑焦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梗肝,已是汗流浹背榛瓮。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工童谒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挖腰,地道東北人溅蛉。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓涌萤,卻偏偏與公主長(zhǎng)得像蚪拦,于是被迫代替她去往敵國(guó)和親瘫絮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嘱吗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355