日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

JVM 內(nèi)存結(jié)構(gòu)詳解,看這一篇就夠了

來源: 責(zé)編: 時間:2023-11-06 08:54:03 306觀看
導(dǎo)讀本文主要對JVM 內(nèi)存結(jié)構(gòu)進行講解,注意不要和Java內(nèi)存模型混淆了。內(nèi)存結(jié)構(gòu)是指 Jvm 運行時將數(shù)據(jù)分區(qū)域存儲,強調(diào)對內(nèi)存空間的劃分。內(nèi)存模型(Java Memory Model,簡稱 JMM )是定義了線程和主內(nèi)存之間的抽象關(guān)系,即 JMM 定義

84w28資訊網(wǎng)——每日最新資訊28at.com

本文主要對JVM 內(nèi)存結(jié)構(gòu)進行講解,注意不要和Java內(nèi)存模型混淆了。84w28資訊網(wǎng)——每日最新資訊28at.com

內(nèi)存結(jié)構(gòu)是指 Jvm 運行時將數(shù)據(jù)分區(qū)域存儲,強調(diào)對內(nèi)存空間的劃分。84w28資訊網(wǎng)——每日最新資訊28at.com

內(nèi)存模型(Java Memory Model,簡稱 JMM )是定義了線程和主內(nèi)存之間的抽象關(guān)系,即 JMM 定義了 JVM 在計算機內(nèi)存(RAM)中的工作方式,是虛擬機的內(nèi)存管理模型,是一種虛擬機工程規(guī)范。84w28資訊網(wǎng)——每日最新資訊28at.com

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

內(nèi)存是非常重要的系統(tǒng)資源,是硬盤和 CPU 的中間倉庫及橋梁,承載著操作系統(tǒng)和應(yīng)用程序的實時運行。JVM 內(nèi)存布局規(guī)定了 Java 在運行過程中內(nèi)存申請、分配、管理的策略,保證了 JVM 的高效穩(wěn)定運行。不同的 JVM 對于內(nèi)存的劃分方式和管理機制存在著部分差異。84w28資訊網(wǎng)——每日最新資訊28at.com

下圖是 JVM 整體架構(gòu),中間部分就是 Java 虛擬機定義的各種運行時數(shù)據(jù)區(qū)域。84w28資訊網(wǎng)——每日最新資訊28at.com

84w28資訊網(wǎng)——每日最新資訊28at.com

Java 虛擬機(源于網(wǎng)絡(luò))84w28資訊網(wǎng)——每日最新資訊28at.com

Java 虛擬機定義了若干種程序運行期間會使用到的運行時數(shù)據(jù)區(qū),其中有一些會隨著虛擬機啟動而創(chuàng)建,隨著虛擬機退出而銷毀。另外一些則是與線程一一對應(yīng)的,這些與線程一一對應(yīng)的數(shù)據(jù)區(qū)域會隨著線程開始和結(jié)束而創(chuàng)建和銷毀。84w28資訊網(wǎng)——每日最新資訊28at.com

  • 線程私有:程序計數(shù)器、虛擬機棧、本地方法區(qū)。
  • 線程共享:堆、方法區(qū), 堆外內(nèi)存(Java7的永久代或JDK8的元空間、代碼緩存)。

程序計數(shù)器

程序計數(shù)器(Program Counter Register)是一塊較小的內(nèi)存空間,它的作用可以看做是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號指示器。在虛擬機的概念模型里(僅是概念模型,各種虛擬機可能會通過一些更高效的方式去實現(xiàn)),字節(jié)碼解釋器工作時就是通過改變這個計數(shù)器的值來選取下一條需要執(zhí)行的字節(jié)碼指令,分支、循環(huán)、跳轉(zhuǎn)、異常處理、線程恢復(fù)等基礎(chǔ)功能都需要依賴這個計數(shù)器來完成。84w28資訊網(wǎng)——每日最新資訊28at.com

84w28資訊網(wǎng)——每日最新資訊28at.com

PC 寄存器用來存儲指向下一條指令的地址(IDEA 插件 Jclasslib查看字節(jié)碼)84w28資訊網(wǎng)——每日最新資訊28at.com

由于Java虛擬機的多線程是通過線程輪流切換并分配處理器執(zhí)行時間的方式來實現(xiàn)的,在任何一個確定的時刻,一個處理器(對于多核處理器來說是一個內(nèi)核)只會執(zhí)行一條線程中的指令。因此,為了線程切換后能恢復(fù)到正確的執(zhí)行位置,每條線程都需要有一個獨立的程序計數(shù)器,各條線程之間的計數(shù)器互不影響,獨立存儲,我們稱這類內(nèi)存區(qū)域為“線程私有”的內(nèi)存。84w28資訊網(wǎng)——每日最新資訊28at.com

如果線程正在執(zhí)行的是一個Java方法,這個計數(shù)器記錄的是正在執(zhí)行的虛擬機字節(jié)碼指令的地址;如果正在執(zhí)行的是Natvie方法,這個計數(shù)器值則為空(Undefined)。84w28資訊網(wǎng)——每日最新資訊28at.com

此內(nèi)存區(qū)域是唯一一個在Java虛擬機規(guī)范中沒有規(guī)定任何OutOfMemoryError情況的區(qū)域。84w28資訊網(wǎng)——每日最新資訊28at.com

  • 使用程序計數(shù)器(PC寄存器存儲字節(jié)碼指令地址有什么用呢?為什么使用程序計數(shù)器記錄當(dāng)前線程的執(zhí)行地址呢?

因為CPU需要不停的切換各個線程,這時候切換回來以后,就得知道接著從哪開始繼續(xù)執(zhí)行。JVM的字節(jié)碼解釋器就需要通過改變PC寄存器的值來明確下一條應(yīng)該執(zhí)行什么樣的字節(jié)碼指令。84w28資訊網(wǎng)——每日最新資訊28at.com

  • 程序計數(shù)器(PC寄存器為什么會被設(shè)定為線程私有的?

多線程在一個特定的時間段內(nèi)只會執(zhí)行其中某一個線程方法,CPU會不停的做任務(wù)切換,這樣必然會導(dǎo)致經(jīng)常中斷或恢復(fù)。為了能夠準確的記錄各個線程正在執(zhí)行的當(dāng)前字節(jié)碼指令地址,所以為每個線程都分配了一個PC寄存器,每個線程都獨立計算,不會互相影響。84w28資訊網(wǎng)——每日最新資訊28at.com

JVM線程棧幀

(1)什么是虛擬機棧

與程序計數(shù)器一樣,Java虛擬機棧(Java Virtual Machine Stacks)也是線程私有的,它的生命周期與線程相同。虛擬機棧描述的是Java方法執(zhí)行的內(nèi)存模型:每個方法被執(zhí)行的時候都會同時創(chuàng)建一個棧幀(Stack Frame)用于存儲局部變量表、操作棧、動態(tài)鏈接、方法出口等信息。每一個方法被調(diào)用直至執(zhí)行完成的過程,就對應(yīng)著一個棧幀在虛擬機棧中從入棧到出棧的過程。84w28資訊網(wǎng)——每日最新資訊28at.com

84w28資訊網(wǎng)——每日最新資訊28at.com

棧幀的內(nèi)部結(jié)構(gòu)84w28資訊網(wǎng)——每日最新資訊28at.com

局部變量表存放了編譯期可知的各種基本數(shù)據(jù)類型(boolean、byte、char、short、int、float、long、double)、對象引用(reference類型,它不等同于對象本身,根據(jù)不同的虛擬機實現(xiàn),它可能是一個指向?qū)ο笃鹗嫉刂返囊弥羔槪部赡苤赶蛞粋€代表對象的句柄或者其他與此對象相關(guān)的位置)和returnAddress類型(指向了一條字節(jié)碼指令的地址)。局部變量表所需的內(nèi)存空間在編譯期間完成分配,當(dāng)進入一個方法時,這個方法需要在幀中分配多大的局部變量空間是完全確定的,在方法運行期間不會改變局部變量表的大小。84w28資訊網(wǎng)——每日最新資訊28at.com

操作數(shù)棧,和局部變量區(qū)一樣,也被組織成一個以字長為單位的數(shù)組,但和前者不同的是,它不是通過索引來訪問的,而是通過入棧和出棧來訪問的,可把操作數(shù)棧理解為存儲計算時,臨時數(shù)據(jù)的存儲區(qū)域。84w28資訊網(wǎng)——每日最新資訊28at.com

除了局部變量區(qū)和操作數(shù)棧外,java棧幀還需要一些數(shù)據(jù)來支持常量池解析、正常方法返回以及異常派發(fā)機制。這些數(shù)據(jù)都保存在java棧幀的幀數(shù)據(jù)區(qū)中。84w28資訊網(wǎng)——每日最新資訊28at.com

在Java虛擬機規(guī)范中,對這個區(qū)域規(guī)定了兩種異常狀況:如果線程請求的棧深度大于虛擬機所允許的深度,將拋出StackOverflowError異常;如果虛擬機棧可以動態(tài)擴展(當(dāng)前大部分的Java虛擬機都可動態(tài)擴展,只不過Java虛擬機規(guī)范中也允許固定長度的虛擬機棧),當(dāng)擴展時無法申請到足夠的內(nèi)存時會拋出OutOfMemoryError異常。84w28資訊網(wǎng)——每日最新資訊28at.com

可以通過參數(shù)-Xss來設(shè)置每個線程的棧大小,棧的大小直接決定了函數(shù)調(diào)用的最大可達深度。84w28資訊網(wǎng)——每日最新資訊28at.com

(2)棧運行原理

84w28資訊網(wǎng)——每日最新資訊28at.com

  • JVM 直接對 Java 棧的操作只有兩個,對棧幀的壓棧和出棧,遵循“先進后出/后進先出”原則。
  • 在一條活動線程中,一個時間點上,只會有一個活動的棧幀。即只有當(dāng)前正在執(zhí)行的方法的棧幀(棧頂棧幀)是有效的,這個棧幀被稱為當(dāng)前棧幀(Current Frame),與當(dāng)前棧幀對應(yīng)的方法就是當(dāng)前方法(Current Method),定義這個方法的類就是當(dāng)前類(Current Class)。
  • 執(zhí)行引擎運行的所有字節(jié)碼指令只針對當(dāng)前棧幀進行操作。
  • 如果在該方法中調(diào)用了其他方法,對應(yīng)的新的棧幀會被創(chuàng)建出來,放在棧的頂端,稱為新的當(dāng)前棧幀。
  • 不同線程中所包含的棧幀是不允許存在相互引用的,即不可能在一個棧幀中引用另外一個線程的棧幀。
  • 如果當(dāng)前方法調(diào)用了其他方法,方法返回之際,當(dāng)前棧幀會傳回此方法的執(zhí)行結(jié)果給前一個棧幀,接著,虛擬機會丟棄當(dāng)前棧幀,使得前一個棧幀重新成為當(dāng)前棧幀。
  • Java 方法有兩種返回函數(shù)的方式,一種是正常的函數(shù)返回,使用 return 指令,另一種是拋出異常,不管用哪種方式,都會導(dǎo)致棧幀被彈出。
public class StackFrameTest {    public static void main(String[] args) {        test1();    }    private static void test1(){        System.out.println("test1 start");        test2();        System.out.println("test1 end");    }    private static void test2(){        System.out.println("test1 start");        test3();        System.out.println("test1 end");    }    private static int test3(){        System.out.println("test1 start");        int i = 1;        System.out.println("test1 end");        return i;    }}

IDEA 在 debug 時候,可以在 debug 窗口看到 Frames 中各種方法的壓棧和出棧情況。84w28資訊網(wǎng)——每日最新資訊28at.com

84w28資訊網(wǎng)——每日最新資訊28at.com

本地方法棧(Native Method Stacks)

本地方法棧(Native Method Stacks)與虛擬機棧所發(fā)揮的作用是非常相似的,其區(qū)別不過是虛擬機棧為虛擬機執(zhí)行Java方法(也就是字節(jié)碼)服務(wù),而本地方法棧則是為虛擬機使用到的Native方法服務(wù)。具體做法是 Native Method Stack 中登記 native 方法,在 Execution Engine 執(zhí)行時加載本地方法庫當(dāng)某個線程調(diào)用一個本地方法時,它就進入了一個全新的并且不再受虛擬機限制的世界。它和虛擬機擁有同樣的權(quán)限。84w28資訊網(wǎng)——每日最新資訊28at.com

虛擬機規(guī)范中對本地方法棧中的方法使用的語言、使用方式與數(shù)據(jù)結(jié)構(gòu)并沒有強制規(guī)定,因此具體的虛擬機可以自由實現(xiàn)它(并不是所有 JVM 都支持本地方法。如果 JVM 產(chǎn)品不打算支持 native 方法,也可以無需實現(xiàn)本地方法棧)。甚至有的虛擬機(譬如Sun HotSpot虛擬機)直接就把本地方法棧和虛擬機棧合二為一。與虛擬機棧一樣,本地方法棧區(qū)域也會拋出StackOverflowError和OutOfMemoryError異常。84w28資訊網(wǎng)——每日最新資訊28at.com

棧是運行時的單位,而堆是存儲的單位。84w28資訊網(wǎng)——每日最新資訊28at.com

棧解決程序的運行問題,即程序如何執(zhí)行,或者說如何處理數(shù)據(jù)。堆解決的是數(shù)據(jù)存儲的問題,即數(shù)據(jù)怎么放、放在哪。84w28資訊網(wǎng)——每日最新資訊28at.com

堆內(nèi)存

(1)內(nèi)存劃分

對于大多數(shù)應(yīng)用,Java 堆是 Java 虛擬機管理的內(nèi)存中最大的一塊,被所有線程共享。此內(nèi)存區(qū)域的唯一目的就是存放對象實例,幾乎所有的對象實例以及數(shù)據(jù)都在這里分配內(nèi)存。84w28資訊網(wǎng)——每日最新資訊28at.com

為什么“幾乎所有的對象實例都在這里分配內(nèi)存,而不是全部”?84w28資訊網(wǎng)——每日最新資訊28at.com

為了進行高效的垃圾回收,虛擬機把堆內(nèi)存邏輯上劃分成三塊區(qū)域(分代的唯一理由就是優(yōu)化 GC 性能):84w28資訊網(wǎng)——每日最新資訊28at.com

  • 新生代(年輕代):新對象和沒達到一定年齡的對象都在新生代。
  • 老年代(養(yǎng)老區(qū)):被長時間使用的對象,老年代的內(nèi)存空間應(yīng)該要比年輕代更大。
  • 元空間(JDK1.8 之前叫永久代):像一些方法中的操作臨時對象等,JDK1.8 之前是占用 JVM 內(nèi)存,JDK1.8 之后直接使用物理內(nèi)存。

84w28資訊網(wǎng)——每日最新資訊28at.com

年輕代和老年代的劃分是為了更好的內(nèi)存分派及回收(源于網(wǎng)絡(luò))84w28資訊網(wǎng)——每日最新資訊28at.com

  • 年輕代 (Young Generation)

年輕代是所有新對象創(chuàng)建的地方。當(dāng)填充年輕代時,執(zhí)行垃圾收集。這種垃圾收集稱為 Minor GC。年輕一代被分為三個部分——伊甸園(Eden Memory)和兩個幸存區(qū)(Survivor Memory,被稱為from/to或s0/s1),默認比例是8:1:184w28資訊網(wǎng)——每日最新資訊28at.com

  • 大多數(shù)新創(chuàng)建的對象都位于 Eden 內(nèi)存空間中。
  • 當(dāng) Eden 空間被對象填充時,執(zhí)行Minor GC,并將所有幸存者對象移動到一個幸存者空間中。
  • Minor GC 檢查幸存者對象,并將它們移動到另一個幸存者空間。所以總有一個幸存者空間是空的。
  • 經(jīng)過多次 GC 循環(huán)后存活下來的對象被移動到老年代。通常,這是通過設(shè)置年輕一代對象的年齡閾值來實現(xiàn)的,然后他們才有資格提升到老一代。
  • 老年代(Old Generation)。

老年代中存放的對象是存活了很久的,年齡大于15的對象。在老年代觸發(fā)的gc叫major gc也叫full gc。full gc會包含年輕代的gc。但老年代只要執(zhí)行g(shù)c就一定是full gc。在執(zhí)行full gc的情況下,會阻塞程序的正常運行。老年代的gc比年輕代的gc效率上慢10倍以上,對效率有很大的影響。84w28資訊網(wǎng)——每日最新資訊28at.com

大對象直接進入老年代(大對象是指需要大量連續(xù)內(nèi)存空間的對象)。這樣做的目的是避免在 Eden 區(qū)和兩個Survivor 區(qū)之間發(fā)生大量的內(nèi)存拷貝。84w28資訊網(wǎng)——每日最新資訊28at.com

84w28資訊網(wǎng)——每日最新資訊28at.com

java8前后84w28資訊網(wǎng)——每日最新資訊28at.com

?? 持久代在物理層面,是在堆空間的;而在邏輯層面,是在方法區(qū)的;因為方法區(qū)其實物理上也是在堆中的,但是由于功能和作用的區(qū)別,邏輯上方法區(qū)是獨立于堆的。84w28資訊網(wǎng)——每日最新資訊28at.com

  • 元空間

元空間是metaspace,在jdk1.8的時候,jvm移除了永久代的概念,元空間也是對java虛擬機的方法區(qū)的一種實現(xiàn)。元空間與永久代最大的區(qū)別在于,元空間不在虛擬機中,使用本地內(nèi)存。84w28資訊網(wǎng)——每日最新資訊28at.com

永久代的回收會隨著full gc進行移動,消耗性能。每種類型的垃圾回收都需要特殊處理元數(shù)據(jù)。將元數(shù)據(jù)剝離出來,簡化了垃圾收集,提高了效率。84w28資訊網(wǎng)——每日最新資訊28at.com

Java 虛擬機規(guī)范規(guī)定,Java 堆可以是處于物理上不連續(xù)的內(nèi)存空間中,只要邏輯上是連續(xù)的即可,像磁盤空間一樣。實現(xiàn)時,既可以是固定大小,也可以是可擴展的,主流虛擬機都是可擴展的(通過 -Xmx 和 -Xms 控制),如果堆中沒有完成實例分配,并且堆無法再擴展時,就會拋出 OutOfMemoryError 異常。84w28資訊網(wǎng)——每日最新資訊28at.com

(2)對象的分配過程

為對象分配內(nèi)存是一件非常嚴謹和復(fù)雜的任務(wù),JVM 的設(shè)計者們不僅需要考慮內(nèi)存如何分配、在哪里分配等問題,并且由于內(nèi)存分配算法和內(nèi)存回收算法密切相關(guān),所以還需要考慮 GC 執(zhí)行完內(nèi)存回收后是否會在內(nèi)存空間中產(chǎn)生內(nèi)存碎片。84w28資訊網(wǎng)——每日最新資訊28at.com

  • new 的對象先放在伊甸園區(qū),此區(qū)有大小限制。
  • 當(dāng)伊甸園的空間填滿時,程序又需要創(chuàng)建對象,JVM 的垃圾回收器將對伊甸園區(qū)進行垃圾回收(Minor GC),將伊甸園區(qū)中的不再被其他對象所引用的對象進行銷毀。再加載新的對象放到伊甸園區(qū)
  • 然后將伊甸園中的剩余對象移動到幸存者 0 區(qū)
  • 如果再次觸發(fā)垃圾回收,此時上次幸存下來的放到幸存者 0 區(qū),如果沒有回收,就會放到幸存者 1 區(qū)
  • 如果再次經(jīng)歷垃圾回收,此時會重新放回幸存者 0 區(qū),接著再去幸存者 1 區(qū)
  • 什么時候才會去養(yǎng)老區(qū)呢? 默認是 15 次回收標記
  • 在養(yǎng)老區(qū),相對悠閑。當(dāng)養(yǎng)老區(qū)內(nèi)存不足時,再次觸發(fā) Major GC,進行養(yǎng)老區(qū)的內(nèi)存清理
  • 若養(yǎng)老區(qū)執(zhí)行了 Major GC 之后發(fā)現(xiàn)依然無法進行對象的保存,就會產(chǎn)生 OOM 異常

五、方法區(qū)

  • 方法區(qū)(Method Area)與 Java 堆一樣,是所有線程共享的內(nèi)存區(qū)域。
  • 雖然 Java 虛擬機規(guī)范把方法區(qū)描述為堆的一個邏輯部分,但是它卻有一個別名叫 Non-Heap(非堆),目的應(yīng)該是與 Java 堆區(qū)分開。
  • 運行時常量池(Runtime Constant Pool)是方法區(qū)的一部分。Class 文件中除了有類的版本/字段/方法/接口等描述信息外,還有一項信息是常量池(Constant Pool Table),用于存放編譯期生成的各種字面量和符號引用,這部分內(nèi)容將類在加載后進入方法區(qū)的運行時常量池中存放。運行期間也可能將新的常量放入池中,這種特性被開發(fā)人員利用得比較多的是 String.intern()方法。受方法區(qū)內(nèi)存的限制,當(dāng)常量池?zé)o法再申請到內(nèi)存時會拋出 OutOfMemoryError 異常。
  • 方法區(qū)的大小和堆空間一樣,可以選擇固定大小也可選擇可擴展,方法區(qū)的大小決定了系統(tǒng)可以放多少個類,如果系統(tǒng)類太多,導(dǎo)致方法區(qū)溢出,虛擬機同樣會拋出內(nèi)存溢出錯誤
  • JVM 關(guān)閉后方法區(qū)即被釋放

(1)方法區(qū)內(nèi)部結(jié)構(gòu)

方法區(qū)用于存儲已被虛擬機加載的類型信息、常量、靜態(tài)變量、即時編譯器編譯后的代碼緩存等。84w28資訊網(wǎng)——每日最新資訊28at.com

類型信息

對每個加載的類型(類 class、接口 interface、枚舉 enum、注解 annotation),JVM 必須在方法區(qū)中存儲以下類型信息84w28資訊網(wǎng)——每日最新資訊28at.com

  • 這個類型的完整有效名稱(全名=包名.類名)
  • 這個類型直接父類的完整有效名(對于 interface或是 java.lang.Object,都沒有父類)
  • 這個類型的修飾符(public,abstract,final 的某個子集)
  • 這個類型直接接口的一個有序列表

域(Field)信息

  • JVM 必須在方法區(qū)中保存類型的所有域的相關(guān)信息以及域的聲明順序
  • 域的相關(guān)信息包括:域名稱、域類型、域修飾符(public、private、protected、static、final、volatile、transient 的某個子集)

方法(Method)信息

JVM 必須保存所有方法的84w28資訊網(wǎng)——每日最新資訊28at.com

  • 方法名稱
  • 方法的返回類型
  • 方法參數(shù)的數(shù)量和類型
  • 方法的修飾符(public,private,protected,static,final,synchronized,native,abstract 的一個子集)
  • 方法的字符碼(bytecodes)、操作數(shù)棧、局部變量表及大小(abstract 和 native 方法除外)
  • 異常表(abstract 和 native 方法除外)每個異常處理的開始位置、結(jié)束位置、代碼處理在程序計數(shù)器中的偏移地址、被捕獲的異常類的常量池索引

(2)方法區(qū)在 JDK6、7、8中的演進細節(jié)

jdk1.6及之前84w28資訊網(wǎng)——每日最新資訊28at.com

有永久代,靜態(tài)變量存放在永久代上84w28資訊網(wǎng)——每日最新資訊28at.com

jdk1.784w28資訊網(wǎng)——每日最新資訊28at.com

有永久代,但已經(jīng)逐步“去永久代”,字符串常量池、靜態(tài)變量移除,保存在堆中84w28資訊網(wǎng)——每日最新資訊28at.com

jdk1.8及之后84w28資訊網(wǎng)——每日最新資訊28at.com

取消永久代,類型信息、字段、方法、常量保存在本地內(nèi)存的元空間,但字符串常量池、靜態(tài)變量仍在堆中84w28資訊網(wǎng)——每日最新資訊28at.com

只有 HotSpot 才有永久代的概念84w28資訊網(wǎng)——每日最新資訊28at.com

(3)方法區(qū)和永久代以及元空間有什么關(guān)系

方法區(qū)和永久代以及元空間的關(guān)系很像(實際不是)Java 中接口和類的關(guān)系,類實現(xiàn)了接口,這里的類就可以看作是永久代和元空間,接口可以看作是方法區(qū),也就是說永久代以及元空間是 HotSpot 虛擬機對虛擬機規(guī)范中方法區(qū)的兩種實現(xiàn)方式。84w28資訊網(wǎng)——每日最新資訊28at.com

84w28資訊網(wǎng)——每日最新資訊28at.com

關(guān)系示意圖84w28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-17175-0.htmlJVM 內(nèi)存結(jié)構(gòu)詳解,看這一篇就夠了

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 什么是API管理?你了解嗎?

下一篇: 如何成為前1%的程序員

標簽:
  • 熱門焦點
  • 5月iOS設(shè)備性能榜:M1 M2依舊是榜單前五

    和上個月一樣,沒有新品發(fā)布的iOS設(shè)備性能榜的上榜設(shè)備并沒有什么更替,僅僅只有跑分變化而產(chǎn)生的排名變動,剛剛開始的蘋果WWDC2023,推出的產(chǎn)品也依舊是新款Mac Pro、新款Mac Stu
  • 分布式系統(tǒng)中的CAP理論,面試必問,你理解了嘛?

    對于剛剛接觸分布式系統(tǒng)的小伙伴們來說,一提起分布式系統(tǒng),就感覺高大上,深不可測。而且看了很多書和視頻還是一臉懵逼。這篇文章主要使用大白話的方式,帶你理解一下分布式系統(tǒng)
  • 之家push系統(tǒng)迭代之路

    前言在這個信息爆炸的互聯(lián)網(wǎng)時代,能夠及時準確獲取信息是當(dāng)今社會要解決的關(guān)鍵問題之一。隨著之家用戶體量和內(nèi)容規(guī)模的不斷增大,傳統(tǒng)的靠"主動拉"獲取信息的方式已不能滿足用
  • 谷歌KDD'23工作:如何提升推薦系統(tǒng)Ranking模型訓(xùn)練穩(wěn)定性

    谷歌在KDD 2023發(fā)表了一篇工作,探索了推薦系統(tǒng)ranking模型的訓(xùn)練穩(wěn)定性問題,分析了造成訓(xùn)練穩(wěn)定性存在問題的潛在原因,以及現(xiàn)有的一些提升模型穩(wěn)定性方法的不足,并提出了一種新
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個人開發(fā)仿造稿定設(shè)計的圖片編輯器到現(xiàn)在,不知不覺已過去一年時間了,期間我經(jīng)歷了裁員失業(yè)、面試找工作碰壁,寒冬下一直沒有很好地履行計劃.....這些就放在日
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產(chǎn)懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風(fēng)頭無兩。你可以說陳思誠的
  • 蘋果、三星、惠普等暫停向印度出口筆記本和平板電腦

    集微網(wǎng)消息,據(jù)彭博社報道,在8月3日印度突然禁止在沒有許可證的情況下向印度進口電腦/平板及顯示器等產(chǎn)品后,蘋果、三星電子和惠普等大公司暫停向印度
  • iQOO 11S新品發(fā)布會

    iQOO將在7月4日19:00舉行新品發(fā)布會,推出杭州亞運會電競賽事官方用機iQOO 11S。
  • 中關(guān)村論壇11月25日開幕,15位諾獎級大咖將發(fā)表演講

    11月18日,記者從2022中關(guān)村論壇新聞發(fā)布會上獲悉,中關(guān)村論壇將于11月25至30日在京舉行。本屆中關(guān)村論壇由科學(xué)技術(shù)部、國家發(fā)展改革委、工業(yè)和信息化部、國務(wù)
Top 主站蜘蛛池模板: 宁化县| 浦东新区| 合肥市| 泰顺县| 浮梁县| 定结县| 科技| 花莲市| 称多县| 金堂县| 宁陵县| 桂东县| 呼伦贝尔市| 临沭县| 保德县| 柞水县| 凌源市| 犍为县| 皋兰县| 高尔夫| 寿光市| 汕头市| 海兴县| 依兰县| 治县。| 怀来县| 九台市| 浠水县| 江油市| 都安| 五寨县| 杭州市| 通辽市| 延寿县| 酒泉市| 炉霍县| 平定县| 龙川县| 甘谷县| 南澳县| 阿克|