摘要:每個(gè)棧中的數(shù)據(jù)原始類型和對(duì)象引用都是私有的,其他棧不能訪問(wèn)。棧分為三個(gè)部分基本類型變量區(qū)執(zhí)行環(huán)境上下文操作指令。它用于存儲(chǔ)已經(jīng)被虛擬機(jī)加載的類信息常量靜態(tài)變量即時(shí)編譯器編譯后的代碼等數(shù)據(jù)。
Java的JVM的內(nèi)存可分為三個(gè)區(qū):堆(heap)、棧(stack)、方法區(qū)(method).
棧每個(gè)線程包含一個(gè)棧區(qū),棧中只保存方法中(不包括對(duì)象中的成員變量)的基礎(chǔ)數(shù)據(jù)類型和自定義對(duì)象的引用,對(duì)象都存放在堆區(qū)中。
每個(gè)棧中的數(shù)據(jù)(原始類型和對(duì)象引用)都是私有的,其他棧不能訪問(wèn)。
棧分為三個(gè)部分:基本類型變量區(qū)、執(zhí)行環(huán)境上下文、操作指令。
存儲(chǔ)的全部是對(duì)象實(shí)例,每個(gè)對(duì)象都包含一個(gè)與之對(duì)應(yīng)的class信息(class信息存放在方法區(qū))
jvm只有一個(gè)堆區(qū)被所有線程共享,堆中不存放基本類型和對(duì)象引用,只存放對(duì)象本身,幾乎所有的對(duì)象實(shí)例和數(shù)組都在堆中分配。
又叫靜態(tài)塊,跟堆一樣,被所有的線程共享。它用于存儲(chǔ)已經(jīng)被虛擬機(jī)加載的類信息、常量、靜態(tài)變量、即時(shí)編譯器編譯后的代碼等數(shù)據(jù)。
方法區(qū)里存的都是類型信息,也就是類的信息,而類的信息又包括以下內(nèi)容:
類的全限定名(類的全路徑名)
類的直接超類的全限定名(如果這個(gè)類是Object,則它沒(méi)有超類)
這個(gè)類是類型(類)還是接口
類的訪問(wèn)修飾符,如public、abstract、final等
所有的直接接口全限定名的有序列表(假如它實(shí)現(xiàn)了多個(gè)接口)
常量池
字段、方法信息、類變量信息(靜態(tài)變量)裝載該類的裝載器的引用(classLoader)、類型引用(class)
Java中的成員變量存儲(chǔ)在堆中(非static,非final)
參考鏈接
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/68484.html
摘要:下面的截圖內(nèi)容來(lái)自從規(guī)范我們可以看到,規(guī)范要求的運(yùn)行時(shí)數(shù)據(jù)區(qū)域有程序計(jì)數(shù)器虛擬機(jī)棧堆方法區(qū)本地方法棧運(yùn)行時(shí)常量池這及部分。查了一下,還是沒(méi)有查到官方對(duì)于運(yùn)行時(shí)數(shù)據(jù)區(qū)域的說(shuō)明,但是許多博客都指出將字符串常量池移動(dòng)到了堆中。 不少java程序員一提JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)域,就會(huì)說(shuō)堆和棧,當(dāng)然也有java程序員給出方法區(qū)、虛擬機(jī)棧、本地方法棧、堆、程序計(jì)數(shù)器這個(gè)答案,但是還有人給出永久代、虛擬機(jī)...
摘要:堆內(nèi)存主要作用是存放運(yùn)行時(shí)創(chuàng)建的對(duì)象。堆內(nèi)存用來(lái)存放由創(chuàng)建的對(duì)象和數(shù)組,在堆中分配的內(nèi)存,由虛擬機(jī)的自動(dòng)垃圾回收器來(lái)管理。這也是比較占內(nèi)存的原因,實(shí)際上,棧中的變量指向堆內(nèi)存中的變量,這就是中的指針 堆:(對(duì)象) 引用類型的變量,其內(nèi)存分配在堆上或者常量池(字符串常量、基本數(shù)據(jù)類型常量),需要通過(guò)new等方式來(lái)創(chuàng)建。 堆內(nèi)存主要作用是存放運(yùn)行時(shí)創(chuàng)建(new)的對(duì)象。(主要用于存放對(duì)象,...
摘要:方法區(qū)在實(shí)際內(nèi)存空間站可以是不連續(xù)的。這一規(guī)定,可以說(shuō)是給了虛擬機(jī)廠商很大的自由。但是值得注意的是,堆其實(shí)還未每一個(gè)線程單獨(dú)分配了一塊空間,這部分空間在分配時(shí)是線程獨(dú)享的,在使用時(shí)是線程共享的。 在我的博客中,之前有很多文章介紹過(guò)JVM內(nèi)存結(jié)構(gòu),相信很多看多我文章的朋友對(duì)這部分知識(shí)都有一定的了解了。 那么,請(qǐng)大家嘗試著回答一下以下問(wèn)題: 1、JVM管理的內(nèi)存結(jié)構(gòu)是怎樣的? 2、不同的...
摘要:百度百科上對(duì)堆和棧進(jìn)行了對(duì)比分析堆棧空間分配棧操作系統(tǒng)由操作系統(tǒng)自動(dòng)分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。堆棧緩存方式棧使用的是一級(jí)緩存,他們通常都是被調(diào)用時(shí)處于存儲(chǔ)空間中,調(diào)用完畢立即釋放。顯然,堆的效率比棧要低得多。 相信很多程序員對(duì)于堆和棧的概念,總是感覺(jué)很朦朧,感覺(jué)在哪里聽(tīng)過(guò)見(jiàn)過(guò),并沒(méi)有深交。 在計(jì)算機(jī)領(lǐng)域,堆棧是一個(gè)不容忽視的概念,我們編寫(xiě)的C語(yǔ)言程序基本上都要用到。但...
閱讀 1688·2021-11-15 11:38
閱讀 4548·2021-09-22 15:33
閱讀 2348·2021-08-30 09:46
閱讀 2195·2019-08-30 15:43
閱讀 841·2019-08-30 14:16
閱讀 2087·2019-08-30 13:09
閱讀 1267·2019-08-30 11:25
閱讀 715·2019-08-29 16:42