国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JVM基礎(chǔ),面試常見問題

這篇具有很好參考價值的文章主要介紹了JVM基礎(chǔ),面試常見問題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

JVM基礎(chǔ),面試常見問題,jvm,java,開發(fā)語言

目錄

一.運行時數(shù)據(jù)區(qū)域

1.線程獨享

(1)棧

(2)程序計數(shù)器

2.線程共享

(1)方法區(qū)

(2)堆

二.內(nèi)存如何分配

1.指針碰撞法

2.空閑列表法

3.TLAB

三.對象在內(nèi)存中的組成

1.對象頭

(1)markword

(2)指向類型的指針

(3)如果是數(shù)組-》數(shù)組長度

2.實例數(shù)據(jù)

3.對齊填充

四.如何訪問對象

1.句柄

2.直接指針

五.先判生死

1.引用計數(shù)法

2.可達性分析

六.再談引用

1.強引用

2.軟引用

3.弱引用

4.虛引用

七.垃圾收集算法

1.清除

2.復(fù)制

3.整理

八.垃圾收集器

1.cms

2.g1

九.內(nèi)存分配的策略

1.對象優(yōu)先在Eden區(qū)分配

2.大對象直接進入老年代

3.長期存活的對象將進入老年代

4.動態(tài)對象年齡判定

5.空間分配擔保

十.類加載流程

1.加載

2.鏈接

(1)校驗

(2)準備

(3)解析

3.初始化

4.使用

5.卸載

十一.雙親委派機制

1.作用

2.流程

(1)向上委派(解決類加載有序和安全問題)

(2)向下委派(保障所有類被加載)


一.運行時數(shù)據(jù)區(qū)域

1.線程獨享

JVM基礎(chǔ),面試常見問題,jvm,java,開發(fā)語言

(1)棧

  • 虛擬機棧:每個 Java 方法在執(zhí)行的同時,會創(chuàng)建一個棧幀,用于存儲局部變量表、操作數(shù)棧、常量池引用等信息;方法的調(diào)用過程,就是一個棧幀在 Java 虛擬機棧中入棧和出棧的過程;
  • 本地方法棧:和虛擬機棧很類似,區(qū)別在于虛擬機棧為 Java 方法服務(wù),本地方法棧為 Native 方法服務(wù);其中 Native 方法可以看做用其它語言(C、C++ 或匯編語言等)編寫的方法;

(2)程序計數(shù)器

? ? ? 一個 CPU 在某個時間點,只能做一件事情,在多線程的情況下,CPU 運行時間被劃分成若干個時間片,分配給各個線程執(zhí)行;
程序計數(shù)器的作用就是記錄當前線程執(zhí)行的位置,當線程被切換回來的時候,能夠找到該線程上次運行到哪兒了;所以程序計數(shù)器一定是線程隔離的。

2.線程共享

JVM基礎(chǔ),面試常見問題,jvm,java,開發(fā)語言

(1)方法區(qū)

方法區(qū)用于存放已被加載的類信息、常量、靜態(tài)變量、即編譯器編譯后的代碼等。
還有要注意的一點:方法區(qū)是 JVM 的規(guī)范,在 JDK 1.8 之前,方法區(qū)的實現(xiàn)是永久代;從 JDK 1.8 開始 JVM 移除了永久代,使用本地內(nèi)存來存儲元數(shù)據(jù)并稱之為:元空間(Metaspace)。

(2)堆

對于堆棧的區(qū)別總結(jié)一句話:堆中存對象,棧中存基本數(shù)據(jù)類型和堆中對象的引用;一個對象的大小是可以動態(tài)變化的,而引用是固定大小的。
這么看就容易理解堆為什么是線程公有的了,省地兒啊


二.內(nèi)存如何分配

1.指針碰撞法

適用于堆內(nèi)存完整的情況,已分配的內(nèi)存和空閑內(nèi)存分表在不同的一側(cè),通過一個指針指向分界點,當需要分配內(nèi)存時,把指針往空閑的一端移動與對象大小相等的距離即可,用于Serial和ParNew等不會產(chǎn)生內(nèi)存碎片的垃圾收集器。

JVM基礎(chǔ),面試常見問題,jvm,java,開發(fā)語言

2.空閑列表法

適用于堆內(nèi)存不完整的情況,已分配的內(nèi)存和空閑內(nèi)存相互交錯,JVM通過維護一張內(nèi)存列表記錄可用的內(nèi)存塊信息,當分配內(nèi)存時,從列表中找到一個足夠大的內(nèi)存塊分配給對象實例,并更新列表上的記錄,最常見的使用此方案的垃圾收集器就是CMS。

JVM基礎(chǔ),面試常見問題,jvm,java,開發(fā)語言

3.TLAB

JVM基礎(chǔ),面試常見問題,jvm,java,開發(fā)語言


三.對象在內(nèi)存中的組成

JVM基礎(chǔ),面試常見問題,jvm,java,開發(fā)語言

1.對象頭

(1)markword

記錄了該對象鎖相關(guān)的信息、分代年齡、hashCode,在32位JVM中占32bit,在64位JVM中占64bit

(2)指向類型的指針

指向方法區(qū)對應(yīng)class信息的指針,在32位JVM中占32bit,在64位JVM中占64bit(開啟指針壓縮的情況下占32bit)

(3)如果是數(shù)組-》數(shù)組長度

如果是數(shù)組的話,組成中會包含數(shù)組長度,32bit

2.實例數(shù)據(jù)

類的實例信息

3.對齊填充

JVM要求Java對象的大小應(yīng)該是8bit的倍數(shù),這部分就是將對象大小補充為8bit的倍數(shù)


四.如何訪問對象

1.句柄

JVM基礎(chǔ),面試常見問題,jvm,java,開發(fā)語言

使用句柄訪問對象,Java堆中會劃分出一塊內(nèi)存作為句柄池,reference中存儲的就是對象的句柄地址,句柄中包含了對象實例數(shù)據(jù)與類型數(shù)據(jù)各自的具體地址信息。

2.直接指針

JVM基礎(chǔ),面試常見問題,jvm,java,開發(fā)語言

使用直接指針訪問,Java堆對象的布局中就必須考慮如何放置訪問類型數(shù)據(jù)的相關(guān)信息,而reference中存儲的直接就是對象地址。(Sun HotSport VM的使用方式)


五.先判生死

1.引用計數(shù)法

引用計算器判斷對象是否存活的算法是這樣的:給每一個對象設(shè)置一個引用計數(shù)器,每當有一個地方引用這個對象的時候,計數(shù)器就加1,與之相反,每當引用失效的時候就減1。

優(yōu)點:實現(xiàn)簡單、性能高。

缺點:增減處理頻繁消耗cpu計算、計數(shù)器占用很多位浪費空間、最重要的缺點是無法解決循環(huán)引用的問題。

因為引用計數(shù)器算法很難解決循環(huán)引用的問題,所以主流的Java虛擬機都沒有使用引用計數(shù)器算法來管理內(nèi)存。

2.可達性分析

在主流的語言的主流實現(xiàn)中,比如Java、C#、甚至是古老的Lisp都是使用的可達性分析算法來判斷對象是否存活的。

這個算法的核心思路就是通過一些列的“GC Roots”對象作為起始點,從這些對象開始往下搜索,搜索所經(jīng)過的路徑稱之為“引用鏈”。

當一個對象到GC Roots沒有任何引用鏈相連的時候,證明此對象是可以被回收的。如下圖所示:

JVM基礎(chǔ),面試常見問題,jvm,java,開發(fā)語言


六.再談引用

1.強引用

在代碼中普遍存在的,類似“Object obj = new Object()”這類引用,只要強引用還在,垃圾收集器永遠不會回收掉被引用的對象。

2.軟引用

是一種相對強引用弱化一些的引用,可以讓對象豁免一些垃圾收集,只有當jvm認為內(nèi)存不足時,才會去試圖回收軟引用指向的對象。jvm會確保在拋出OutOfMemoryError之前,清理軟引用指向的對象。

3.弱引用

非必需對象,但它的強度比軟引用更弱,被弱引用關(guān)聯(lián)的對象只能生存到下一次垃圾收集發(fā)生之前。

4.虛引用

也稱為幽靈引用或幻影引用,是最弱的一種引用關(guān)系,無法通過虛引用來獲取一個對象實例,為對象設(shè)置虛引用的目的只有一個,就是當著個對象被收集器回收時收到一條系統(tǒng)通知。


七.垃圾收集算法

1.清除

JVM基礎(chǔ),面試常見問題,jvm,java,開發(fā)語言

標記無用對象,然后進行清除回收。缺點:效率不高,無法清除垃圾碎片。

  • 該算法分為兩個階段,標記和清除。標記階段標記所有需要回收的對象,清除階段回收被標記的對象所占用的空間。該算法最大的問題就是內(nèi)存碎片嚴重化,后續(xù)可能發(fā)生對象不能找到利用空間的問題。

2.復(fù)制

為了解決Mark-Sweep算法的缺陷,Copying算法就被提了出來。它將可用內(nèi)存按容量劃分為大小相等的兩塊,每次只使用其中的一塊。當這一塊的內(nèi)存用完了,就將還存活著的對象復(fù)制到另外一塊上面,然后再把已使用的內(nèi)存空間一次清理掉,這樣一來就不容易出現(xiàn)內(nèi)存碎片的問題。具體過程如下圖所示:

JVM基礎(chǔ),面試常見問題,jvm,java,開發(fā)語言

3.整理

為了解決Copying算法的缺陷,充分利用內(nèi)存空間,提出了Mark-Compact算法。該算法標記階段和Mark-Sweep一樣,但是在完成標記之后,它不是直接清理可回收對象,而是將存活對象都向一端移動,然后清理掉端邊界以外的內(nèi)存。具體過程如下圖所示:

JVM基礎(chǔ),面試常見問題,jvm,java,開發(fā)語言


八.垃圾收集器

1.cms

CMS(Concurrent Mark Sweep)收集器是一種以獲取最短回收停頓時間為目標的收集器,基于并發(fā)“標記清理”實現(xiàn),在標記清理過程中不會導(dǎo)致用戶線程無法定位引用對象。僅作用于老年代收集。它的步驟如下:

  1. 初始標記(CMS initial mark):獨占CPU,stop-the-world, 僅標記GCroots能直接關(guān)聯(lián)的對象,速度比較快;
  2. 并發(fā)標記(CMS concurrent mark):可以和用戶線程并發(fā)執(zhí)行,通過GCRoots Tracing 標記所有可達對象;
  3. 重新標記(CMS remark):獨占CPU,stop-the-world, 對并發(fā)標記階段用戶線程運行產(chǎn)生的垃圾對象進行標記修正,以及更新逃逸對象;
  4. 并發(fā)清理(CMS concurrent sweep):可以和用戶線程并發(fā)執(zhí)行,清理在重復(fù)標記中被標記為可回收的對象。

2.g1

G1收集器的內(nèi)存結(jié)構(gòu)完全區(qū)別去CMS,弱化了CMS原有的分代模型(分代可以是不連續(xù)的空間),將堆內(nèi)存劃分成一個個Region(1MB~32MB, 默認2048個分區(qū)),這么做的目的是在進行收集時不必在全堆范圍內(nèi)進行。它主要特點在于達到可控的停頓時間,用戶可以指定收集操作在多長時間內(nèi)完成,即G1提供了接近實時的收集特性。它的步驟如下:

  1. 初始標記(Initial Marking):標記一下GC Roots能直接關(guān)聯(lián)到的對象,伴隨著一次普通的Young GC發(fā)生,并修改NTAMS(Next Top at Mark Start)的值,讓下一階段用戶程序并發(fā)運行時,能在正確可用的Region中創(chuàng)建新對象,此階段是stop-the-world操作。
  2. 根區(qū)間掃描,標記所有幸存者區(qū)間的對象引用,掃描 Survivor到老年代的引用,該階段必須在下一次Young GC 發(fā)生前結(jié)束。
  3. 并發(fā)標記(Concurrent Marking):是從GC Roots開始堆中對象進行可達性分析,找出存活的對象,這階段耗時較長,但可與用戶程序并發(fā)執(zhí)行,該階段可以被Young GC中斷。
  4. 最終標記(Final Marking):是為了修正并發(fā)標記期間因用戶程序繼續(xù)運作而導(dǎo)致標記產(chǎn)生變動的那一部分標記記錄,虛擬機將這段時間對象變化記錄在線程Remembered Set Logs里面,最終標記階段需要把Remembered Set Logs的數(shù)據(jù)合并到Remembered Set中,此階段是stop-the-world操作,使用snapshot-at-the-beginning (SATB) 算法。
  5. 篩選回收(Live Data Counting and Evacuation):首先對各個Region的回收價值和成本進行排序,根據(jù)用戶所期望的GC停頓時間來制定回收計劃,回收沒有存活對象的Region并加入可用Region隊列。這個階段也可以做到與用戶程序一起并發(fā)執(zhí)行,但是因為只回收一部分Region,時間是用戶可控制的,而且停頓用戶線程將大幅提高收集效率。

九.內(nèi)存分配的策略

1.對象優(yōu)先在Eden區(qū)分配

JVM基礎(chǔ),面試常見問題,jvm,java,開發(fā)語言

2.大對象直接進入老年代

JVM中有這樣一個參數(shù)?-XX: PretenureSizeThreshold?,指定大于該設(shè)置值的對象直接在老年代分配,這樣做的目的就是避免在Eden區(qū)以及2個Survivor區(qū)之間來回復(fù)制,產(chǎn)生大量的內(nèi)存復(fù)制操作

3.長期存活的對象將進入老年代

對象通常在Eden區(qū)誕生,如果經(jīng)過第一次Minor GC后仍然存活,并且能被Survivor容納的話,該對象會被移動到Survivor中,并且將其對象設(shè)為1歲,對象在Survivor區(qū)中每熬過一次Minor GC,年齡就增加一歲,當它的年齡增加到一定程度(默認15),就會被晉升到老年代中,對象晉升老年代的年齡閾值, 可以通過參數(shù)-XX:MaxTenuringThreshold設(shè)置

4.動態(tài)對象年齡判定

HotSpot虛擬機并不是永遠要求對象的年齡必須達到-XX:MaxTenuringThreshold才能晉升老年代,如果在Survivor空間中相同年齡所有對象大小的總和大于Survivor空間的一半,年齡大于或等于該年齡的對象就可以直接進入老年代

5.空間分配擔保


十.類加載流程

1.加載

加載階段,簡言之,查找并加載類的二進制數(shù)據(jù),生成 Class 的實例

在加載類時,Java 虛擬機必須完成以下3件事情:

  • 通過類的全名,獲取類的二進制數(shù)據(jù)流
  • 解析類的二進制數(shù)據(jù)流為方法區(qū)內(nèi)的數(shù)據(jù)結(jié)構(gòu)(Java 類模型)
  • 創(chuàng)建 java.lang.Class 類的實例,表示該類型。作為方法區(qū)這個類的各種數(shù)據(jù)的訪問入口

2.鏈接

(1)校驗

當類加載到系統(tǒng)后,就開始鏈接操作,驗證是鏈接操作的第一步

它的目的是保證加載的字節(jié)碼是合法、合理并符合規(guī)范的

(2)準備

準備階段(Preparation),簡言之,為類的靜態(tài)變量分配內(nèi)存,并將其初始化為默認值

當一個類驗證通過時,虛擬機就會進入準備階段。在這個階段,虛擬機就會為這個類分配相應(yīng)的內(nèi)存空間,并設(shè)置默認初始值。

(3)解析

在準備階段(Resolution),簡言之,將類、接口、字段和方法的符號引用轉(zhuǎn)為直接引用

3.初始化

類的初始化是類裝載的最后一個階段。如果前面的步驟都沒有問題,那么表示類可以順利裝載到系統(tǒng)中。此時,類才會開始執(zhí)行 Java 字節(jié)碼。(即:到了初始化階段,才真正開始執(zhí)行類中定義的 Java 程序代碼)

4.使用

任何一個類型在使用之前都必須經(jīng)歷過完整的加載、鏈接和初始化3個類加載步驟。一旦一個類型成功經(jīng)歷過這3個步驟之后,便“萬事俱備,只欠東風(fēng)”,就等著開發(fā)者使用了

開發(fā)人員可以在程序中訪問和調(diào)用它的靜態(tài)類成員信息(比如:靜態(tài)字段、靜態(tài)方法),或者使用 new 關(guān)鍵字為其創(chuàng)建對象實例

5.卸載

當 Sample 類被加載、鏈接和初始化后,它的生命周期就開始了。當代表 Sample 類的 Class 對象不再被引用,即不可觸及時,Class 對象就會結(jié)束生命周期,Sample 類在方法區(qū)內(nèi)的數(shù)據(jù)也會被卸載,從而結(jié)束 Sample 類的生命周期

一個類何時結(jié)束生命周期,取決于代表它的 Class 對象何時結(jié)束生命周期


十一.雙親委派機制

1.作用

JVM為什么會拋出ClassNotFund異常?在拋出這個異常的時候JVM的類加載器做了什么工作?

Java程序在執(zhí)行的過程中,是先執(zhí)行父類還是先執(zhí)行子類。如果加載父類,那么父類還有父類呢,這個時候JVM還要怎么處理,

JVM是如何保證類加載的有序性和安全性?

2.流程

JVM基礎(chǔ),面試常見問題,jvm,java,開發(fā)語言

(1)向上委派(解決類加載有序和安全問題)

一個類在收到類加載請求后,不會自己加載這個類,而是把這個類加載請求向上委派給它的父類去完成,父類收到這個請求后又繼續(xù)向上委派給自己的父類,以此類推,直到所有的請求委派到啟動類加載器中。

(2)向下委派(保障所有類被加載)

當父類加載器在接收到類加載請求后,發(fā)現(xiàn)自己也無法加載這個類(這個情況通常是因為這個類的Class文件在父類的加載路徑中不存在)這時父類會把這個信息反饋給子類,并向下委派子類加載器來加載這個類,直到這個請求被成功加載,但是一直到自定義加載器都沒有找到,JVM就會拋出ClassNotFund異常。文章來源地址http://www.zghlxwxcb.cn/news/detail-819212.html

到了這里,關(guān)于JVM基礎(chǔ),面試常見問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【技術(shù)驛站】分布式基礎(chǔ)與常見面試問題

    【技術(shù)驛站】分布式基礎(chǔ)與常見面試問題

    ??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續(xù)學(xué)習(xí),不斷總結(jié),共同進步,活到老學(xué)到老 導(dǎo)航 檀越劍指大廠系列:全面總

    2024年02月04日
    瀏覽(27)
  • 3.Java面試題—JVM基礎(chǔ)、內(nèi)存管理、垃圾回收、JVM 調(diào)優(yōu)

    3.Java面試題—JVM基礎(chǔ)、內(nèi)存管理、垃圾回收、JVM 調(diào)優(yōu)

    一篇文章掌握整個JVM,JVM超詳細解析!?。?JVM (Java虛擬機) 是運行 Java 字節(jié)碼 的 虛擬機 。 JVM 針對 不同系統(tǒng) 有 特定實現(xiàn) ( Windows 、 Linux 等),目的是 同樣的代碼 在 不同平臺 能運行出 相同的結(jié)果 。 Java 語言 要經(jīng)過 編譯 和 解釋 兩個步驟: 編譯 :通過 編譯器 將 代碼 一

    2024年02月15日
    瀏覽(22)
  • .NET 高級開發(fā)人員面試常見問題及解答

    當面試.NET高級開發(fā)人員時,面試官通常會圍繞技術(shù)深度、問題解決能力、項目經(jīng)驗以及編程理念等方面提出問題。以下是20個常見的面試問題及其詳細解答: 問題:請簡述ASP.NET MVC的工作原理? 解答:ASP.NET MVC是一個基于MVC(模型-視圖-控制器)設(shè)計模式的Web應(yīng)用程序框架。

    2024年04月26日
    瀏覽(21)
  • 【java基礎(chǔ)面試題】jdk、jre、jvm區(qū)別

    【java基礎(chǔ)面試題】jdk、jre、jvm區(qū)別

    【java基礎(chǔ)面試題】jdk、jre、jvm區(qū)別 jdk ? 從概念上講JDK是JAVA開發(fā)工具,用它來開發(fā)JAVA程序,里面有很多基礎(chǔ)類庫和jre。 ? JDK(Java Development Kit),它是功能齊全的 Java SDK,是提供給開發(fā)者使用的,能夠創(chuàng)建和編譯 Java 程序。他包含了 JRE,同時還包含了編譯 java 源碼的編譯器

    2024年02月10日
    瀏覽(25)
  • Java后端開發(fā)面試題——JVM虛擬機篇

    Java后端開發(fā)面試題——JVM虛擬機篇

    目錄 什么是程序計數(shù)器? 你能給我詳細的介紹Java堆嗎? 什么是虛擬機棧 1. 垃圾回收是否涉及棧內(nèi)存? 2. 棧內(nèi)存分配越大越好嗎? 3. 方法內(nèi)的局部變量是否線程安全? 4.什么情況下會導(dǎo)致棧內(nèi)存溢出? 5.堆棧的區(qū)別是什么? 能不能解釋一下方法區(qū)(元空間)? 常量池 運行

    2024年02月09日
    瀏覽(22)
  • Java進階(HashMap)——面試時HashMap常見問題解讀 & 結(jié)合源碼分析

    Java進階(HashMap)——面試時HashMap常見問題解讀 & 結(jié)合源碼分析

    List、Set、HashMap作為Java中常用的集合,需要深入認識其原理和特性。 本篇博客介紹常見的關(guān)于Java中HashMap集合的面試問題,結(jié)合源碼分析題目背后的知識點。 關(guān)于List的博客文章如下: Java進階(List)——面試時List常見問題解讀 結(jié)合源碼分析 關(guān)于的Set的博客文章如下: Jav

    2024年02月08日
    瀏覽(23)
  • Java進階(List)——面試時List常見問題解讀 & 結(jié)合源碼分析

    Java進階(List)——面試時List常見問題解讀 & 結(jié)合源碼分析

    List、Set、HashMap作為Java中常用的集合,需要深入認識其原理和特性。 本篇博客介紹常見的關(guān)于Java中List集合的面試問題,結(jié)合源碼分析題目背后的知識點。 關(guān)于的Set的博客文章如下: Java進階(Set)——面試時Set常見問題解讀 結(jié)合源碼分析 關(guān)于HaseMap的博客文章如下: Java進

    2024年02月06日
    瀏覽(30)
  • JAVA開發(fā)中常見問題

    JAVA開發(fā)中常見問題

    目錄 1.深淺克隆問題 2.Mysql中可以代替左模糊或全查詢的函數(shù)方法 3.開發(fā)時需注意,使用String類的equals()方法時,原則上需要左邊的變量不能為null值,避免程序執(zhí)行時出現(xiàn)空指針報錯 4.Mysql Update的高效應(yīng)用 5.Mysql Insert 的高效應(yīng)用 6.在try-catch-finally代碼塊中return或者throw Exception時需

    2024年02月05日
    瀏覽(29)
  • Java開發(fā)中的常見問題和解決方法:如何解決常見的性能和bug問題

    Java開發(fā)中的常見問題和解決方法:如何解決常見的性能和bug問題

    ? 在Java開發(fā)中,我們經(jīng)常會面臨各種各樣的問題,包括性能問題和Bug。這些問題可能會導(dǎo)致應(yīng)用程序的運行變慢、不穩(wěn)定甚至崩潰。本文將介紹一些常見的Java開發(fā)問題,并提供解決這些問題的方法和技巧,幫助開發(fā)人員更好地處理性能和Bug問題。 性能問題是Java開發(fā)中最常見

    2024年02月09日
    瀏覽(36)
  • 常見的 JVM 面試題分析

    點擊下方關(guān)注我,然后右上角點擊...“設(shè)為星標”,就能第一時間收到更新推送啦~~~ 8 個常見的 JVM 面試題分析。 1、什么時候會觸發(fā)垃圾回收,Minor GC 和 Full GC 的區(qū)別? 垃圾回收 GC 是由 JVM 根據(jù)運行情況自動完成的,觸發(fā)垃圾回收的時機是不確定的,當然我們可以通過調(diào)用

    2024年02月13日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包