大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 IT培訓 IT培訓課程學習之JVM內(nèi)存區(qū)域

IT培訓課程學習之JVM內(nèi)存區(qū)域

更新時間:2020-07-22 10:18:59 來源:動力節(jié)點 瀏覽2433次

1、內(nèi)存區(qū)域的劃分

通??梢园袹VM內(nèi)存區(qū)域分為下面幾個方面,其中,有的區(qū)域是以線程為單位,而有的區(qū)域則是整個JVM進程唯一的。

(1)程序計數(shù)器。在JVM規(guī)范中,每個線程都有它自己的程序計數(shù)器,并且任何時間一個線程都只有一個方法在執(zhí)行,也就是所謂的當前方法。程序計數(shù)器會存儲當前線程正在執(zhí)行的Java方法的JVM指令地址;或者,如果是在執(zhí)行本地方法,則是未指定值。

(2)Java虛擬機,早期也叫Java棧。每個線程在創(chuàng)建時都會創(chuàng)建一個虛擬機棧,其內(nèi)部保存一個個的棧幀,對應著一次次的Java方法調(diào)用。前面談程序計數(shù)器時,提到了當前方法;同理,在一個時間點,對應的只會有一個活動的棧幀,通常叫做當前幀,方法所在的類叫做當前類。如果在該方法中調(diào)用了其他方法,對應的新的棧幀會被創(chuàng)建出來,成為新的當前幀,一直到它返回結果或者執(zhí)行結束。JVM直接對Java棧的操作只有兩個,就是對棧幀的壓棧和出棧。棧幀中存儲著局部變量表,操作數(shù)棧,動態(tài)鏈接,方法正常退出或者異常退出的定義等。

(3)堆,它是Java內(nèi)存管理的核心區(qū)域,用來放置Java對象實例,幾乎所有創(chuàng)建的Java對象實例都是被直接分配在堆上。堆被所有的線程共享,在虛擬機啟動時,我們指定的“Xmx”之類參數(shù)就是用來指定最大堆空間等指標。理所當然,堆也是垃圾收集器重點照顧的區(qū)域,所以堆空間還會被不同的垃圾收集器進行進一步的細分,最有名的就是新生代,老年代的劃分。

(4)方法區(qū),這是所有線程共享的一塊內(nèi)存區(qū)域,用于存儲所謂的元數(shù)據(jù),例如類結構信息,以及對應的運行時常量池,字段,方法代碼等。由于早期的Hotspot JVM實現(xiàn),很多人習慣將方法區(qū)稱為永久代。Oracle JDK 8中將永久代移除,同時增加了元數(shù)據(jù)區(qū)。

(5)運行時常量池,這是方法區(qū)的一部分。如果仔細分析過反編譯的類文件結構,你能看到版本號,字段,方法,超類,接口等各種信息,還有一項信息就是常量池。Java的常量池可以存放各種常量信息,不管是編譯期生成的各種字面量,還是需要愛運行時決定的符號引用,所以它比一般語言的符號表存儲的信息更加寬泛。

(6)本地方法棧,它和Java虛擬機是非常相似的,支持對本地方法的調(diào)用,也是每個線程都會創(chuàng)建一個。在Oracle Hotspot JVM中,本地方法棧和Java虛擬機棧是在同一塊區(qū)域,這完全取決于技術實現(xiàn)的決定,并未在規(guī)范中強制。

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

我們將類加載入方法區(qū)的時候,就已經(jīng)開始使用運行時數(shù)據(jù)區(qū)了。每個部分各司其職經(jīng)典的運行時數(shù)據(jù)區(qū),一共包含五個部分,如下圖:

IT培訓課程學習之JVM內(nèi)存區(qū)域

3、生命周期

程序啟動產(chǎn)生進程,一個虛擬機對應一個進程,其中(綠色):方法區(qū)和堆跟進程的生命周期是一致的。隨著虛擬機啟動而創(chuàng)建,隨著虛擬機退出而銷毀。另外(藍色):程序計數(shù)器,本地方法棧,虛擬機棧,是與線程一一對應的。與線程對應的數(shù)據(jù)區(qū)域會隨著線程開始和結束而創(chuàng)建和銷毀。

1個運行的程序-->1個進程--->假設里面4個線程:那里面就有4組程序計數(shù)器,本地方法棧,虛擬機棧,而這4組程序計數(shù)器,本地方法棧,虛擬機棧公用方法區(qū)和堆空間。所以圖我們可以畫為:

IT培訓課程學習之JVM內(nèi)存區(qū)域

4、了解JVM內(nèi)存的方法

(1)可以使用綜合性的圖形化工具,如JConsole,VisualVM(注意,從Oracle JDK 9開始,VisualVM已經(jīng)不再包含在JDK安裝包中)等。這些工具具體使用起來比較直觀,直接連接到Java進程,然后就可以在圖形化界面里掌握內(nèi)存使用情況。以JConsole為例,其內(nèi)存頁面可以顯示常見的堆內(nèi)存和各種堆外部分使用狀態(tài)。

(2)使用命令行工具進行運行時查詢,如jstat和jmap等工具都提供了一些選項,可以查看堆,方法區(qū)等使用數(shù)據(jù)。

(3)使用jmap等提供的命令,生成堆轉儲文件,然后利用jhat或者Eclipse MAT等堆轉儲分析工具進行詳細分析。

(4)GC日志等輸出,也包含著豐富的信息。

以上就是動力節(jié)點java培訓機構的小編針對“IT培訓課程學習之JVM內(nèi)存區(qū)域”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 午夜免费福利 | 亚洲成人国产 | 日本在线看片网站 | 欧美综合影院 | 精品久久一区二区三区 | 毛茸茸成熟女性老太的女bbww | 最新国产在线精品91尤物 | 天天久久狠狠伊人第一麻豆 | 99热久久国产精品这 | 亚洲成人在线视频观看 | 亚洲 中文 欧美 日韩 在线人 | 久久精品国产精品青草不卡 | 国产精品美女久久久久久 | 久草手机在线观看 | 午夜私人影院粉色视频我要 | 五月婷婷六月激情 | 桃色视频在线观看 | 国产国语videosex | 天天干夜夜玩 | 国产精品久久九九 | 老扒夜夜春宵粗大好爽aa毛片 | 一级毛片在线免费观看 | 久久最新免费视频 | 国产亚洲精品自在久久不卡 | 四虎影院在线免费观看 | 91视频a | 成人国产精品免费视频不卡 | 麻豆精品 | 爱综合网 | 五月激情丁香婷婷综合第九 | 成人a毛片一级 | 国产欧美精品一区二区三区-老狼 | 欧美日韩亚洲综合久久久 | 中文字幕在线观看一区二区三区 | 99久久99热久久精品免费看 | 天天草天天干 | 草草影视在线观看 | 欧美性猛交xx乱大交 | 久久国产成人亚洲精品影院老金 | 偷亚洲偷国产欧美高清 | 久青草国产在视频在线观看 |