溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)如何劃分

發(fā)布時(shí)間:2020-07-28 12:36:44 來(lái)源:億速云 閱讀:112 作者:小豬 欄目:編程語(yǔ)言

這篇文章主要為大家展示了JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)如何劃分,內(nèi)容簡(jiǎn)而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會(huì)有收獲的,下面讓小編帶大家一起來(lái)看看吧。

Java內(nèi)存空間

內(nèi)存是非常重要的系統(tǒng)資源,是硬盤和cpu的中間倉(cāng)庫(kù)及橋梁,承載著操作系統(tǒng)和應(yīng)用程序的實(shí)時(shí)運(yùn)行。JVM內(nèi)存布局規(guī)定了JAVA在運(yùn)行過(guò)程中內(nèi)存申請(qǐng)、分配、管理的策略,保證了JVM的高效穩(wěn)定運(yùn)行。不同的jvm對(duì)于內(nèi)存的劃分方式和管理機(jī)制存在著部分差異(對(duì)于Hotspot主要指方法區(qū))

JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)如何劃分

(圖源阿里)JDK8的元數(shù)據(jù)區(qū)+JIT編譯產(chǎn)物 就是JDK8以前的方法區(qū)

JavaAPI中的Runtime

public class Runtime
extends Object

Every Java application has a single instance of class Runtime that allows the application to interface with theenvironment in which the application is running. The current runtime can be obtained from the getRuntime method.

每個(gè)Java應(yīng)用程序都有一個(gè)Runtime類的實(shí)例,該實(shí)例允許該應(yīng)用程序與運(yùn)行該應(yīng)用程序的環(huán)境進(jìn)行交互。 當(dāng)前運(yùn)行時(shí)可以從getRuntime方法獲得。Java內(nèi)存分區(qū)介紹

java虛擬機(jī)定了了若干種程序運(yùn)行期間會(huì)使用到的運(yùn)行時(shí)數(shù)據(jù)區(qū),其中有一些會(huì)隨著虛擬機(jī)啟動(dòng)而創(chuàng)建,隨著虛擬機(jī)退出而銷毀。另外一些則是與縣城一一對(duì)應(yīng)的,這些與線程對(duì)應(yīng)的數(shù)據(jù)區(qū)域會(huì)隨著線程開始和結(jié)束而創(chuàng)建和銷毀。

如圖,灰色的區(qū)域?yàn)閱为?dú)線程私有的,紅色的為多個(gè)線程共享的,即

JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)如何劃分Java

中的線程與進(jìn)程

1.每個(gè)線程:獨(dú)立包括程序計(jì)數(shù)器、棧、本地棧

2.線程間共享:堆、堆外內(nèi)存(方法區(qū)、永久代或元空間、代碼緩存)

PC即程序計(jì)數(shù)器

VMS即虛擬機(jī)棧

NMS即本地方法棧

一般來(lái)說(shuō),jvm優(yōu)化95%是優(yōu)化堆區(qū),5%優(yōu)化的是方法區(qū),至于棧區(qū)無(wú)非出入棧操作優(yōu)化較少Java線程

1.線程是一個(gè)程序里的運(yùn)行單元,JVM允許一個(gè)程序有多個(gè)線程并行的執(zhí)行;

2.在HotSpot JVM,每個(gè)線程都與操作系統(tǒng)的本地線程直接映射。

  當(dāng)一個(gè)java線程準(zhǔn)備好執(zhí)行以后,此時(shí)一個(gè)操作系統(tǒng)的本地線程也同時(shí)創(chuàng)建。java線程執(zhí)行終止后。本地線程也會(huì)回收。

3.操作系統(tǒng)負(fù)責(zé)所有線程的安排調(diào)度到任何一個(gè)可用的CPU上。一旦本地線程初始化成功,它就會(huì)調(diào)用java線程中的run()方法.

JVM系統(tǒng)線程分類

如果你使用jconsole或者任何一個(gè)調(diào)試工具,都能看到在后臺(tái)有許多線程在運(yùn)行。這些后臺(tái)線程不包括調(diào)用main方法的main線程以及所有這個(gè)main線程自己創(chuàng)建的線程;

這些主要的后臺(tái)系統(tǒng)線程在HotSpot JVM里主要是以下幾個(gè):

1.虛擬機(jī)線程:這種線程的操作時(shí)需要JVM達(dá)到安全點(diǎn)才會(huì)出現(xiàn)。這些操作必須在不同的線程中發(fā)生的原因是他們都需要JVM達(dá)到安全點(diǎn),這樣堆才不會(huì)變化。這種線程的執(zhí)行包括“stop-the-world”的垃圾收集,線程棧收集,線程掛起以及偏向鎖撤銷

2.周期任務(wù)線程:這種線程是時(shí)間周期事件的提現(xiàn)(比如中斷),他們一般用于周期性操作的調(diào)度執(zhí)行。

3.GC線程:這種線程對(duì)于JVM里不同種類的垃圾收集行為提供了支持

4.編譯線程:這種線程在運(yùn)行時(shí)會(huì)降字節(jié)碼編譯成本地代碼

5.信號(hào)調(diào)度線程:這種線程接收信號(hào)并發(fā)送給JVM,在它內(nèi)部通過(guò)調(diào)用適當(dāng)?shù)姆椒ㄟM(jìn)行處理。

以上就是關(guān)于JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)如何劃分的內(nèi)容,如果你們有學(xué)習(xí)到知識(shí)或者技能,可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

jvm
AI