gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

JAVA虛擬機(jī)(JVM)詳細(xì)講解(二)——內(nèi)存的劃分

我們知道,在C++語言里,如果想使用一個對象,需要對其進(jìn)行new操作;如果不用這個對象了,需要對其進(jìn)行delete操作。一旦開發(fā)人員忘記寫delete語句了,就會造成內(nèi)存泄露。【內(nèi)存被對象占用著不還,就叫內(nèi)存泄露。】

而java就聰明了,它從“手動”進(jìn)化成了“自動”,把內(nèi)存的控制權(quán)力交給了虛擬機(jī)。下面我們就來窺探一下jvm是怎么進(jìn)行自動內(nèi)存管理的。

JAVA虛擬機(jī)(JVM)詳細(xì)講解(二)——內(nèi)存的劃分

自動內(nèi)存管理分為兩部分

給對象分配內(nèi)存和回收分配給對象的內(nèi)存。在本篇我們說說前者,也就是內(nèi)存劃分和內(nèi)存分配。下篇再說GC(垃圾回收)。

1、內(nèi)存劃分

我們來看看虛擬機(jī)內(nèi)存里都有什么東西。JVM的內(nèi)存區(qū)域大致分為Class文件、類裝載子系統(tǒng)、運(yùn)行時數(shù)據(jù)區(qū)、執(zhí)行引擎。今天我們只說說運(yùn)行時數(shù)據(jù)區(qū)。【這張圖是基于JDK7的。JDK7以前,常量池是存放在方法區(qū)的。從JDK7以后,常量池放到了堆中。】

JAVA虛擬機(jī)(JVM)詳細(xì)講解(二)——內(nèi)存的劃分

線程公有

在運(yùn)行時數(shù)據(jù)區(qū)中,方法區(qū)和堆是屬于線程公有的,也就是這兩塊區(qū)域是“循環(huán)利用”的,所以要對其進(jìn)行垃圾回收。其是在虛擬機(jī)啟動時創(chuàng)建。

線程私有

虛擬機(jī)棧、本地方法棧、程序計(jì)數(shù)器是屬于線程私有的,其與線程“同生死”,屬于“一次性”的,所以不用對其進(jìn)行垃圾回收。

(一)方法區(qū)

存儲已被虛擬機(jī)加載的類信息,常量,靜態(tài)變量,即時編譯器編譯后的代碼等數(shù)據(jù)。
其中有一個運(yùn)行時常量池。其存儲的是Class文件中描述的符號引用,直接引用。在編譯期和運(yùn)行期都可以將新的常量放入此池子中。

(2) 堆

概念:如果說棧解決的是程序運(yùn)行問題,即程序如何處理數(shù)據(jù);則堆解決的是數(shù)據(jù)存儲問題,即數(shù)據(jù)怎么放,放在哪。

特點(diǎn):

a、堆是虛擬機(jī)內(nèi)存中最大的一塊,大概占內(nèi)存的四分之三。比如一個32位windows平臺中每個進(jìn)程有2GB的內(nèi)存,則一般將1.5GB的內(nèi)存劃分給堆。可見堆的所占空間之大。
b、可處于物理上不連續(xù)的內(nèi)存空間中,只要邏輯上是連續(xù)的即可。

作用:

存放對象實(shí)例,幾乎所有的對象實(shí)例都在這里分配內(nèi)存。

分類:

從內(nèi)存回收的角度看,分為新生代和老年代。
從內(nèi)存分配的角度看,可劃分出多個線程私有的分配緩沖區(qū)。

(3)虛擬機(jī)棧

虛擬機(jī)棧里面存儲的是棧幀,棧幀里面存儲的是局部變量表,操作數(shù)棧,動態(tài)鏈接,方法出口等信息。

JAVA虛擬機(jī)(JVM)詳細(xì)講解(二)——內(nèi)存的劃分

棧中的棧幀

每個方法在執(zhí)行的同時都會創(chuàng)建一個棧幀,一個方法從調(diào)用到執(zhí)行完成的過程,就對應(yīng)著一個棧幀在虛擬機(jī)棧中入棧到出棧的過程。

棧幀中的局部變量表

存放的是編譯期可知的各種基本數(shù)據(jù)類型,對象引用,returnAddress類型。所以其所需的內(nèi)存空間在編譯期間就能完成分配,在運(yùn)行期間不會改變其大小。

在分配基本數(shù)據(jù)類型所占的空間時,除了64位的long和double類型的數(shù)據(jù)會占用2個局部變量空間,其余的數(shù)據(jù)類型只占用1個。

(4)本地方法棧

本地方法棧和虛擬機(jī)棧的作用是相同的,只不過虛擬機(jī)棧執(zhí)行的是java方法,本地方法棧執(zhí)行的是Native方法。
java方法就是開發(fā)人員寫的java代碼,Native方法就是一個java調(diào)用非java代碼的接口。

(5)程序計(jì)數(shù)器

程序計(jì)數(shù)器中存放的是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號。jvm工作時,就是通過改變這個計(jì)數(shù)器的值來選取下一條需要執(zhí)行的字節(jié)碼指令。

2、內(nèi)存分配

這部分我們說說對象在java堆中是如何分配,布局和訪問的,以及內(nèi)存分配的原則。

對象的創(chuàng)建

我們用new來創(chuàng)建對象,來看看系統(tǒng)運(yùn)行到new時,虛擬機(jī)在干什么。此時的類就像一塊肉,他要經(jīng)過層層安檢,才能到達(dá)人類的飯桌。第一步:查看在常量池中是否有對應(yīng)的符號引用。【在方法區(qū)中進(jìn)行】

第二步:查看此類是否被加載,解析和初始化過。【在方法區(qū)中進(jìn)行】

第三步:領(lǐng)取新生對象的內(nèi)存。有兩種方式:指針碰撞和空閑列表。【在堆中進(jìn)行】

第四步:將分配到的內(nèi)存空間初始化為零值。

第五步:對對象進(jìn)行必要的設(shè)置,比如其是哪個類的實(shí)例,對象的哈希碼之類的。這些信息存放在對象的對象頭之中

第六步:如果java代碼中對對象進(jìn)行了賦初值,則會進(jìn)行第六步:執(zhí)行< init >方法。此方法的作用就是對對象進(jìn)行初始化。

對象的內(nèi)存布局

對象在內(nèi)存中的存儲布局分為3部分:對象頭+實(shí)例數(shù)據(jù)+對齊填充

對象頭

對象頭里面有兩部分信息:

(1)運(yùn)行時數(shù)據(jù),包括哈希碼,GC分代年齡,鎖狀態(tài)標(biāo)志等。

(2)類型指針,虛擬機(jī)通過這個指針來確定這個對象是哪個類的實(shí)例。

實(shí)例數(shù)據(jù)

實(shí)例數(shù)據(jù)中存放的是代碼中定義的各種類型的字段內(nèi)容。

對齊填充

對齊填充起的是占位符的作用,不是必然存在的。其只要保證對象的大小是8字節(jié)的整數(shù)倍即可。

對象的訪問定位

建立完對象后,我們就可以使用對象了。在使用時,怎么才能找到想找的對象?有兩種方式:句柄和直接指針

句柄:

句柄訪問就是在java堆中劃分出一塊內(nèi)存來作為句柄池,句柄中包含了對象實(shí)例數(shù)據(jù)和類型數(shù)據(jù)各自具體的地址信息。

JAVA虛擬機(jī)(JVM)詳細(xì)講解(二)——內(nèi)存的劃分

直接指針:

直接指針之所以“直接”,是因?yàn)樗コ司浔@個中介。所以在速度上比句柄快。在HotSpot虛擬機(jī)中,使用的是這種方式。

JAVA虛擬機(jī)(JVM)詳細(xì)講解(二)——內(nèi)存的劃分

說完了對象在java堆中是如何分配,布局和訪問的,接下來我們說說內(nèi)存分配的原則

內(nèi)存分配的原則:

JAVA虛擬機(jī)(JVM)詳細(xì)講解(二)——內(nèi)存的劃分

堆大致分為新生代,老年代,永久代。對象的內(nèi)存分配主要分配在新生代的Eden區(qū),少數(shù)情況下會直接分配到老年代中。分配的規(guī)則不是100%固定的,取決于垃圾收集器組合和參數(shù)設(shè)置等。下面有幾條分配原則可供參考。

(1)對象優(yōu)先在Eden分配。

(2)大對象直接進(jìn)入老年代。

(3)長期存活的對象將進(jìn)入老年代。

(4)動態(tài)對象年齡判定。

(5)空間分配擔(dān)保。

以上便是JAVA虛擬機(jī)中關(guān)于內(nèi)存的劃分部分,

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
777av视频| 成人黄色大片网站| 一区二区三区四区免费观看| 二级片在线观看| 4444在线观看| www.99r| 欧美在线观看成人| 成人性生交视频免费观看| 欧美精品久久久久久久免费| www.se五月| 激情 小说 亚洲 图片: 伦| 日本一区午夜艳熟免费| 国产成人美女视频| 我要看一级黄色大片| 欧美精品一区免费| 国产3p露脸普通话对白| 亚洲视频在线不卡| 红桃视频 国产| 国内av一区二区| 中文av一区二区三区| 久久久久免费精品| 日韩一级在线免费观看| 国产a级片免费观看| 国产一级片自拍| 午夜啪啪小视频| 国产在线观看欧美| 亚洲精品国产suv一区88| 日本美女爱爱视频| 高清欧美精品xxxxx| mm1313亚洲国产精品无码试看| 美女网站免费观看视频| 穿情趣内衣被c到高潮视频| 鲁一鲁一鲁一鲁一色| 中文字幕免费高清在线| 日本男女交配视频| 日日噜噜夜夜狠狠| 国产美女永久无遮挡| 天天干天天草天天| 欧美 日本 亚洲| 欧美日韩一区二区三区电影| 免费不卡av在线| 欧美日韩视频免费在线观看| 欧美三级一级片| 国产成人永久免费视频| 久久久久久久久久久久久久久国产| 免费的一级黄色片| 中文字幕乱码免费| 日韩欧美理论片| 黄色手机在线视频| 欧美精品成人网| 国产91在线视频观看| 国产美女主播在线| 欧美日韩精品在线一区二区 | 日韩a在线播放| 国产97在线 | 亚洲| 每日在线更新av| 99热成人精品热久久66| 成年人在线看片| www.桃色.com| 成人黄色大片网站| 国产精品第12页| 欧美视频国产视频| 裸体裸乳免费看| 久久亚洲精品无码va白人极品| 少妇久久久久久被弄到高潮| 大胆欧美熟妇xx| 欧美日韩亚洲一二三| 51自拍视频在线观看| 日本熟妇人妻xxxx| 亚洲欧洲日本精品| 国产在线视频在线| 一道本在线免费视频| 国产精品又粗又长| 黄频视频在线观看| 成年人观看网站| 尤物网站在线看| 天天干天天av| 最近中文字幕一区二区| 日本阿v视频在线观看| 99热一区二区| 波多野结衣家庭教师视频| 日韩视频一二三| 国产精品夜夜夜爽张柏芝| 国产女大学生av| 精品久久一二三| 欧美日韩中文字幕在线播放| 国产欧美激情视频| 欧美日韩一区二区三区69堂| 99爱视频在线| 成人在线免费观看av| 国产h视频在线播放| 国内精品在线观看视频| 51xx午夜影福利| 国产精品久久久久7777| 一二三四视频社区在线| 黄色一级视频在线播放| 国产 日韩 亚洲 欧美| 奇米777四色影视在线看| 黄色一级片黄色| 日韩毛片在线免费看| 中文字幕亚洲乱码| 国产精品一区在线免费观看| 国产精品igao激情视频| 免费毛片小视频| 污污的视频免费| 久久久久久av无码免费网站下载| 欧美激情 国产精品| 色婷婷狠狠18| 欧美黑人经典片免费观看| av五月天在线| 亚洲熟妇av一区二区三区漫画| 国产v亚洲v天堂无码久久久 | 欧美污视频网站| 大桥未久一区二区三区| 粉嫩虎白女毛片人体| 国产精品videossex国产高清| 在线黄色免费观看| 国产 福利 在线| 妞干网在线播放| 日韩一级免费看| 老司机午夜免费福利视频| 一区二区三区欧美精品| 色哟哟精品视频| 久久人妻精品白浆国产| 免费无码不卡视频在线观看| 男人的天堂狠狠干| 国产精品国产亚洲精品看不卡| 草草草视频在线观看| 99亚洲国产精品| 国产内射老熟女aaaa| 国产一级不卡视频| 青草青青在线视频| 国产中文字幕免费观看| 欧美成人一区二区在线观看| 欧美 国产 综合| 久久久精品麻豆| 麻豆视频传媒入口| 日韩精品视频一区二区在线观看| 免费无码毛片一区二三区| 欧美日韩亚洲一| 色综合久久久久无码专区| 黄色片视频在线播放| www午夜视频| 中文字幕超清在线免费观看| 亚洲制服中文字幕| 公共露出暴露狂另类av| 欧美少妇一级片| 久久精品在线免费视频| 精品视频在线观看一区二区| 亚洲 欧洲 日韩| 欧美a级免费视频| 国产成人综合一区| 一区二区传媒有限公司| 99久久99久久精品| 四虎影院一区二区| 可以看污的网站| 一道本视频在线观看| 成年人视频在线免费| 97精品国产97久久久久久粉红| 国产嫩草在线观看| 97xxxxx| 无人在线观看的免费高清视频| 69精品丰满人妻无码视频a片| 九九九九九伊人| 中国老女人av| 青青草精品视频在线| 日韩免费视频播放| wwwxxx黄色片| 校园春色 亚洲色图| 免费观看黄色的网站| 日本一道在线观看| 欧美激情视频免费看| 欧美aⅴ在线观看| 午夜福利123| 男女超爽视频免费播放| 午夜免费一区二区| 日韩在线观看a| 邪恶网站在线观看| wwwxxx黄色片| 国产九九九九九| www污在线观看| 无码人妻精品一区二区蜜桃网站| 亚洲三级视频网站| 女人喷潮完整视频| 霍思燕三级露全乳照| 日韩视频在线观看一区二区三区| 人妻内射一区二区在线视频| 色呦呦网站入口| 黄色网络在线观看| 三日本三级少妇三级99| 另类小说第一页| 美女网站色免费| 黄色aaa级片| www.成年人| www.亚洲一区二区| 99久re热视频精品98| 韩日视频在线观看| 日本黄色三级大片| 亚洲黄色a v| 日本久久高清视频|