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