精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

深入理解Java虛擬機:方法區詳解

開發 前端
jdk7?中將StringTable?放到了堆空間中。因為永久代的回收效率很低,在full gc?的時候才會觸發。而full gc是老年代的空間不足、永久代不足時才會觸發。

前言

本節主要講的是運行時數據區(方法區),也就是下圖這部分,它是在類加載完成后的階段:

圖片圖片

  • 每個線程:獨立包括程序計數器、棧、本地棧
  • 線程間共享:堆、堆外內存(永久代或元空間、代碼緩存)

當我們通過前面的:類的加載-> 驗證 -> 準備 -> 解析 -> 初始化 這幾個階段完成后,就會用到執行引擎對我們的類進行使用,同時執行引擎將會使用到我們運行時數據區。

內存是非常重要的系統資源,是硬盤和CPU的中間倉庫及橋梁,承載著操作系統和應用程序的實時運行JVM內存布局規定了Java在運行過程中內存申請、分配、管理的策略,保證了JVM的高效穩定運行。不同的JVM對于內存的劃分方式和管理機制存在著部分差異。

正文

我們通過磁盤或者網絡IO得到的數據,都需要先加載到內存中,然后CPU從內存中獲取數據進行讀取,也就是說內存充當了CPU和磁盤之間的橋梁。

圖片圖片

線程

線程是一個程序里的運行單元。JVM允許一個應用有多個線程并行的執行。在Hotspot JVM里,每個線程都與操作系統的本地線程直接映射。

當一個Java線程準備好執行以后,此時一個操作系統的本地線程也同時創建。Java線程執行終止后,本地線程也會回收。

操作系統負責所有線程的安排調度到任何一個可用的CPU上。一旦本地線程初始化成功,它就會調用Java線程中的run()方法。

JVM系統線程:

  • 虛擬機線程:需要JVM達到安全點才會出現。這些操作必須在不同的線程中發生的,原因是他們都需要JVM達到安全點,這樣堆才不會變化。這種線程的執行類型包括stop-the-world的垃圾收集,線程棧收集,線程掛起以及偏向鎖撤銷。
  • 周期任務線程:這種線程是時間周期事件的體現(比如中斷),他們一般用于周期性操作的調度執行。
  • GC線程:這種線程對在JVM里不同種類的垃圾收集行為提供了支持。
  • 編譯線程:這種線程在運行時會將字節碼編譯成到本地代碼。
  • 信號調度線程:這種線程接收信號并發送給JVM,在它內部通過調用適當的方法進行處理。

方法區

棧、堆、方法區的交互關系

圖片圖片

盡管所有的方法區在邏輯上是屬于堆的一部分,但一些簡單的實現可能不會選擇去進行垃圾收集或者進行壓縮。但對于HotSpotJVM而言,方法區還有一個別名叫做Non-Heap(非堆),目的就是要和堆分開,所以方法區看作是一塊獨立于Java堆的內存空間。

方法區基本理解

  • 方法區(Method Area)與Java堆一樣,是各個線程共享的內存區域。
  • 方法區在JVM啟動的時候被創建,并且它的實際的物理內存空間中和Java堆區一樣都可以是不連續的。
  • 方法區的大小,跟堆空間一樣,可以選擇固定大小或者可擴展。
  • 方法區的大小決定了系統可以保存多少個類,如果系統定義了太多的類,導致方法區溢出,虛擬機同樣會拋出內存溢出錯誤:java.lang.OutOfMemoryError: PermGen space 或者java.lang.OutOfMemoryError: Metaspace
  • 加載大量的第三方的jar包;Tomcat部署的工程過多(30~50個);大量動態的生成反射類
  • 關閉JVM就會釋放這個區域的內存。

方法區的演進

在jdk7及以前,習慣上把方法區,稱為永久代。jdk8開始,使用元空間取代了永久代

圖片圖片

JDK8完全廢棄了永久代的概念,改用與JRockit、J9一樣在本地內存中實現的元空間(Metaspace)來代替

圖片圖片

元空間的本質和永久代類似,都是對JVM規范中方法區的實現。不過元空間與永久代最大的區別在于:元空間不在虛擬機設置的內存中,而是使用本地內存。

設置方法區內存的大小

jdk7及以前:

  • 通過-XX:Permsize來設置永久代初始分配空間。默認值是20.75M
  • 通過-XX:MaxPermsize來設定永久代最大可分配空間。32位機器默認是64M,64位機器模式是82M

圖片圖片

jdk8及以后:

  • 元數據區大小可以使用參數 -XX:MetaspaceSize 和 -XX:MaxMetaspaceSize指定
  • -XX:MetaspaceSize設置初始的元空間大小。對于一個64位的服務器端JVM來說,其默認的-XX:MetaspaceSize值為21MB,這就是初始的高水位線,一旦觸及這個水位線,Full GC將會被觸發并卸載沒用的類(即這些類對應的類加載器不再存活),然后這個高水位線將會重置。新的高水位線的值取決于GC后釋放了多少元空間。如果釋放的空間不足,那么在不超過MaxMetaspaceSize時,適當提高該值。如果釋放空間過多,則適當降低該值。

方法區的內部結構

圖片圖片

方法區存儲什么

它用于存儲已被虛擬機加載的類型信息、常量、靜態變量、即時編譯器編譯后的代碼緩存等

圖片圖片

類型信息,對每個加載的類型(類class、接口interface、枚舉enum、注解annotation),JVM必須在方法區中存儲以下類型信息:

  • 這個類型的完整有效名稱(全名=包名.類名)
  • 這個類型直接父類的完整有效名(對于interface或java.lang.Object,都沒有父類)
  • 這個類型的修飾符(public,abstract,final的某個子集)
  • 這個類型直接接口的一個有序列表

域信息,JVM必須在方法區中保存類型的所有域的相關信息以及域的聲明順序:

  • 域的相關信息包括:域名稱、域類型、域修飾符(public,private,protected,static,final,volatile,transient的某個子集)

方法信息,JVM必須保存所有方法的以下信息,同域信息一樣包括聲明順序:

  • 方法名稱
  • 方法的返回類型(或void)
  • 方法參數的數量和類型(按順序)
  • 方法的修飾符(public,private,protected,static,final,synchronized,native,abstract的一個子集)
  • 方法的字節碼(bytecodes)、操作數棧、局部變量表及大小(abstract和native方法除外)
  • 異常表(abstract和native方法除外)

每個異常處理的開始位置、結束位置、代碼處理在程序計數器中的偏移地址、被捕獲的異常類的常量池索引

類變量:

  • 靜態變量和類關聯在一起,隨著類的加載而加載,他們成為類數據在邏輯上的一部分
  • 類變量被類的所有實例共享,即使沒有類實例時,你也可以訪問它

全局常量:

  • 被聲明為final的類變量的處理方法則不同,每個全局常量在編譯的時候就會被分配了

常量池

  • 字節碼文件,內部包含了常量池(數量值、字符串值、類引用、字段引用、方法引用)

圖片圖片

一個有效的字節碼文件中除了包含類的版本信息、字段、方法以及接口等描述符信息外,還包含一項信息就是常量池表(Constant Pool Table),包括各種字面量和對類型、域和方法的符號引用。

一個Java源文件中的類、接口,編譯后產生一個字節碼文件。而Java中的字節碼需要數據支持,通常這種數據會很大以至于不能直接存到字節碼里,換另一種方式,可以存到常量池,這個字節碼包含了指向常量池的引用,在動態鏈接的時候會用到運行時常量池。

常量池可以看做是一張表,虛擬機指令根據這張常量表找到要執行的類名、方法名、參數類型、字面量等類型。

運行時常量池

  • 運行時常量池是方法區的一部分。
  • 常量池表是Class文件的一部分,用于存放編譯期生成的各種字面量與符號引用,這部分內容將在類加載后存放到方法區的運行時常量池中。
  • 運行時常量池,在加載類和接口到虛擬機后,就會創建對應的運行時常量池。
  • JVM為每個已加載的類型(類或接口)都維護一個常量池。池中的數據項像數組項一樣,是通過索引訪問的。
  • 運行時常量池中包含多種不同的常量,包括編譯期就已經明確的數值字面量,也包括到運行期解析后才能夠獲得的方法或者字段引用。此時不再是常量池中的符號地址了,這里換為真實地址。
  • 運行時常量池,相對于Class文件常量池的另一重要特征是:具備動態性。
  • 運行時常量池類似于傳統編程語言中的符號表(symboltable),但是它所包含的數據卻比符號表要更加豐富一些。
  • 當創建類或接口的運行時常量池時,如果構造運行時常量池所需的內存空間超過了方法區所能提供的最大值,則JVM會拋OutOfMemoryError異常。

方法區使用舉例

public class MethodAreaDemo {
    public static void main(String args[]) {
        int x = 500;
        int y = 100;
        int a = x / y;
        int b = 50;
        System.out.println(a+b);
    }
}

圖片圖片

詳細執行過程

圖片圖片

圖片圖片

圖片圖片

圖片圖片

圖片圖片

圖片圖片

圖片圖片

圖片圖片

圖片圖片

圖片圖片

圖片圖片

圖片圖片

圖片圖片

圖片圖片

圖片圖片

圖片圖片

方法區的演進細節

jdk1.6:

圖片圖片

jdk1.7:

圖片圖片

jdk1.8:

圖片圖片

StringTable為什么要調整位置

jdk7中將StringTable放到了堆空間中。因為永久代的回收效率很低,在full gc的時候才會觸發。而full gc是老年代的空間不足、永久代不足時才會觸發。

這就導致StringTable回收效率不高。而我們開發中會有大量的字符串被創建,回收效率低,導致永久代內存不足。放到堆里,能及時回收內存。

責任編輯:武曉燕 來源: 一安未來
相關推薦

2024-03-29 11:42:21

Java虛擬機

2012-11-14 09:57:46

JavaJava虛擬機JVM

2019-07-24 16:04:47

Java虛擬機并發

2024-03-26 07:30:07

Java虛擬機源文件

2016-09-01 12:37:13

OpenStack虛擬機Metadata

2024-04-10 07:40:45

Java虛擬機內存

2023-09-22 23:00:11

Java虛擬機

2019-12-31 10:45:30

JavaVisualVM高并發

2017-11-14 14:41:11

Java泛型IO

2013-11-05 13:29:04

JavaScriptreplace

2011-12-28 13:24:47

JavaJVM

2011-12-28 13:38:00

JavaJVM

2020-05-08 16:55:48

Java虛擬機JVM

2016-12-08 15:36:59

HashMap數據結構hash函數

2020-07-21 08:26:08

SpringSecurity過濾器

2010-06-01 15:25:27

JavaCLASSPATH

2009-12-16 13:44:12

2022-08-21 16:52:27

Linux虛擬內存

2012-03-05 11:09:01

JavaClass

2021-09-18 06:56:01

JavaCAS機制
點贊
收藏

51CTO技術棧公眾號

国产精品毛片一区二区在线看舒淇| 国产精品密蕾丝袜| 人妖欧美1区| 粉嫩13p一区二区三区| 性色av一区二区三区在线观看| 日本黄色动态图| 欧美xnxx| 图片区日韩欧美亚洲| 日本一区二区三区四区在线观看 | 亚洲婷婷在线观看| 蜜桃成人精品| 亚洲午夜成aⅴ人片| 欧美午夜免费| 亚洲精品国产精品国| 久久激情久久| 国内精久久久久久久久久人| 欧美另类69xxxx| 国产精品主播在线观看| 欧美色图免费看| 国产美女主播在线播放| 欧美a免费在线| 久久看人人爽人人| 成人一区二区在线| 国产精品伦一区二区三区| 麻豆久久婷婷| 海角国产乱辈乱精品视频| 岛国片在线免费观看| 色老板在线视频一区二区| 91麻豆精品国产91久久久使用方法 | 第一福利永久视频精品| 青青在线视频免费观看| 在线免费观看的av网站| 91美女在线视频| 国产欧美欧洲| 亚洲精品久久久久久无码色欲四季| 免费观看在线色综合| 热久久99这里有精品| 欧美日韩在线国产| 国产精品久久占久久| 亚洲午夜精品视频| 日韩 中文字幕| aiss精品大尺度系列| 欧美一区二区三区小说| 岛国毛片在线播放| 午夜精品成人av| 五月婷婷综合网| 国产精品又粗又长| 黑人玩欧美人三根一起进| 亚洲欧美日韩国产手机在线| 色大师av一区二区三区| 激情小说 在线视频| 久久色视频免费观看| 久久久久久久久久久久久久一区| 日本精品一二区| 成人激情动漫在线观看| aaa级精品久久久国产片| 精品黑人一区二区三区在线观看| 另类成人小视频在线| 国产精品美乳在线观看| 中文字幕在线视频免费| 老司机午夜精品| 国产日韩av在线播放| 亚洲免费视频二区| 美女性感视频久久| 91久久久在线| 超碰在线观看av| proumb性欧美在线观看| 久久综合福利| 二区三区在线| 欧美高清一级片在线观看| 亚洲欧美日韩精品久久久| 免费在线看a| 一区二区三区国产精品| 人妻av中文系列| 97se综合| 欧美精品第一页| 欧美色图校园春色| 久久亚州av| 亚洲最新中文字幕| 亚洲天堂网av在线| 欧美午夜一区二区福利视频| 91精品国产91久久久久| 精品人妻一区二区三区潮喷在线 | 黄色片在线看| 国产精品国产自产拍高清av| 日韩欧美猛交xxxxx无码| av资源中文在线| 欧美亚洲综合一区| 中文字幕一区二区三区四| 北条麻妃在线一区二区免费播放| 精品偷拍一区二区三区在线看 | 日日躁夜夜躁白天躁晚上躁91| xfplay精品久久| 中文字幕精品一区日韩| 国产高清中文字幕在线| 欧美视频精品在线观看| 精品人妻一区二区免费| 国产真实有声精品录音| 色综合天天狠天天透天天伊人| 五月天婷婷激情| 国产乱码字幕精品高清av| 久久精品第九区免费观看 | 国产欧美日韩综合精品一区二区三区| 成人午夜电影久久影院| 亚洲国产高清国产精品| 9lporm自拍视频区在线| 欧美日韩国产一级二级| 亚洲精品国产成人av在线| 日韩亚洲一区在线| 26uuu日韩精品一区二区| 一级黄色片免费看| 91尤物视频在线观看| 大桥未久一区二区| 网友自拍亚洲| 亚洲第一精品福利| 97在线观看免费高| 久久综合网络一区二区| av一区二区三区在线观看| 色哟哟免费在线观看 | 欧美在线观看成人| 欧美区一区二区| 中文在线资源观看视频网站免费不卡 | xxxx国产精品| 1区2区3区国产精品| 欧美一级黄色片视频| 成人激情自拍| 欧美猛交免费看| 一级特黄aaa大片| 国产网站一区二区| 日韩欧美一区三区| 成人自拍在线| 欧美裸身视频免费观看| 国产女人高潮时对白| 国产精品国产三级国产三级人妇 | 中文字幕国内精品| 男人天堂av在线播放| 97精品超碰一区二区三区| 青青视频免费在线观看| 成人黄色91| 日韩色av导航| 91超薄丝袜肉丝一区二区| 国产无人区一区二区三区| wwwxxx黄色片| 亚洲国产最新| 欧美亚洲成人免费| 十九岁完整版在线观看好看云免费| 亚洲自拍欧美精品| 国产人成视频在线观看| 国产中文一区| 国产区日韩欧美| 不卡av免费观看| 精品国产区一区| 九九九国产视频| youjizz久久| 国产最新免费视频| 杨幂一区二区三区免费看视频| 2018日韩中文字幕| 麻豆国产在线播放| 欧美性色aⅴ视频一区日韩精品| 在线不卡av电影| 日本欧洲一区二区| 亚洲精品永久www嫩草| 四虎精品在线观看| 超碰91人人草人人干| 国产后入清纯学生妹| 亚洲一区二区三区小说| 亚洲中文字幕一区| 视频一区二区不卡| 亚洲午夜精品福利| 日本一区二区乱| 91精品国产成人| 国产在线自天天| 欧美日韩国产欧美日美国产精品| 天天操夜夜操av| 丁香一区二区三区| 欧美日韩国产精品激情在线播放| 教室别恋欧美无删减版| 国产在线视频2019最新视频| 欧美人与牲禽动交com| 日韩精品免费在线观看| 做爰视频毛片视频| 亚洲精品久久久蜜桃| 人妻丰满熟妇aⅴ无码| 热久久一区二区| 成人在线免费高清视频| 在线日本制服中文欧美| 成人在线精品视频| 国产va在线视频| 深夜精品寂寞黄网站在线观看| 午夜精品久久久久久久爽 | 99热这里只有精品99| 午夜精品福利视频网站| 国产视频三区四区| 国产成人在线免费| 日韩在线xxx| 欧美xxx在线观看| 欧美日韩精品久久| 电影91久久久| 啪一啪鲁一鲁2019在线视频| 成人看av片| 亚洲美女av在线播放| 国产99视频在线| 色av一区二区| 久久久一区二区三区四区| 中文字幕精品一区二区三区精品| 韩国三级丰满少妇高潮| 久久亚洲电影| 日韩网站在线免费观看| 欧美hd在线| 老牛影视免费一区二区| 99香蕉久久| 成人黄色大片在线免费观看| 日本综合字幕| 97视频免费观看| 最新黄网在线观看| 尤物tv国产一区| 深夜视频在线免费| 日韩女优电影在线观看| 中文字字幕在线中文乱码| 黄色一区二区在线| 黄色一级视频免费| 国产精品久线在线观看| 熟女俱乐部一区二区| 成人看片黄a免费看在线| 手机免费av片| 奇米777欧美一区二区| ww国产内射精品后入国产| 雨宫琴音一区二区三区| 亚洲在线欧美| 色一区二区三区四区| 日韩动漫在线观看| 宅男在线一区| 久久99国产精品| 加勒比视频一区| 国产精品视频免费观看| 超碰成人在线免费| 福利视频一区二区三区| 日本精品在线观看| 99视频在线播放| 亚洲3区在线| 99国产在线观看| 亚洲经典视频| 高清视频一区二区三区| 亚洲国产精品免费视频| 亚洲va欧美va国产综合久久| 成人国产精品一区二区网站| 91九色视频在线| 国产成人视屏| yellow视频在线观看一区二区| 精品中文在线| 91久久精品一区二区别| 中文字幕视频精品一区二区三区| 91在线在线观看| a看欧美黄色女同性恋| 国产精品区二区三区日本| 久久草在线视频| 久久亚裔精品欧美| 国产一区二区三区四区五区传媒 | 国产原厂视频在线观看| 久久天天躁狠狠躁夜夜躁2014| 成人免费高清| 性欧美视频videos6一9| 中文字幕一区久| 国产精品精品一区二区三区午夜版 | 国产精品麻豆一区二区三区 | 久久综合福利| 人人狠狠综合久久亚洲婷| 一区二区免费在线观看| 中文精品久久| 国产成人无码a区在线观看视频| 美女91精品| 岛国av在线免费| 国产精品77777| 国产夫妻性爱视频| 亚洲国产成人私人影院tom| 小泽玛利亚一区二区免费| 亚洲综合一区在线| 久久精品视频7| 欧美日韩视频在线观看一区二区三区 | 欧美一级视频精品观看| 人成网站在线观看| 亚洲香蕉av在线一区二区三区| 黄色在线论坛| 78色国产精品| 亚洲aⅴ网站| 激情五月综合色婷婷一区二区| 国产一区毛片| 日韩精品免费一区| 久久天堂精品| 性生交大片免费看l| 久久久91精品国产一区二区精品| 久久久久麻豆v国产| 亚洲成人免费看| 一本一道人人妻人人妻αv| 日韩欧美国产综合| 国产中文字幕在线看| 欧美久久久精品| 春暖花开亚洲一区二区三区| 成人精品水蜜桃| 不卡中文字幕| 欧美亚洲日本一区二区三区| 男男视频亚洲欧美| 五十路六十路七十路熟婆| 国产精品国产三级国产普通话三级 | 欧美黄色小说| 欧美激情久久久久| 国产成+人+综合+亚洲欧美| 都市激情久久久久久久久久久| 精品国产午夜| 国产精品一区二区免费在线观看| 国产一区二区三区四区五区美女| 免费a级黄色片| 亚洲一级二级三级在线免费观看| 亚洲网站在线免费观看| 日韩精品视频在线观看免费| 制服丝袜在线播放| 国产精品久久久久久久av电影 | jizzjizz少妇亚洲水多| 精品久久久久久乱码天堂| 欧美久久视频| 亚洲综合在线一区二区| 国产精品美女一区二区三区| 五月婷婷视频在线| 亚洲电影免费观看高清| 污污片在线免费视频| 国产日韩av在线播放| 欧美在线色图| 噼里啪啦国语在线观看免费版高清版| caoporn国产精品| 久久精品视频8| 精品少妇一区二区三区视频免付费 | 欧美一区二区三区免费观看| 国产精品一区二区中文字幕 | 青青草原国产在线| 成人黄色影片在线| 手机在线电影一区| 欧美三级理论片| 国产婷婷一区二区| 中文字幕精品无| 亚洲欧美福利视频| 一二三四视频在线中文| 久久久99爱| 麻豆亚洲精品| 国精产品一区二区三区| 色一情一伦一子一伦一区| 黄色小视频在线观看| 国产不卡av在线| 精品日韩毛片| 五月激情婷婷在线| 亚洲欧美日韩一区二区三区在线观看 | 国产精成人品免费观看| 在线观看日韩av先锋影音电影院| 久久精品国产亚洲a∨麻豆| 欧美制服第一页| 欧美猛男同性videos| 亚洲一区二区三区四区五区xx| 亚洲国产精品成人综合| 91中文字幕在线播放| 操人视频在线观看欧美| 国产成人福利av| 奇米精品一区二区三区| 久久精品一区二区三区不卡牛牛| 日韩黄色一级视频| 尤物九九久久国产精品的分类| 四虎精品在线观看| 成年人深夜视频| 91视频免费播放| 亚洲av综合一区| 久久综合久久八八| 国产女人18毛片水真多18精品| 狠狠97人人婷婷五月| 久久久久高清精品| 亚洲中文字幕一区二区| 欧美第一页在线| 日韩欧美影院| 亚洲视频第二页| 性久久久久久久久久久久| 黄色av免费在线看| 91丨九色丨国产在线| 一本色道88久久加勒比精品| 国产在线综合视频| 欧美一区二区免费观在线| heyzo一区| 亚洲精品视频一区二区三区| 国产精品亚洲一区二区三区妖精| 日韩免费视频一区二区视频在线观看| 国产亚洲人成网站在线观看| 久久久久久亚洲精品美女| www.浪潮av.com| 综合自拍亚洲综合图不卡区| 色欲av永久无码精品无码蜜桃| 国产精品久久久久久搜索| 欧美三级免费| 91精品国自产在线| 精品日韩在线观看| yw.尤物在线精品视频| 僵尸世界大战2 在线播放| 国产精品视频免费看| 污污网站免费在线观看| 国产在线观看一区二区三区|