91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何劃分JVM內存區域

發布時間:2020-07-27 11:47:38 來源:億速云 閱讀:146 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關如何劃分JVM內存區域,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。


1、內存區域的劃分

通常可以把 JVM 內存區域分為下面幾個方面,其中,有的區域是以線程為單位,而有的區域則是整個 JVM 進程唯一的。

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

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

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

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

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

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

2、運行數據區

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

如何劃分JVM內存區域

3、生命周期

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

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

如何劃分JVM內存區域

4、了解JVM內存的方法

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

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

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

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

看完上述內容,你們對如何劃分JVM內存區域有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玉树县| 翁牛特旗| 叙永县| 揭阳市| 西和县| 望谟县| 犍为县| 济南市| 长治县| 武隆县| 巨野县| 留坝县| 上林县| 长武县| 浮梁县| 石棉县| 响水县| 郧西县| 蒲江县| 太保市| 固安县| 海宁市| 河南省| 咸宁市| 郸城县| 无为县| 尉氏县| 光山县| 柳河县| 托克逊县| 车致| 沙雅县| 梁山县| 宿州市| 和田市| 淮滨县| 齐齐哈尔市| 宣汉县| 邵武市| 汉中市| 广德县|