欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Java——JVM篇——收藏系列來啦(一)-創(chuàng)新互聯(lián)

1 基本概念:
JVM 是可運行 Java 代碼的假想計算機(jī) ,包括一套字節(jié)碼指令集、一組寄存器、一個棧、 一個垃圾回收,堆 和 一個存儲方法域。JVM 是運行在操作系統(tǒng)之上的,它與硬件沒有直接 的交互。

站在用戶的角度思考問題,與客戶深入溝通,找到察布查爾錫伯網(wǎng)站設(shè)計與察布查爾錫伯網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋察布查爾錫伯地區(qū)。

Java——JVM篇——收藏系列來啦(一)
2 運行過程:
我們都知道 Java 源文件,通過編譯器,能夠生產(chǎn)相應(yīng)的.Class 文件,也就是字節(jié)碼文件, 而字節(jié)碼文件又通過 Java 虛擬機(jī)中的解釋器,編譯成特定機(jī)器上的機(jī)器碼 。 也就是如下: ① Java 源文件—->編譯器—->字節(jié)碼文件 ② 字節(jié)碼文件—->JVM—->機(jī)器碼 每一種平臺的解釋器是不同的,但是實現(xiàn)的虛擬機(jī)是相同的,這也就是 Java 為什么能夠 跨平臺的原因了 ,當(dāng)一個程序從開始運行,這時虛擬機(jī)就開始實例化了,多個程序啟動就會 存在多個虛擬機(jī)實例。程序退出或者關(guān)閉,則虛擬機(jī)實例消亡,多個虛擬機(jī)實例之間數(shù)據(jù)不 能共享。

Java——JVM篇——收藏系列來啦(一)
2.1.線程
這里所說的線程指程序執(zhí)行過程中的一個線程實體。JVM 允許一個應(yīng)用并發(fā)執(zhí)行多個線程。 Hotspot JVM 中的 Java 線程與原生操作系統(tǒng)線程有直接的映射關(guān)系。當(dāng)線程本地存儲、緩 沖區(qū)分配、同步對象、棧、程序計數(shù)器等準(zhǔn)備好以后,就會創(chuàng)建一個操作系統(tǒng)原生線程。 Java 線程結(jié)束,原生線程隨之被回收。操作系統(tǒng)負(fù)責(zé)調(diào)度所有線程,并把它們分配到任何可 用的 CPU 上。當(dāng)原生線程初始化完畢,就會調(diào)用 Java 線程的 run() 方法。當(dāng)線程結(jié)束時, 會釋放原生線程和 Java 線程的所有資源。 Hotspot JVM 后臺運行的系統(tǒng)線程主要有下面幾個:

Java——JVM篇——收藏系列來啦(一)
2.2.JVM 內(nèi)存區(qū)域
Java——JVM篇——收藏系列來啦(一)
JVM 內(nèi)存區(qū)域主要分為線程私有區(qū)域【程序計數(shù)器、虛擬機(jī)棧、本地方法區(qū)】、線程共享區(qū) 域【JAVA 堆、方法區(qū)】、直接內(nèi)存。 線程私有數(shù)據(jù)區(qū)域生命周期與線程相同, 依賴用戶線程的啟動/結(jié)束 而 創(chuàng)建/銷毀(在 Hotspot VM 內(nèi), 每個線程都與操作系統(tǒng)的本地線程直接映射, 因此這部分內(nèi)存區(qū)域的存/否跟隨本地線程的 生/死對應(yīng))。 線程共享區(qū)域隨虛擬機(jī)的啟動/關(guān)閉而創(chuàng)建/銷毀。 直接內(nèi)存并不是 JVM 運行時數(shù)據(jù)區(qū)的一部分, 但也會被頻繁的使用: 在 JDK 1.4 引入的 NIO 提 供了基于 Channel 與 Buffer 的 IO 方式, 它可以使用 Native 函數(shù)庫直接分配堆外內(nèi)存, 然后使用 DirectByteBuffer 對象作為這塊內(nèi)存的引用進(jìn)行操作(詳見: Java I/O 擴(kuò)展), 這樣就避免了在 Java 堆和 Native 堆中來回復(fù)制數(shù)據(jù), 因此在一些場景中可以顯著提高性能。

Java——JVM篇——收藏系列來啦(一)
2.2.1. 程序計數(shù)器(線程私有)
一塊較小的內(nèi)存空間, 是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號指示器,每條線程都要有一個獨立的 程序計數(shù)器,這類內(nèi)存也稱為“線程私有”的內(nèi)存。 正在執(zhí)行 java 方法的話,計數(shù)器記錄的是虛擬機(jī)字節(jié)碼指令的地址(當(dāng)前指令的地址)。如 果還是 Native 方法,則為空。 這個內(nèi)存區(qū)域是唯一一個在虛擬機(jī)中沒有規(guī)定任何 OutOfMemoryError 情況的區(qū)域。

2.2.2. 虛擬機(jī)棧(線程私有)
是描述java方法執(zhí)行的內(nèi)存模型,每個方法在執(zhí)行的同時都會創(chuàng)建一個棧幀(Stack Frame) 用于存儲局部變量表、操作數(shù)棧、動態(tài)鏈接、方法出口等信息。每一個方法從調(diào)用直至執(zhí)行完成 的過程,就對應(yīng)著一個棧幀在虛擬機(jī)棧中入棧到出棧的過程。 棧幀( Frame)是用來存儲數(shù)據(jù)和部分過程結(jié)果的數(shù)據(jù)結(jié)構(gòu),同時也被用來處理動態(tài)鏈接 (Dynamic Linking)、 方法返回值和異常分派( Dispatch Exception)。棧幀隨著方法調(diào)用而創(chuàng)建,隨著方法結(jié)束而銷毀——無論方法是正常完成還是異常完成(拋出了在方法內(nèi)未被捕獲的異 常)都算作方法結(jié)束。

Java——JVM篇——收藏系列來啦(一)
2.2.3. 本地方法區(qū)(線程私有)
本地方法區(qū)和 Java Stack 作用類似, 區(qū)別是虛擬機(jī)棧為執(zhí)行 Java 方法服務(wù), 而本地方法棧則為 Native 方法服務(wù), 如果一個 VM 實現(xiàn)使用 C-linkage 模型來支持 Native 調(diào)用, 那么該棧將會是一個 C 棧,但 HotSpot VM 直接就把本地方法棧和虛擬機(jī)棧合二為一。

2.2.4. 堆(Heap-線程共享)-運行時數(shù)據(jù)區(qū)
是被線程共享的一塊內(nèi)存區(qū)域,創(chuàng)建的對象和數(shù)組都保存在 Java 堆內(nèi)存中,也是垃圾收集器進(jìn)行 垃圾收集的最重要的內(nèi)存區(qū)域。由于現(xiàn)代 VM 采用分代收集算法, 因此 Java 堆從 GC 的角度還可以 細(xì)分為: 新生代(Eden 區(qū)、From Survivor 區(qū)和 To Survivor 區(qū))和老年代。

2.2.5. 方法區(qū)/永久代(線程共享)
即我們常說的永久代(Permanent Generation), 用于存儲被 JVM 加載的類信息、常量、靜 態(tài)變量、即時編譯器編譯后的代碼等數(shù)據(jù). HotSpot VM把GC分代收集擴(kuò)展至方法區(qū), 即使用Java 堆的永久代來實現(xiàn)方法區(qū), 這樣 HotSpot 的垃圾收集器就可以像管理 Java 堆一樣管理這部分內(nèi)存, 而不必為方法區(qū)開發(fā)專門的內(nèi)存管理器(永久帶的內(nèi)存回收的主要目標(biāo)是針對常量池的回收和類型 的卸載, 因此收益一般很小)。 運行時常量池(Runtime Constant Pool)是方法區(qū)的一部分。Class 文件中除了有類的版 本、字段、方法、接口等描述等信息外,還有一項信息是常量池(Constant Pool Table),用于存放編譯期生成的各種字面量和符號引用,這部分內(nèi)容將在類加 載后存放到方法區(qū)的運行時常量池中。 Java 虛擬機(jī)對 Class 文件的每一部分(自然也包括常量 池)的格式都有嚴(yán)格的規(guī)定,每一個字節(jié)用于存儲哪種數(shù)據(jù)都必須符合規(guī)范上的要求,這樣才會 被虛擬機(jī)認(rèn)可、裝載和執(zhí)行。

2.3.JVM 運行時內(nèi)存
Java 堆從 GC 的角度還可以細(xì)分為: 新生代(Eden 區(qū)、From Survivor 區(qū)和 To Survivor 區(qū))和老年 代。

Java——JVM篇——收藏系列來啦(一)
2.3.1. 新生代
是用來存放新生的對象。一般占據(jù)堆的 1/3 空間。由于頻繁創(chuàng)建對象,所以新生代會頻繁觸發(fā) MinorGC 進(jìn)行垃圾回收。新生代又分為 Eden 區(qū)、ServivorFrom、ServivorTo 三個區(qū)。

2.3.1.1. Eden 區(qū)
Java 新對象的出生地(如果新創(chuàng)建的對象占用內(nèi)存很大,則直接分配到老 年代)。當(dāng) Eden 區(qū)內(nèi)存不夠的時候就會觸發(fā) MinorGC,對新生代區(qū)進(jìn)行 一次垃圾回收。

2.3.1.2. ServivorFrom
上一次 GC 的幸存者,作為這一次 GC 的被掃描者。

2.3.1.3. ServivorTo
保留了一次 MinorGC 過程中的幸存者。

2.3.1.4. MinorGC 的過程(復(fù)制->清空->互換)
MinorGC 采用復(fù)制算法。

1:eden、servicorFrom 復(fù)制到 ServicorTo,年齡+1

首先,把 Eden 和 ServivorFrom 區(qū)域中存活的對象復(fù)制到 ServicorTo 區(qū)域(如果有對象的年 齡以及達(dá)到了老年的標(biāo)準(zhǔn),則賦值到老年代區(qū)),同時把這些對象的年齡+1(如果 ServicorTo 不 夠位置了就放到老年區(qū));

2:清空 eden、servicorFrom

然后,清空 Eden 和 ServicorFrom 中的對象;

3:ServicorTo 和 ServicorFrom 互換

最后,ServicorTo 和 ServicorFrom 互換,原 ServicorTo 成為下一次 GC 時的 ServicorFrom 區(qū)。

2.3.2. 老年代
主要存放應(yīng)用程序中生命周期長的內(nèi)存對象。 老年代的對象比較穩(wěn)定,所以 MajorGC 不會頻繁執(zhí)行。在進(jìn)行 MajorGC 前一般都先進(jìn)行 了一次 MinorGC,使得有新生代的對象晉身入老年代,導(dǎo)致空間不夠用時才觸發(fā)。當(dāng)無法找到足 夠大的連續(xù)空間分配給新創(chuàng)建的較大對象時也會提前觸發(fā)一次 MajorGC 進(jìn)行垃圾回收騰出空間。 MajorGC 采用標(biāo)記清除算法:首先掃描一次所有老年代,標(biāo)記出存活的對象,然后回收沒 有標(biāo)記的對象。MajorGC 的耗時比較長,因為要掃描再回收。MajorGC 會產(chǎn)生內(nèi)存碎片,為了減 少內(nèi)存損耗,我們一般需要進(jìn)行合并或者標(biāo)記出來方便下次直接分配。當(dāng)老年代也滿了裝不下的 時候,就會拋出 OOM(Out of Memory)異常。

2.3.3. 永久代
指內(nèi)存的永久保存區(qū)域,主要存放 Class 和 Meta(元數(shù)據(jù))的信息,Class 在被加載的時候被 放入永久區(qū)域,它和和存放實例的區(qū)域不同,GC 不會在主程序運行期對永久區(qū)域進(jìn)行清理。所以這 也導(dǎo)致了永久代的區(qū)域會隨著加載的 Class 的增多而脹滿,最終拋出 OOM 異常。

2.3.3.1. JAVA8 與元數(shù)據(jù)
在 Java8 中,永久代已經(jīng)被移除,被一個稱為“元數(shù)據(jù)區(qū)”(元空間)的區(qū)域所取代。元空間 的本質(zhì)和永久代類似,元空間與永久代之間大的區(qū)別在于:元空間并不在虛擬機(jī)中,而是使用 本地內(nèi)存。因此,默認(rèn)情況下,元空間的大小僅受本地內(nèi)存限制。類的元數(shù)據(jù)放入 native memory, 字符串池和類的靜態(tài)變量放入 java 堆中,這樣可以加載多少類的元數(shù)據(jù)就不再由 MaxPermSize 控制, 而由系統(tǒng)的實際可用空間來控制。

未完待續(xù)……
加VX:13272413561,提前一飽眼福
Java——JVM篇——收藏系列來啦(一)
Java——JVM篇——收藏系列來啦(一)Java——JVM篇——收藏系列來啦(一)
Java——JVM篇——收藏系列來啦(一)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

本文標(biāo)題:Java——JVM篇——收藏系列來啦(一)-創(chuàng)新互聯(lián)
URL鏈接:http://aaarwkj.com/article6/dpgjog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站App設(shè)計、營銷型網(wǎng)站建設(shè)外貿(mào)建站、域名注冊、軟件開發(fā)

廣告

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

成都網(wǎng)頁設(shè)計公司
亚洲国产精品一区二区三区在线| 精品久久亚洲一区二区欧美| 91日本视频在线播放| 一区二区三区国产不卡| 欧美高清精品在线视频| 亚洲丰满毛茸茸毛茸茸| 黄色av免费播放网站| 国产精品久久乱码综合| 国产成人av网站在线观看| 日韩国产传媒在线精品| 久久精品国产亚洲av高清观看| 日本中文字幕免费专区| 国产精品成人av在线网站| 四虎海外永久免费地址| 一本之道久久成人综合| 亚洲欧美一区二区国产| 十八岁毛片一区二区三区| av岛国不卡一区二区在线观看| 美女午夜精品国产福利| 很色很污无遮挡的网色污| 亚洲免费成人一区二区| 调教亚洲另类唯美第二页| 国产欧美激情一区二区 | 亚洲综合久久国产一区二区| 久草视频在线免费资源站| 国产精品毛片一区二区三| 亚洲国产偷拍在线观看| 亚洲精品国产av成人| 国产日韩欧在线视频| 一区二区三区欧美小黄片| 亚洲国产精品激情在线| 久久精品国产亚洲av麻豆尤物| 久久热久久热在线视频| 2020亚洲欧美日韩在线| 日韩国产亚洲欧美国产| 一区二区三区福利视频在线观看| 成年黄网站免费视频大全| 亚洲丰满熟女乱一区二区三区| 亚洲精品在线观看日韩欧美| 欧美亚洲另类国产精品| 两性色午夜视频免费网站|