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