chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探討JVM的內(nèi)存布局

Android編程精選 ? 來(lái)源:博客園 ? 作者:追風(fēng)少年瀟歌 ? 2022-09-09 15:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

內(nèi)存布局

JVM內(nèi)存布局規(guī)定了Java在運(yùn)行過(guò)程中內(nèi)存申請(qǐng)、分配、管理的策略,保證了JVM的穩(wěn)定高效運(yùn)行。不同的JVM對(duì)于內(nèi)存的劃分方式和管理機(jī)制存在部分差異。結(jié)合JVM虛擬機(jī)規(guī)范,一起來(lái)探討jVM的內(nèi)存布局。如下圖所示:

9777d98a-2424-11ed-ba43-dac502259ad0.png

Heap 堆區(qū)

Heap堆區(qū)是Java發(fā)生OOM(Out Of Memory)故障的地方,堆中存儲(chǔ)著我們平時(shí)創(chuàng)建的實(shí)例對(duì)象,最終這些不再使用的對(duì)象會(huì)被垃圾收集器回收掉,而且堆是線程共享的。一般情況下,堆所占用的內(nèi)存空間是JVM內(nèi)存區(qū)域中最大的,我們?cè)谄綍r(shí)編碼中,創(chuàng)建對(duì)象如果不加以克制,內(nèi)存空間也會(huì)被耗盡。

堆的內(nèi)存空間是可以自定義大小的,同時(shí)也支持在運(yùn)行時(shí)動(dòng)態(tài)修改,通過(guò) -Xms 、-Xmx 這兩參數(shù)去改變堆的初始值和最大值。-X指的是JVM運(yùn)行參數(shù),ms 是memory start的簡(jiǎn)稱,代表的是最小堆容量,mx是memory max的簡(jiǎn)稱,代表的是最大堆容量;如 -Xms256M代表堆的初始值是256M,-Xmx1024M代表堆的最大值是1024M。

由于堆的內(nèi)存空間是可以動(dòng)態(tài)調(diào)整的,所以在服務(wù)器運(yùn)行的時(shí)候,請(qǐng)求流量的不確定性可能會(huì)導(dǎo)致我們堆的內(nèi)存空間不斷調(diào)整,會(huì)增加服務(wù)器的壓力,所以我們一般都會(huì)將JVM的Xms和Xmx的值設(shè)置成一樣,同樣也為了避免在GC(垃圾回收)之后調(diào)整堆大小時(shí)帶來(lái)的額外壓力。

堆區(qū)分為兩大區(qū):Young區(qū)和Old區(qū),又稱新生代和老年代。對(duì)象剛創(chuàng)建的時(shí)候,會(huì)被創(chuàng)建在新生代,到一定階段之后會(huì)移送至老年代,如果創(chuàng)建了一個(gè)新生代無(wú)法容納的新對(duì)象,那么這個(gè)新對(duì)象也可以創(chuàng)建到老年代。如上圖所示。

新生代分為1個(gè)Eden區(qū)和2個(gè)S區(qū),S代表Survivor。大部分的對(duì)象會(huì)在Eden區(qū)中生成,當(dāng)Eden區(qū)沒(méi)有足夠的空間容納新對(duì)象時(shí),會(huì)觸發(fā)Young Garbage Collection,即YGC。在Eden區(qū)進(jìn)行垃圾清除時(shí),它的策略是會(huì)把沒(méi)有引用的對(duì)象直接給回收掉,還有引用的對(duì)象會(huì)被移送到Survivor區(qū)。

Survivor區(qū)有S0和S1兩個(gè)內(nèi)存空間,每次進(jìn)行YGC的時(shí)候,會(huì)將存活的對(duì)象復(fù)制到未使用的那塊內(nèi)存空間,然后將當(dāng)前正在使用的空間完全清除掉,再交換兩個(gè)空間的使用狀況。如果YGC要移送的對(duì)象Survivor區(qū)無(wú)法容納,那么就會(huì)將該對(duì)象直接移交給老年代。

上面說(shuō)了,到一定階段的對(duì)象會(huì)移送到老年區(qū),這是什么意思呢?每一個(gè)對(duì)象都有一個(gè)計(jì)數(shù)器,當(dāng)每次進(jìn)行YGC的時(shí)候,都會(huì) +1。通過(guò)-XX:MAXTenuringThrehold參數(shù)可以配置當(dāng)計(jì)數(shù)器的值到達(dá)某個(gè)閾值時(shí),對(duì)象就會(huì)從新生代移送至老年代。

該參數(shù)的默認(rèn)值為15,也就是說(shuō)對(duì)象在Survivor區(qū)中的S0和S1內(nèi)存空間交換的次數(shù)累加到15次之后,就會(huì)移送至老年代。如果參數(shù)配置為1,那么創(chuàng)建的對(duì)象就會(huì)直接移送至老年代。具體的對(duì)象分配即回收流程可觀看下圖所示。

978e5d4a-2424-11ed-ba43-dac502259ad0.png

如果Survivor區(qū)無(wú)法放下,或者創(chuàng)建了一個(gè)超大新對(duì)象,Eden和Old區(qū)都無(wú)法存放,就會(huì)觸發(fā)Full Garbage Collection,即FGG,便再嘗試放在Old區(qū),如果還是容納不了,就會(huì)拋出OOM異常。在不同的JVM實(shí)現(xiàn)及不同的回收機(jī)制中,堆內(nèi)存的劃分方式是不一樣的。

Metaspace 元空間

在JDK8版本中,元空間的前身Pern區(qū)已經(jīng)被淘汰。在JDK7及之前的版本中,Hotspot還有Pern區(qū),翻譯為永久代,在啟動(dòng)時(shí)就已經(jīng)確定了大小,難以進(jìn)行調(diào)優(yōu),并且只有FGC時(shí)會(huì)移動(dòng)類元信息。不同于之前版本的Pern(永久代),JDK8的元空間已經(jīng)在本地內(nèi)存中進(jìn)行分配,并且,Pern區(qū)中的所有內(nèi)容中字符串常量移至堆內(nèi)存,其他內(nèi)容也包括了類元信息、字段、靜態(tài)屬性、方法、常量等等都移至元空間內(nèi)。

JVM Stacks 虛擬機(jī)棧

棧(Stack)是一個(gè)先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),先進(jìn)后出怎么理解?類似于我們平時(shí)打羽毛球時(shí),裝羽毛球的球筒,第一個(gè)先放進(jìn)去的往往最后一個(gè)才能拿出來(lái),最后放進(jìn)去的一個(gè)最先拿出來(lái)。

相對(duì)于基于寄存器的運(yùn)行環(huán)境來(lái)說(shuō),JVM是基于棧結(jié)構(gòu)的運(yùn)行環(huán)境。因?yàn)闂=Y(jié)構(gòu)移植性更好,可控性更強(qiáng)。JVM的虛擬機(jī)棧是描述Java方法執(zhí)行的內(nèi)存區(qū)域,并且是線程私有的。棧中的元素用于支持虛擬機(jī)進(jìn)行方法調(diào)用,每個(gè)方法從開(kāi)始調(diào)用到執(zhí)行完成的過(guò)程,就是棧幀從入幀到出幀的過(guò)程。

在活動(dòng)線程中,只有位于棧頂?shù)膸攀怯行У?,稱為當(dāng)前棧幀。正在執(zhí)行的方法稱為當(dāng)前方法,棧幀是方法運(yùn)行的基本結(jié)構(gòu)。在執(zhí)行引擎運(yùn)行時(shí),所有指令都只能針對(duì)當(dāng)前棧幀進(jìn)行操作。而StackOverflowError表示請(qǐng)求的棧溢出,導(dǎo)致內(nèi)存耗盡,通常出現(xiàn)在遞歸方法中。如果把JVM當(dāng)做一個(gè)棋盤,虛擬機(jī)棧就是棋盤上的將/帥,當(dāng)前方法的棧幀就是棋子能走的區(qū)域,而操作棧就是每一個(gè)棋子。操作棧的壓棧和出棧如下圖所示:

979ecef0-2424-11ed-ba43-dac502259ad0.png

虛擬機(jī)棧通過(guò)壓棧和出棧的方式,對(duì)每個(gè)方法對(duì)應(yīng)的活動(dòng)棧幀進(jìn)行運(yùn)算處理,方法正常執(zhí)行結(jié)束,肯定會(huì)跳轉(zhuǎn)到另外一個(gè)棧幀上。在執(zhí)行的過(guò)程中,如果出現(xiàn)異常,會(huì)進(jìn)行異?;厮荩祷氐刂吠ㄟ^(guò)異常處理表確定。棧幀在整個(gè)JVM體系中的地位頗高,包括局部變量表、操作棧、動(dòng)態(tài)連接、方法返回地址等。

下面對(duì)棧幀的各個(gè)活動(dòng)棧幀進(jìn)行簡(jiǎn)要的分析

(1)局部變量表

局部變量表是存放方法參數(shù)和局部變量的區(qū)域。我們都知道,類屬性變量一共要經(jīng)歷兩個(gè)階段,分為準(zhǔn)備階段和初始化階段,而局部變量是沒(méi)有準(zhǔn)備階段,只有初始化階段,而且必須是顯示的。如果是非靜態(tài)方法,則在index[0]位置上存儲(chǔ)的是方法所屬對(duì)象的實(shí)例引用,隨后存儲(chǔ)的是參數(shù)和局部變量。字節(jié)碼指令中的STORE指令就是將操作棧中計(jì)算完成的局部變量寫(xiě)回局部變量表的存儲(chǔ)空間內(nèi)。

(2)操作棧

操作棧是一個(gè)初始狀態(tài)為空的桶式結(jié)構(gòu)棧。在方法執(zhí)行過(guò)程中,會(huì)有各種指令往棧中寫(xiě)入和提取信息。JVM的執(zhí)行引擎是基于棧的執(zhí)行引擎,其中的棧指的就是操作棧。字節(jié)碼指令集的定義都是基于棧類型的,棧的深度在方法元信息的stack屬性中,下面就通過(guò)一個(gè)例子來(lái)說(shuō)明下操作棧與局部變量表的交互:

publicintadd(){
intx=10;
inty=20;
intz=x+y;

returnz;
}

字節(jié)碼操作順序如下:

publicintadd();
Code:
0:bipush10//常量10壓入操作棧
2:istore_1//并保存到局部變量表的slot_1中(第1處)
3:bipush20//常量20壓入操作棧
5:istore_2//并保存到局部變量表的slot_2中
6:iload_1//把局部變量表的slot_1元素(intx)壓入操作棧
7:iload_2//把局部變量表的slot_2元素(inty)壓入操作棧
8:iadd//把上方的兩個(gè)數(shù)都取出來(lái),在CPU里加一下,并壓回操作棧的棧頂
9:istore_3//把棧頂?shù)慕Y(jié)果存儲(chǔ)到局部變量表的slot_3中
10:iload_3
11:ireturn//返回棧頂元素值

第 1 處說(shuō)明:局部變量表就像一個(gè)快遞柜,有著很多的柜子,依次編號(hào)為1,2,3,...,n,字節(jié)碼指令 istore_1 就代表打開(kāi)了 1 號(hào)柜子,再把棧頂中的值 10 存進(jìn)去。棧就好如一個(gè)桶,任何時(shí)候只能對(duì)桶口的元素進(jìn)行操作,所以數(shù)據(jù)只能在棧頂進(jìn)行存取。部分指令可以直接在柜子里面直接進(jìn)行,比如 iinc指令,直接對(duì)抽屜里的數(shù)值進(jìn)行 +1操作。我們經(jīng)常遇到的 i++ 和 ++i,通過(guò)字節(jié)碼對(duì)比起來(lái),答案一下子就一目了然了。如下表格所示:

97af836c-2424-11ed-ba43-dac502259ad0.jpg


左列中,iload_1 從局部變量表的第1號(hào)柜子取出一個(gè)數(shù),壓入棧頂,下一步直接在柜子里實(shí)現(xiàn) + 1的操作,而這個(gè)操作時(shí)對(duì)棧頂元素的值沒(méi)有任何影響,所以 istore_2 只是把棧頂元素賦值給 a,而右列,它是先在柜子里面進(jìn)行 +1的操作,然后再通過(guò) iload_1 把第1號(hào)柜子里的數(shù)壓入棧頂,所以istore_2賦給a的值是 +1 之后的值。擴(kuò)展下,i++ 并非是原子操作。即使通過(guò)volatile關(guān)鍵字來(lái)修飾,多線程情況下,還是會(huì)出現(xiàn)數(shù)據(jù)互相覆蓋的情況。

(3)動(dòng)態(tài)連接

每個(gè)棧幀中包含一個(gè)在常量池中對(duì)當(dāng)前方法的引用,目的是支持方法調(diào)用過(guò)程的動(dòng)態(tài)連接。

(4)方法返回地址

方法執(zhí)行時(shí)有兩種退出情況:第一,正常退出,即正常執(zhí)行到任何方法的返回字節(jié)碼指令,如 RETURN、IRETURN、ARETURN等;第二,異常退出。無(wú)論何種退出情況,都將返回方法當(dāng)前被調(diào)用的位置。方法退出的過(guò)程相當(dāng)于彈出當(dāng)前棧幀,而退出可能有三種方式:

返回值壓入上層調(diào)用棧幀。

異常信息拋給能夠處理的棧幀。

PC 計(jì)數(shù)器指向方法調(diào)用后的下一條指令。

Native Method Stacks(本地方法棧)

本地方法棧(Native Method Stack)在JVM內(nèi)存布局中,也是線程對(duì)象私有的,但是虛擬機(jī)?!爸鲀?nèi)”,而本地方法棧“主外”。這個(gè)“內(nèi)外”是針對(duì)JVM來(lái)說(shuō)的,本地方法棧為Native方法服務(wù)。線程開(kāi)始調(diào)用本地方法時(shí),會(huì)進(jìn)入一個(gè)不再受JVM約束的世界。本地方法可以通過(guò)JVNI(Java Native Interface)來(lái)訪問(wèn)虛擬機(jī)運(yùn)行時(shí)的數(shù)據(jù)區(qū),甚至可以調(diào)用寄存器,具有和JVM相同的能力和權(quán)限。當(dāng)大量本地方法出現(xiàn)時(shí),勢(shì)必會(huì)削弱JVM對(duì)系統(tǒng)的控制力,因?yàn)樗某鲥e(cuò)信息都比較黑盒,難以捉摸。對(duì)于內(nèi)存不足的情況,本地方法棧還是會(huì)拋出 native heap OutOfMemory。

重點(diǎn)說(shuō)下JNI類本地方法,最常用的本地方法應(yīng)該是System.currentTimeMills(),JNI使Java深度使用操作系統(tǒng)的特性功能,復(fù)用非Java代碼。但是在項(xiàng)目過(guò)程中,如果大量使用其他語(yǔ)言來(lái)實(shí)現(xiàn)JNI,就會(huì)喪失跨平臺(tái)特性,威脅到程序運(yùn)行的穩(wěn)定性。假如需要與本地代碼交互,就可以用中間標(biāo)準(zhǔn)框架來(lái)進(jìn)行解耦,這樣即使本地方法崩潰也不至于影響到JVM的穩(wěn)定。

Program Counter Register (程序計(jì)數(shù)寄存器)

在程序計(jì)數(shù)寄存器(Program Counter Register,PC)中,Register的命名源于CPU的寄存器,CPU只有把數(shù)據(jù)裝載到寄存器才能夠運(yùn)行。寄存器存儲(chǔ)指令相關(guān)的現(xiàn)場(chǎng)信息,由于CPU時(shí)間片輪限制,眾多線程在并發(fā)執(zhí)行過(guò)程中,任何一個(gè)確定的時(shí)刻,一個(gè)處理器或者多核處理器中的一個(gè)內(nèi)核,只會(huì)執(zhí)行某個(gè)線程中的一個(gè)指令。

這樣必然會(huì)導(dǎo)致經(jīng)常中斷或恢復(fù),如何才能保證分毫無(wú)差呢?每個(gè)線程在創(chuàng)建之后,都會(huì)產(chǎn)生自己的程序計(jì)數(shù)器和棧幀,程序計(jì)數(shù)器用來(lái)存放執(zhí)行指令的偏移量和行號(hào)指示器等,線程執(zhí)行或恢復(fù)都要依賴程序計(jì)數(shù)器。程序計(jì)數(shù)器在各個(gè)線程之間互不影響,此區(qū)域也不會(huì)發(fā)生內(nèi)存溢出異常。

小結(jié)

最后,從線程的角度來(lái)看,堆和元空間是所有線程共享的,而虛擬機(jī)棧、本地方法棧、程序計(jì)數(shù)器是線程內(nèi)部私有的,我們以線程的角度再來(lái)看看Java的內(nèi)存結(jié)構(gòu)圖:

97bb8fae-2424-11ed-ba43-dac502259ad0.png





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2291

    瀏覽量

    96426
  • JVM
    JVM
    +關(guān)注

    關(guān)注

    0

    文章

    160

    瀏覽量

    12628
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    966

    瀏覽量

    29373

原文標(biāo)題:圖文并茂:JVM 內(nèi)存布局詳解

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    網(wǎng)格布局介紹

    概述 網(wǎng)格布局是由“行”和“列”分割的單元格所組成,通過(guò)指定“項(xiàng)目”所在的單元格做出各種各樣的布局。網(wǎng)格布局具有較強(qiáng)的頁(yè)面均分能力,子組件占比控制能力,是一種重要自適應(yīng)布局,其使用場(chǎng)
    發(fā)表于 06-25 06:27

    HarmonyOS NEXT應(yīng)用元服務(wù)布局合理使用布局組件

    選擇合適的布局組件 在布局時(shí),子組件會(huì)根據(jù)父組件的布局算法得到相應(yīng)的排列規(guī)則,然后按照規(guī)則進(jìn)行子組件位置的擺放。不同的布局容器使用的布局算法
    發(fā)表于 06-20 15:48

    基于 IAR Embedded Workbench 的自研 MCU 芯片軟件函數(shù)與變量內(nèi)存布局優(yōu)化精控方法

    在嵌入式軟件開(kāi)發(fā)領(lǐng)域,MCU芯片軟件的架構(gòu)設(shè)計(jì)與內(nèi)存布局的精細(xì)規(guī)劃對(duì)系統(tǒng)性能和穩(wěn)定性起著關(guān)鍵作用。本文檔聚焦于IAR Embedded Workbench環(huán)境下,為自研MCU芯片軟件提供了一套詳盡
    的頭像 發(fā)表于 04-30 16:38 ?292次閱讀
    基于 IAR Embedded Workbench 的自研 MCU 芯片軟件函數(shù)與變量<b class='flag-5'>內(nèi)存</b><b class='flag-5'>布局</b>優(yōu)化精控方法

    模擬地和數(shù)字地混合PCB布局探討

    這是我的產(chǎn)品目前的電路拓?fù)?,有一些疑?wèn)想跟大佬們共同探討一下。 圖1,模擬地和數(shù)字地分開(kāi),在電源入口處相連,紅色是模擬地的連接示意,綠色為數(shù)字電流的返回路徑。此方案感覺(jué)不妥當(dāng)?shù)氖菙?shù)字電流的返回
    發(fā)表于 04-29 22:35

    C語(yǔ)言中結(jié)構(gòu)體與聯(lián)合體的深度解析:內(nèi)存布局與應(yīng)用場(chǎng)景

    例: struct Student { char name[20];// 20字節(jié) int age;// 4字節(jié) float score; // 4字節(jié) }; 內(nèi)存布局:總大小為32字節(jié)(考慮
    發(fā)表于 04-08 09:18

    虛擬內(nèi)存不足如何解決 虛擬內(nèi)存和物理內(nèi)存的區(qū)別

    虛擬內(nèi)存不足的解決方案 虛擬內(nèi)存不足是計(jì)算機(jī)用戶經(jīng)常遇到的問(wèn)題,尤其是在運(yùn)行大型軟件或多任務(wù)處理時(shí)。以下是一些解決虛擬內(nèi)存不足問(wèn)題的方法: 增加物理內(nèi)存(RAM) : 這是最直接的解決
    的頭像 發(fā)表于 12-04 09:14 ?1496次閱讀

    Linux內(nèi)存泄露案例分析和內(nèi)存管理分享

    作者:京東科技 李遵舉 一、問(wèn)題 近期我們運(yùn)維同事接到線上LB(負(fù)載均衡)服務(wù)內(nèi)存報(bào)警,運(yùn)維同事反饋說(shuō)LB集群有部分機(jī)器的內(nèi)存使用率超過(guò)80%,有的甚至超過(guò)90%,而且內(nèi)存使用率還再不停的增長(zhǎng)。接到
    的頭像 發(fā)表于 10-24 16:14 ?1077次閱讀
    Linux<b class='flag-5'>內(nèi)存</b>泄露案例分析和<b class='flag-5'>內(nèi)存</b>管理分享

    JVM xmx, xms等內(nèi)存相關(guān)參數(shù)合理性設(shè)置

    的,提高內(nèi)存占用(Memory Footprint)就有可能同時(shí)優(yōu)化這兩個(gè)標(biāo)的,這篇文章就來(lái)聊聊內(nèi)存相關(guān)內(nèi)容。 內(nèi)存占用一般指應(yīng)用運(yùn)行需要的所有內(nèi)存,包括堆內(nèi)
    的頭像 發(fā)表于 10-10 14:42 ?1343次閱讀

    邏輯內(nèi)存和物理內(nèi)存的區(qū)別

    邏輯內(nèi)存和物理內(nèi)存是計(jì)算機(jī)系統(tǒng)中兩個(gè)重要的概念,它們?cè)谟?jì)算機(jī)的運(yùn)行和數(shù)據(jù)處理中起著至關(guān)重要的作用。 1. 物理內(nèi)存(Physical Memory) 物理內(nèi)存,也稱為RAM(Rando
    的頭像 發(fā)表于 09-27 15:38 ?1795次閱讀

    線上活動(dòng) | 新思科技 2024 內(nèi)存用戶大會(huì),專注于內(nèi)存設(shè)計(jì)與開(kāi)發(fā)!

    方案的獨(dú)到見(jiàn)解。 2024年10月2日?| 上午8:00 ?(GMT+8, 中國(guó)時(shí)間) 活動(dòng)亮點(diǎn) 專注于內(nèi)存設(shè)計(jì)與開(kāi)發(fā)的線上活動(dòng),匯聚內(nèi)存行業(yè)的精英和新思科技的專家 提供一個(gè)專業(yè)論壇,共同分享和探討解決業(yè)界最具挑戰(zhàn)性和最受關(guān)注的
    發(fā)表于 09-26 14:36 ?203次閱讀
    線上活動(dòng) | 新思科技 2024 <b class='flag-5'>內(nèi)存</b>用戶大會(huì),專注于<b class='flag-5'>內(nèi)存</b>設(shè)計(jì)與開(kāi)發(fā)!

    內(nèi)存時(shí)鐘和內(nèi)存條有什么不同

    探討內(nèi)存時(shí)鐘(Memory Clock)和內(nèi)存條(Memory Module)的不同時(shí),我們首先需要明確這兩個(gè)概念的基本定義和它們?cè)谟?jì)算機(jī)系統(tǒng)中的角色。以下是對(duì)這兩個(gè)概念的詳細(xì)解析,以及它們之間差異的比較。
    的頭像 發(fā)表于 09-04 11:45 ?3568次閱讀

    內(nèi)存時(shí)鐘是什么意思

    內(nèi)存時(shí)鐘是內(nèi)存模塊中一個(gè)至關(guān)重要的參數(shù),它直接關(guān)聯(lián)到內(nèi)存模塊能夠工作的最高頻率。以下是對(duì)內(nèi)存時(shí)鐘的詳細(xì)解析,包括其定義、作用、與內(nèi)存頻率的關(guān)
    的頭像 發(fā)表于 09-04 11:45 ?2409次閱讀

    從原理聊JVM(一):染色標(biāo)記和垃圾回收算法

    更好地優(yōu)化自己的代碼,并解決一些潛在的性能問(wèn)題。 本文及后續(xù)文章將從原理聊起,對(duì)JVM內(nèi)存分配、GC、編譯等知識(shí)進(jìn)行分析和總結(jié)。 1 JVM運(yùn)行時(shí)內(nèi)存劃分 1.1 運(yùn)行時(shí)數(shù)據(jù)區(qū)域 ?
    的頭像 發(fā)表于 08-20 15:25 ?522次閱讀
    從原理聊<b class='flag-5'>JVM</b>(一):染色標(biāo)記和垃圾回收算法

    操作系統(tǒng)的內(nèi)存布局介紹

    32位操作系統(tǒng)的內(nèi)存布局很經(jīng)典,很多書(shū)籍都是以32位系統(tǒng)為例子去講解的。32位的系統(tǒng)可訪問(wèn)的地址空間為4GB,用戶空間為1GB ~ 3GB,內(nèi)核空間為3GB ~ 4GB。
    的頭像 發(fā)表于 08-07 15:47 ?902次閱讀
    操作系統(tǒng)的<b class='flag-5'>內(nèi)存</b><b class='flag-5'>布局</b>介紹

    聊聊JVM如何優(yōu)化

    首先應(yīng)該明確的是JVM調(diào)優(yōu)不是常規(guī)手段,JVM的存在本身就是為了減輕開(kāi)發(fā)對(duì)于內(nèi)存管理的負(fù)擔(dān),當(dāng)出現(xiàn)性能問(wèn)題的時(shí)候第一時(shí)間考慮的是代碼邏輯與設(shè)計(jì)方案,以及是否達(dá)到依賴中間件的瓶頸,最后才是針對(duì)J
    的頭像 發(fā)表于 08-05 17:49 ?763次閱讀
    聊聊<b class='flag-5'>JVM</b>如何優(yōu)化