欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    一、運行時數(shù)據(jù)區(qū)

    1.1、概述

    運行時數(shù)據(jù)區(qū),也就是下圖這部分,它是在類加載完成后的階段。當我們通過前面的:類的加載-> 驗證 -> 準備 -> 解析 -> 初始化 這幾個階段完成后,就會用到執(zhí)行引擎對我們的類進行使用,同時執(zhí)行引擎將會使用到我們運行時數(shù)據(jù)區(qū)。內存是非常重要的系統(tǒng)資源,是硬盤和CPU的中間倉庫及橋梁,承載著操作系統(tǒng)和應用程序的實時運行JVM內存布局規(guī)定了Java在運行過程中內存申請、分配、管理的策略,保證了JVM的高效穩(wěn)定運行。不同的JVM對于內存的劃分方式和管理機制存在著部分差異。

    線程獨立:程序計數(shù)器、棧、本地棧。

    線程共享:堆、堆外內存(永久代或元空間、代碼緩存)

    新跳繩器不能計數(shù)怎么辦_血細胞計數(shù)delta值_帶設定值計數(shù)器圖片

    帶設定值計數(shù)器圖片_血細胞計數(shù)delta值_新跳繩器不能計數(shù)怎么辦

    1.2、線程

    線程是一個程序里的運行單元。JVM允許一個應用有多個線程并行的執(zhí)行。在Hotspot JVM里,每個線程都與操作系統(tǒng)的本地線程直接映射。當一個Java線程準備好執(zhí)行以后,此時一個操作系統(tǒng)的本地線程也同時創(chuàng)建。Java線程執(zhí)行終止后,本地線程也會回收。操作系統(tǒng)負責所有線程的安排調度到任何一個可用的CPU上。一旦本地線程初始化成功,它就會調用Java線程中的run()方法。

    1.3、JVM系統(tǒng)線程

    如果你使用、或者是任何一個調試工具,都能看到在后臺有許多線程在運行。這些后臺線程不包括調用public static void main(String[] args)的main線程以及所有這個main線程自己創(chuàng)建的線程。這些主要的后臺系統(tǒng)線程在Hotspot JVM里主要是以下幾個:

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

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

    GC線程:這種線程對在JVM里不同種類的垃圾收集行為提供了支持。

    編譯線程:這種線程在運行時會將字節(jié)碼編譯成到本地代碼。

    信號調度線程:這種線程接收信號并發(fā)送給JVM,在它內部通過調用適當?shù)姆椒ㄟM行處理。

    二、程序計數(shù)器(PC寄存器)

    JVM中的程序計數(shù)寄存器(Program Counter )中,的命名源于CPU的寄存器,寄存器存儲指令相關的現(xiàn)場信息。CPU只有把數(shù)據(jù)裝載到寄存器才能夠運行。這里并非是廣義上所指的物理寄存器,或許將其翻譯為PC計數(shù)器(或指令計數(shù)器)會更加貼切(也稱為程序鉤子),并且也不容易引起一些不必要的誤會。JVM中的PC寄存器是對物理PC寄存器的一種抽象模擬。PC寄存器用來存儲指向下一條指令的地址,也即將要執(zhí)行的指令代碼。由執(zhí)行引擎讀取下一條指令。

    程序計數(shù)器它是一塊很小的內存空間,幾乎可以忽略不記。也是運行速度最快的存儲區(qū)域。在JVM規(guī)范中,每個線程都有它自己的程序計數(shù)器,是線程私有的,生命周期與線程的生命周期保持一致。任何時間一個線程都只有一個方法在執(zhí)行,也就是所謂的當前方法。程序計數(shù)器會存儲當前線程正在執(zhí)行的Java方法的JVM指令地址;或者,如果是在執(zhí)行native方法,則是未指定值()。它是程序控制流的指示器,分支、循環(huán)、跳轉、異常處理、線程恢復等基礎功能都需要依賴這個計數(shù)器來完成。字節(jié)碼解釋器工作時就是通過改變這個計數(shù)器的值來選取下一條需要執(zhí)行的字節(jié)碼指令。它是唯一一個在Java虛擬機規(guī)范中沒有規(guī)定任何情況的區(qū)域。

    新跳繩器不能計數(shù)怎么辦_帶設定值計數(shù)器圖片_血細胞計數(shù)delta值

    為什么使用PC寄存器記錄當前線程的執(zhí)行地址呢?

    因為CPU需要不停的切換各個線程,這時候切換回來以后,就得知道接著從哪開始繼續(xù)執(zhí)行。JVM的字節(jié)碼解釋器就需要通過改變PC寄存器的值來明確下一條應該執(zhí)行什么樣的字節(jié)碼指令。

    PC寄存器為什么被設定為私有的?

    我們都知道所謂的多線程在一個特定的時間段內只會執(zhí)行其中某一個線程的方法,CPU會不停地做任務切換,這樣必然導致經(jīng)常中斷或恢復,如何保證分毫無差呢?為了能夠準確地記錄各個線程正在執(zhí)行的當前字節(jié)碼指令地址,最好的辦法自然是為每一個線程都分配一個PC寄存器,這樣一來各個線程之間便可以進行獨立計算,從而不會出現(xiàn)相互干擾的情況。由于CPU時間片輪限制,眾多線程在并發(fā)執(zhí)行過程中,任何一個確定的時刻,一個處理器或者多核處理器中的一個內核,只會執(zhí)行某個線程中的一條指令。這樣必然導致經(jīng)常中斷或恢復,如何保證分毫無差呢?每個線程在創(chuàng)建后,都會產(chǎn)生自己的程序計數(shù)器和棧幀,程序計數(shù)器在各個線程之間互不影響。

網(wǎng)站首頁   |    關于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有