JVM內(nèi)存結(jié)構(gòu):堆、棧和方法區(qū)

堆:先進(jìn)先出,存放在二級(jí)緩存中,速度慢,只有一個(gè),被所有線程共享,用來(lái)存放對(duì)象和數(shù)組,可以動(dòng)態(tài)分配內(nèi)存大小,生命周期不確定。(靈活、速度慢)

棧:后進(jìn)先出,存放在一級(jí)緩存中,速度快,每個(gè)線程都包含一個(gè)棧區(qū),數(shù)據(jù)私有,其他棧不能訪問(wèn),用來(lái)執(zhí)行程序,不能動(dòng)態(tài)分配內(nèi)存,生命周期確定。(速度快、不靈活)

方法區(qū)/靜態(tài)區(qū):被所有線程共享,存放所有的方法和靜態(tài)變量,全局變量與靜態(tài)變量放一起,初始化與未初始化的分開(kāi)。

棧的組成:基本類型變量區(qū)、執(zhí)行環(huán)境上下文、操作指令區(qū)(存放操作指令)

為什么要有堆和棧?這樣設(shè)計(jì)有什么好處?

①Java自動(dòng)管理堆和棧,程序員不能直接地設(shè)置棧和堆。

②Java的堆是一個(gè)運(yùn)行時(shí)數(shù)據(jù)區(qū)。堆是由JVM的垃圾回收器自動(dòng)管理的。堆的優(yōu)勢(shì)是可以在程序運(yùn)行時(shí),動(dòng)態(tài)地分配內(nèi)存

大小,但是正是由于這個(gè)原因,它的存取速度較慢。

③棧的優(yōu)勢(shì)是,存取速度比堆要快,僅次于寄存器,棧數(shù)據(jù)可以共享。但缺點(diǎn)是,存在棧中的數(shù)據(jù)大小和生存期是必須確定的,缺乏靈活性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂(lè)視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,876評(píng)論 11 349
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,685評(píng)論 1 32
  • 1. 基礎(chǔ)知識(shí) 1.1、 基本概念、 功能 馮諾伊曼體系結(jié)構(gòu)1、計(jì)算機(jī)處理的數(shù)據(jù)和指令一律用二進(jìn)制數(shù)表示2、順序執(zhí)...
    yunpiao閱讀 5,814評(píng)論 1 22
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 30,284評(píng)論 8 265
  • 高三上周末進(jìn)行第二次月考! 看著這擺在窗戶上的一摞摞書(shū),甚是震撼,不禁想起我的高中生活,特別是高四復(fù)讀生活,真不知...
    魚(yú)師說(shuō)閱讀 370評(píng)論 0 1

友情鏈接更多精彩內(nèi)容