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

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

這篇具有很好參考價(jià)值的文章主要介紹了3.Java面試題—JVM基礎(chǔ)、內(nèi)存管理、垃圾回收、JVM 調(diào)優(yōu)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、JVM 基礎(chǔ)【重要】

一篇文章掌握整個(gè)JVM,JVM超詳細(xì)解析?。?!

什么是 JVM (Java虛擬機(jī))?

  • JVM (Java虛擬機(jī)) 是運(yùn)行 Java 字節(jié)碼虛擬機(jī)。
  • JVM 針對(duì) 不同系統(tǒng)特定實(shí)現(xiàn) (Windows、Linux 等),目的是 同樣的代碼不同平臺(tái) 能運(yùn)行出 相同的結(jié)果。

為什么說(shuō) Java 語(yǔ)言 “編譯與解釋并存”?

Java 語(yǔ)言 要經(jīng)過(guò) 編譯解釋 兩個(gè)步驟:

  1. 編譯:通過(guò) 編譯器代碼 一次性 編譯字節(jié)碼。
  2. 解釋:通過(guò) 解釋器代碼 一句一句地 解釋機(jī)器代碼

Java類 加載過(guò)程?

點(diǎn)擊查看:JVM 類加載機(jī)制與加載過(guò)程

Java類 加載過(guò)程如下:

  • 加載:將硬盤上 Java字節(jié)碼文件 (Class文件) 轉(zhuǎn)為 內(nèi)存 中的 Class對(duì)象。
  • 驗(yàn)證:檢查載入的 class文件數(shù)據(jù)正確性。
  • 準(zhǔn)備 (重要):為 靜態(tài)變量 分配內(nèi)存,并設(shè)置為 初始值 (0、false、null 等)。
  • 解析:將 常量池 內(nèi)的 符號(hào)引用 轉(zhuǎn)換為 直接引用。
  • 初始化:為 類變量 (靜態(tài)變量) 賦值,執(zhí)行 靜態(tài)代碼塊。
    3.Java面試題—JVM基礎(chǔ)、內(nèi)存管理、垃圾回收、JVM 調(diào)優(yōu),Java后端面試題 | CABR實(shí)習(xí),jvm,java,開發(fā)語(yǔ)言

二、內(nèi)存管理【重要】

說(shuō)?下 JVM 的內(nèi)存區(qū)域 | 運(yùn)行時(shí)數(shù)據(jù)區(qū)是怎樣的?

Java內(nèi)存區(qū)域詳解 (重點(diǎn))

  • 線程共享。存放 對(duì)象實(shí)例數(shù)組、字符串常量池 (也稱 GC堆)。
  • 虛擬機(jī)棧線程私有。存儲(chǔ)方法的內(nèi) 局部變量、操作數(shù) 等。
  • 本地方法棧線程私有。同 虛擬機(jī)棧,只不過(guò)是 本地方法
    本地方法:就是 Java 調(diào)用的 非Java代碼 實(shí)現(xiàn)的接口】
  • 程序計(jì)數(shù)器線程私有。用于記錄 線程 當(dāng)前的 執(zhí)行的位置。
  • 元空間線程共享元空間 就在 中,存儲(chǔ) 類的元數(shù)據(jù)靜態(tài)方法、靜態(tài)屬性。
    3.Java面試題—JVM基礎(chǔ)、內(nèi)存管理、垃圾回收、JVM 調(diào)優(yōu),Java后端面試題 | CABR實(shí)習(xí),jvm,java,開發(fā)語(yǔ)言

[了解] 什么是 Java內(nèi)存模型?

  • JMM 規(guī)定了 多線程環(huán)境 下所有的 變量 都存儲(chǔ)在 主內(nèi)存 中,從而保證變量的 可見性有序性?!?strong>validate】

[了解] 棧幀 是什么?棧幀 有什么作用?

棧幀組成單位。棧幀是一種數(shù)據(jù)結(jié)構(gòu),它封裝了以下信息:

  • 局部變量表:存儲(chǔ) 局部變量。
  • 動(dòng)態(tài)鏈接:存儲(chǔ) 當(dāng)前方法 調(diào)用的 目標(biāo)方法鏈接。
  • 方法返回地址:存儲(chǔ) 目標(biāo)方法執(zhí)行完畢 后的 返回地址。

程序計(jì)數(shù)器 有什么作用?

點(diǎn)擊查看

程序計(jì)數(shù)器 主要有下面兩個(gè)作用:

  • 程序計(jì)數(shù)器 用于記錄 線程 當(dāng)前的 執(zhí)行的位置
  • 解釋器 通過(guò)改變 程序計(jì)數(shù)器 來(lái) 依次讀取指令。

什么是 內(nèi)存溢出?有哪些情況會(huì)導(dǎo)致 內(nèi)存溢出?

內(nèi)存溢出 (OOM) 是指 系統(tǒng) 沒(méi)有足夠的 內(nèi)存空間 可以 分配,從而出現(xiàn)的一種 異常。


導(dǎo)致內(nèi)存溢出的情況:

  • 創(chuàng)建大量對(duì)象
  • 內(nèi)存泄漏

什么是 內(nèi)存泄漏??jī)?nèi)存泄漏 有什么影響?

Java內(nèi)存泄露系列–內(nèi)存泄露的原因及解決方案(大全)

內(nèi)存泄露堆內(nèi)存 中的 對(duì)象 不再使用時(shí),垃圾回收器無(wú)法回收 該對(duì)象,導(dǎo)致 內(nèi)存泄露。


內(nèi)存泄漏 的影響:

  • 長(zhǎng)時(shí)間連續(xù)運(yùn)行時(shí) 性能嚴(yán)重下降
  • 出現(xiàn) OOM 導(dǎo)致 應(yīng)用崩潰;

有哪些情況會(huì)導(dǎo)致 內(nèi)存泄漏?

Java中內(nèi)存泄露原因總結(jié)

  • 靜態(tài)集合類靜態(tài)集合類(如ArrayList、HashMap) 生命周期與程序一致,程序結(jié)束之前 不會(huì)被釋放,會(huì)引起 內(nèi)存泄漏。
  • 連接(IO/數(shù)據(jù))未釋放:如果連接不被顯性的關(guān)閉,會(huì)引起 內(nèi)存泄漏。

三、Java8 垃圾回收【重要】

1、垃圾回收流程

JVM–內(nèi)存模型/垃圾回收流程

Java 堆的內(nèi)存分區(qū)了解嗎?

Java堆內(nèi)存內(nèi)存模型

  • 堆內(nèi)存 主要?jiǎng)澐譃?年輕代、老年代元空間 三個(gè)區(qū)域。
  • 年輕代 存放 存活時(shí)間短 的對(duì)象,每次 垃圾回收 后存活的對(duì)象,將會(huì)逐步存放到 老年代。
  • 年輕代 又可以分為兩個(gè)區(qū)域:Eden、Survivor,Survivor 分為 From區(qū)、To區(qū)。
    3.Java面試題—JVM基礎(chǔ)、內(nèi)存管理、垃圾回收、JVM 調(diào)優(yōu),Java后端面試題 | CABR實(shí)習(xí),jvm,java,開發(fā)語(yǔ)言

JDK8 垃圾回收 的 流程?

JVM–內(nèi)存模型/垃圾回收流程

  • 1、創(chuàng)建一個(gè)新對(duì)象 時(shí),JVM會(huì)將 新對(duì)象 保存在 年輕代Eden區(qū),如果 Eden區(qū)空間 不足,則會(huì)執(zhí)行 Minor GC (年輕代GC)
  • 2、Minor GC 會(huì)將 Eden區(qū)From區(qū) 中的 存活對(duì)象 復(fù)制到 To區(qū),然后清空 Eden區(qū)From區(qū)。
  • 3、如果 To區(qū)空間 不足,會(huì)繼續(xù)進(jìn)行 Minor GC,部分 年輕代對(duì)象 會(huì)逐漸放入 老年代,直到 To區(qū)空間 充足。
  • 4、如果此時(shí) 老年代內(nèi)存 不足,則將執(zhí)行 Full GC。
  • 5、Full GC 后,如果 老年代內(nèi)存 仍然不足,則會(huì)拋出 內(nèi)存溢出 (OOM) 錯(cuò)誤,程序中斷運(yùn)行

什么是 Stop The World?

垃圾回收 時(shí),會(huì)涉及 對(duì)象的移動(dòng)。為了保證 對(duì)象引用 的正確性,必須 暫停所有線程,這樣的停頓被稱為 Stop The World (STW)。


(了解) 對(duì)象有哪幾種引用?

Java引用類型(強(qiáng)引用、軟引用、弱引用、虛引用)的區(qū)別

  • 強(qiáng)引用:代碼中普遍存在的 賦值引用強(qiáng)引用 關(guān)聯(lián)的對(duì)象,不會(huì)被 垃圾收集器 回收。
  • 軟引用軟引用 關(guān)聯(lián)的對(duì)象,MinorGC 第二次遇到 軟引用對(duì)象 才會(huì)進(jìn)行回收。(第一次只進(jìn)行 標(biāo)記)
  • 弱引用弱引用 關(guān)聯(lián)的對(duì)象,會(huì)被 垃圾收集器 回收。
  • 虛引用:最弱的?種 引用關(guān)系,不會(huì)影響對(duì)象的 生存時(shí)間。

2、垃圾收集器

垃圾收集算法 有哪些?

  • 復(fù)制算法
    年輕代 垃圾回收 一般都是基于 復(fù)制算法
  • 標(biāo)記-清除算法
  • 標(biāo)記-整理算法

垃圾收集器都有哪些?

  • Minor GC 垃圾收集器Parallel (并行)、Serial (串行)
  • Full GC 垃圾收集器CMS、G1

CMS 和 G1 區(qū)別?

CMS收集器和G1收集器的區(qū)別

  • CMS 基于 標(biāo)記-清除算法。G1 基于 標(biāo)記-整理算法 (整體)復(fù)制算法 (局部)。
  • CMS 并發(fā)清除階段 會(huì)導(dǎo)致 內(nèi)存碎片比過(guò)多。G1 主要解決了 內(nèi)存碎片過(guò)多 的問(wèn)題。
  • Java8 默認(rèn)使用 CMS 回收 老年代
    3.Java面試題—JVM基礎(chǔ)、內(nèi)存管理、垃圾回收、JVM 調(diào)優(yōu),Java后端面試題 | CABR實(shí)習(xí),jvm,java,開發(fā)語(yǔ)言

說(shuō)一下 CMS 垃圾收集器 的工作過(guò)程?

CMS 垃圾收集器 使用 標(biāo)記-清除算法,收集過(guò)程分為四步:

  1. 初始標(biāo)記:標(biāo)記 GC Roots直達(dá)的對(duì)象。需要 STW。
  2. 并發(fā)標(biāo)記:從 GC Roots直達(dá)的對(duì)象 開始 遍歷,找出要 回收的對(duì)象。
  3. 重新標(biāo)記:標(biāo)記 并發(fā)標(biāo)記階段 產(chǎn)生的對(duì)象。需要 STW。
  4. 并發(fā)清除:清理掉 標(biāo)記階段 標(biāo)記的對(duì)象。

說(shuō)一下 G1 垃圾收集器 的工作過(guò)程?

G1 收集器 使用了 復(fù)制算法標(biāo)記-整理算法,收集過(guò)程分為四步:

  1. 初始標(biāo)記:標(biāo)記 GC Roots直達(dá)的對(duì)象。需要 STW。
  2. 并發(fā)標(biāo)記:從 GC Roots直達(dá)的對(duì)象 開始 遍歷,找出要 回收的對(duì)象。
  3. 重新標(biāo)記:標(biāo)記 并發(fā)標(biāo)記階段 產(chǎn)生的對(duì)象。需要 STW。
  4. 篩選回收:選擇多個(gè) Region 構(gòu)成 回收集,把 回收集 中 的 存活對(duì)象 復(fù)制到 空的 Region 中,再清理掉 舊 Region 的全部空間。需要 STW。

哪些 對(duì)象 可以作為 GC Root?

  • 靜態(tài)屬性 引用的對(duì)象
  • 實(shí)例屬性 引用的對(duì)象
  • 中引用的對(duì)象

判斷 垃圾對(duì)象 的方法有哪些?

  • 引用計(jì)數(shù)法缺點(diǎn):當(dāng)兩個(gè)垃圾對(duì)象 互相引用 時(shí),不會(huì) 被判定為 垃圾對(duì)象。
  • 可達(dá)性分析

四、JVM 調(diào)優(yōu)

JVM通常設(shè)置哪些參數(shù)來(lái)調(diào)優(yōu)?

  • -Xms初始堆大小。
  • -Xmx最大堆大小:一般將 XmsXmx 設(shè)為一樣的值,避免重新分配內(nèi)存。
  • -Xmn:設(shè)置 年輕代空間大小。

堆內(nèi)存、新生代、老年代 一般設(shè)置為多大內(nèi)存?

Java — 堆內(nèi)存、新生代、老年代 一般設(shè)置為多大內(nèi)存?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-617152.html

  • 堆內(nèi)存:通常將 最大堆內(nèi)存大小 設(shè)置為可用 物理內(nèi)存的 1/22/3。
  • 新生代:通常設(shè)置為整個(gè) 堆內(nèi)存1/3。
  • 老年代:通常設(shè)置為整個(gè) 堆內(nèi)存2/3。

頻繁 Minor GC 怎么辦?

  • 頻繁 Minor GC 的原因新生代 空間較小,Eden 區(qū)To區(qū) 很快會(huì)被填滿。
  • 解決方法:可以通過(guò) 增大新生代空間 -Xmn 來(lái)降低 Minor GC 的頻率。

到了這里,關(guān)于3.Java面試題—JVM基礎(chǔ)、內(nèi)存管理、垃圾回收、JVM 調(diào)優(yōu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • JVM基礎(chǔ)知識(shí)(內(nèi)存區(qū)域劃分,類加載,GC垃圾回收)

    JVM基礎(chǔ)知識(shí)(內(nèi)存區(qū)域劃分,類加載,GC垃圾回收)

    目錄 內(nèi)存區(qū)域劃分 JVM中的棧 JVM中的堆 程序計(jì)數(shù)器 方法區(qū)(元數(shù)據(jù)區(qū)) 給一段代碼,某個(gè)變量在哪個(gè)區(qū)域上? 類加載 類加載時(shí)機(jī) 雙親委派模型 GC 垃圾回收機(jī)制 GC 實(shí)際工作過(guò)程 1.找到垃圾/判定垃圾 1.可達(dá)性分析(Java中的做法) 2.引用計(jì)數(shù) 2.清理垃圾 1.標(biāo)記清除 2.復(fù)制算法 3.標(biāo)記整

    2024年02月07日
    瀏覽(28)
  • java八股文面試[JVM]——垃圾回收

    java八股文面試[JVM]——垃圾回收

    參考:JVM學(xué)習(xí)筆記(一)_卷心菜不卷Iris的博客-CSDN博客 GC垃圾回收 面試題: JVM內(nèi)存模型 以及分區(qū),需要詳細(xì)到每個(gè)區(qū)放什么 堆里面的分區(qū):Eden,survival from to,老年代,各自的特點(diǎn)。 GC的三種收集方法:標(biāo)記清除、標(biāo)記整理、復(fù)制算法的原理與特點(diǎn),分別用在什么地方 針

    2024年02月11日
    瀏覽(44)
  • JVM——垃圾回收器G1+垃圾回收調(diào)優(yōu)

    JVM——垃圾回收器G1+垃圾回收調(diào)優(yōu)

    定義: 取代了CMS垃圾回收器。和CMS一樣時(shí)并發(fā)的。 ?適用場(chǎng)景: 物理上分區(qū),邏輯上分代。? ?相關(guān)JVM參數(shù): -XX:+UseG1GC -XX:G1HeapRegionSize=size -XX:MaxGCPauseMillis=time ?三個(gè)回收階段,第一個(gè)是新生代回收,第二個(gè)是新生代+CM,第三個(gè)是混合回收。 當(dāng)老年代內(nèi)存超過(guò)閾值,會(huì)在新生代垃

    2024年02月12日
    瀏覽(17)
  • java八股文面試[JVM]——垃圾回收器

    java八股文面試[JVM]——垃圾回收器

    jvm結(jié)構(gòu)總結(jié) ? 常見的垃圾回收器有哪些? ? ? CMS(Concurrent Mark Sweep) 整堆收集器 : G1 由于整個(gè)過(guò)程中 耗時(shí)最長(zhǎng) 的 并發(fā)標(biāo)記 和 并發(fā)清除 過(guò)程中,收集器線程都可以與用戶線程一起工作,所以 總體上來(lái)說(shuō) ,CMS收集器的內(nèi)存回收過(guò)程是與用戶線程一起并發(fā)地執(zhí)行。老年代收

    2024年02月11日
    瀏覽(29)
  • java面經(jīng)03-虛擬機(jī)篇-jvm內(nèi)存結(jié)構(gòu)&垃圾回收、內(nèi)存溢出&類加載、引用&悲觀鎖&HashTable、引用&finalize

    java面經(jīng)03-虛擬機(jī)篇-jvm內(nèi)存結(jié)構(gòu)&垃圾回收、內(nèi)存溢出&類加載、引用&悲觀鎖&HashTable、引用&finalize

    要求 掌握 JVM 內(nèi)存結(jié)構(gòu)劃分 尤其要知道方法區(qū)、永久代、元空間的關(guān)系 結(jié)合一段 java 代碼的執(zhí)行理解內(nèi)存劃分 執(zhí)行 javac 命令編譯源代碼為字節(jié)碼 執(zhí)行 java 命令 創(chuàng)建 JVM,調(diào)用類加載子系統(tǒng)加載 class,將類的信息存入 方法區(qū) 創(chuàng)建 main 線程,使用的內(nèi)存區(qū)域是 JVM 虛擬機(jī)棧 ,

    2024年02月09日
    瀏覽(22)
  • 2.6. Java內(nèi)存管理與垃圾回收

    2.6.1. Java內(nèi)存模型 在Java中,內(nèi)存被劃分為以下幾個(gè)區(qū)域: 堆(Heap):存儲(chǔ)對(duì)象實(shí)例和數(shù)組,是垃圾回收的主要區(qū)域。 棧(Stack):存儲(chǔ)局部變量和方法調(diào)用。每個(gè)線程有自己的棧。 方法區(qū)(Method Area):存儲(chǔ)類信息,如類的結(jié)構(gòu)、方法、字段等。 本地方法棧(Native Method

    2024年02月07日
    瀏覽(25)
  • 【Java高級(jí)應(yīng)用:深入探索Java編程的強(qiáng)大功能,JVM 類加載機(jī)制, JVM 內(nèi)存模型,垃圾回收機(jī)制,JVM 字節(jié)碼執(zhí)行,異常處理機(jī)制】

    本人詳解 作者:王文峰,參加過(guò) CSDN 2020年度博客之星,《Java王大師王天師》 公眾號(hào):JAVA開發(fā)王大師,專注于天道酬勤的 Java 開發(fā)問(wèn)題 中國(guó)國(guó)學(xué)、傳統(tǒng)文化和代碼愛好者的程序人生,期待你的關(guān)注和支持!本人外號(hào):神秘小峯 山峯 轉(zhuǎn)載說(shuō)明:務(wù)必注明來(lái)源(注明:作者:

    2024年01月16日
    瀏覽(27)
  • jvm垃圾回收及內(nèi)存模型

    jvm垃圾回收及內(nèi)存模型

    1、了解垃圾回收之前,必須先了解內(nèi)存模型 jdk1.8后,元空間是 方法區(qū)的具體實(shí)現(xiàn) (方法區(qū)是規(guī)范,之前叫永久代) ? 1)運(yùn)行時(shí)常量池? 就是字節(jié)碼生成的Class對(duì)象包含上述的常量池 ? ? ? 2、垃圾回收區(qū)域 ? ?a、 首先要標(biāo)記垃圾,找出垃圾 ? ? ?b、Java垃圾回收(一)_java 垃

    2024年02月08日
    瀏覽(21)
  • JVM之內(nèi)存與垃圾回收篇2

    JVM之內(nèi)存與垃圾回收篇2

    PC Register是唯一一個(gè)在Java虛擬機(jī)規(guī)范中沒(méi)有規(guī)定任何OutOfMemoryError的區(qū)域。 為什么要有PC寄存器? 因?yàn)镃PU會(huì)在不同的線程之間來(lái)回切換,切換回來(lái)之后,需要知道接著從哪里開始執(zhí)行。 JVM字節(jié)碼解釋器需要通過(guò)改變PC寄存器中的值來(lái)明確下一條應(yīng)該執(zhí)行什么樣的字節(jié)碼指令。

    2024年02月17日
    瀏覽(24)
  • JVM學(xué)習(xí) GC垃圾回收機(jī)制 (堆內(nèi)存結(jié)構(gòu)、GC分類、四大垃圾回收算法)

    JVM學(xué)習(xí) GC垃圾回收機(jī)制 (堆內(nèi)存結(jié)構(gòu)、GC分類、四大垃圾回收算法)

    ?? 作者簡(jiǎn)介: 努力的clz ,一個(gè)努力編程的菜鳥 ?????? ? ?? 文章專欄: 《JVM 學(xué)習(xí)筆記》 ,本專欄會(huì)專門記錄博主在學(xué)習(xí) JVM 中學(xué)習(xí)的知識(shí)點(diǎn),以及遇到的問(wèn)題。 ? ?? 文章詳情: 本篇博客是學(xué)習(xí) 【狂神說(shuō)Java】JVM快速入門篇 的學(xué)習(xí)筆記,關(guān)于 GC垃圾回收機(jī)制 (堆內(nèi)存結(jié)

    2023年04月19日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包