成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Java中的內(nèi)存分布有哪些-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)Java中的內(nèi)存分布有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

目前創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、新鄉(xiāng)網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

Java內(nèi)存分布:Java虛擬機(jī)在執(zhí)行Java程序的過(guò)程中會(huì)把它所管理的內(nèi)存劃分為若干個(gè)不同的數(shù)據(jù)區(qū)域:方法區(qū)、虛擬機(jī)棧、本地方法棧、堆、程序計(jì)數(shù)器。

1.程序計(jì)數(shù)器

程序計(jì)數(shù)器是一塊較小的內(nèi)存空間,它可以看做是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號(hào)指示器。在虛擬機(jī)的概念模型中,字節(jié)碼解釋器工作時(shí)就是通過(guò)改變這個(gè)計(jì)數(shù)器的值來(lái)選取嚇一條需要執(zhí)行的字節(jié)碼指令。

分支、循環(huán)、跳轉(zhuǎn)、異常處理、線程恢復(fù)等基礎(chǔ)功能都需要依賴這個(gè)計(jì)數(shù)器來(lái)完成。

為了線程切換后能恢復(fù)到正確的執(zhí)行位置,每條線程都需要有一個(gè)獨(dú)立的程序計(jì)數(shù)器,各條線程之間計(jì)數(shù)器互不影響,獨(dú)立存儲(chǔ),所以該類內(nèi)存區(qū)域?yàn)?“線程私有“ 的內(nèi)存。

如果線程正在執(zhí)行的是一個(gè)Java方法,這個(gè)計(jì)數(shù)器記錄的是正在執(zhí)行的虛擬機(jī)字節(jié)碼指令的地址;如果正在執(zhí)行的是Native方法,這個(gè)計(jì)數(shù)器值則為空,此內(nèi)存區(qū)域是唯一一個(gè)子啊Java虛擬機(jī)規(guī)范中沒(méi)有規(guī)定任何OutOfMemoryError情況的區(qū)域。

2.Java虛擬機(jī)棧

與程序計(jì)數(shù)器一樣,Java虛擬機(jī)棧也是線程私有的,它的生命周期和線程相同。虛擬機(jī)棧描述的是Java方法執(zhí)行的內(nèi)存模型;每個(gè)方法在執(zhí)行的同時(shí)都會(huì)創(chuàng)建一個(gè)棧幀用于存儲(chǔ)局部變量表、操作數(shù)棧、動(dòng)態(tài)鏈接、方法出口等信息。

每一個(gè)方法從調(diào)用到執(zhí)行完成,都對(duì)應(yīng)著一個(gè)棧幀在虛擬機(jī)棧中入棧到出棧的過(guò)程。

局部變量表存放了編譯期可知的各種基本數(shù)據(jù)類型、對(duì)象引用(不等同于對(duì)象,是指向?qū)ο蟮囊?和returnAddress類型。如果線程請(qǐng)求的棧深度大于虛擬機(jī)所允許的深度,將拋出StackOverflowError異常,如果無(wú)法申請(qǐng)到足夠的內(nèi)存會(huì)拋出OutOfMemory異常。

3.本地方法棧

本地方法棧和虛擬機(jī)棧之間的區(qū)別是虛擬機(jī)棧為虛擬機(jī)執(zhí)行的Java(字節(jié)碼)服務(wù),而本地方法棧則為虛擬機(jī)使用到的Native方法服務(wù)。

4.Java堆

Java堆是被所有線程共享的一塊內(nèi)存區(qū)域,在虛擬機(jī)啟動(dòng)時(shí)創(chuàng)建。此內(nèi)存區(qū)域的唯一目的就是存放對(duì)象實(shí)例,Java堆是垃圾回收器管理的主要區(qū)域

5.方法區(qū)

方法區(qū)和Java堆一樣,是各個(gè)線程共享的內(nèi)存區(qū)域,用于存儲(chǔ)已被虛擬機(jī)加載的類信息、常量、靜態(tài)變量、即時(shí)編譯器編譯后的代碼等數(shù)據(jù)。

6.運(yùn)行時(shí)常量池

運(yùn)行時(shí)常量池是方法區(qū)的一部分。Class文件中除了有類的版本、字段、方法、接口等描述信息外,還有一項(xiàng)信息是常量池,用于存放編譯期生成的各種字面量和符號(hào)引用,這部分內(nèi)容將會(huì)在類加載后進(jìn)入方法區(qū)的運(yùn)行時(shí)常量池中存放。

網(wǎng)上很多解釋常量池會(huì)以字符串為例:

比如

String s1 = "Hello";
String s2 = "Hello";
String s3 = "Hel" + "lo";
String s4 = "Hel" + new String("lo");
String s5 = new String("Hello");
String s6 = s5.intern();
String s7 = "H";
String s8 = "ello";
String s9 = s7 + s8;
 
System.out.println(s1 == s2); // true
System.out.println(s1 == s3); // true
System.out.println(s1 == s4); // false
System.out.println(s1 == s9); // false
System.out.println(s4 == s5); // false
System.out.println(s1 == s6); // true

網(wǎng)頁(yè)標(biāo)題:Java中的內(nèi)存分布有哪些-創(chuàng)新互聯(lián)
文章來(lái)源:http://jinyejixie.com/article22/ddsecc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)、ChatGPT、定制網(wǎng)站、網(wǎng)站營(yíng)銷、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司
封丘县| 太仆寺旗| 仙游县| 蓬溪县| 余江县| 镇巴县| 班玛县| 桦川县| 突泉县| 阜新市| 凤阳县| 隆尧县| 阿瓦提县| 蒲江县| 灌云县| 辽中县| 平湖市| 樟树市| 突泉县| 沾益县| 鄢陵县| 丹寨县| 建瓯市| 杭锦后旗| 阳朔县| 措美县| 兰西县| 五家渠市| 宁波市| 成武县| 湄潭县| 洮南市| 益阳市| 黄陵县| 南涧| 永济市| 江阴市| 龙山县| 竹山县| 罗山县| 冷水江市|