成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

揭秘HotSpot JVM:探索內存區域劃分細節

開發 前端
直接內存也是受本機物理內存限制,在 JDK4 中引入了基于通道與緩沖區的 NIO,它可以利用 Native 函數庫直接分配堆外內存,然后通過堆內的 DirectByteBuffer 對象引用這塊堆外內存。

棧與堆

HotSpot 在虛擬機棧和本地方法棧的實現上,直接將二者合二為一,也就是說使用同一個棧來支持 Java 方法和本地方法的執行,下文以 Java 棧代稱。

并且在 HotSpot 的實現中 Java 棧是不支持動態擴展的,也就是說 Java 棧通常只會拋出 SOF(StackOverflowError)異常,除非在啟動線程申請內存時就因無法獲取足夠的內存而出現 OOM(OutOfMemoryError)異常。

上一篇說過“幾乎”所有的對象實例都在堆里分配內存,那么為什么說是“幾乎”呢?

刨除邏輯上歸屬于方法區的靜態變量不談,HotSopt 虛擬機中存在 JIT 即時編譯,在即時編譯的過程中,會進行逃逸分析,當發現一個局部對象并沒有逃逸到方法和線程之外,那么這個對象就可能不在堆上分配內存,而是在棧上分配內存。

方法區的不同版本實現

方法區是 JVM 規范中定義的一個概念,不同的廠商在實現虛擬機的時候有不同的落地實現。

即使在 HotSpot 虛擬機中,不同的版本也有不同的實現方式,在 JDK6 的時候方法區的落地實現是永久代(PermGen)。

圖片圖片

在 JDK7 的時候方法區的落地實現仍是永久代,但是發生了一些變化,JDK7 將存儲在永久代的字符串常量池、靜態變量遷出,存儲到了堆區。

圖片圖片

在 JDK8 的時候 HotSpot 虛擬機完全舍棄了永久代的落地實現,改用元空間落地實現。并且 JDK8 將元空間從虛擬機運行時數據區遷到了本地內存中。

圖片圖片

個人理解,JDK8 之前方法區采用永久代實現,因為永久代有 -XX:MaxPermSize 上限,并且這個參數即使不設置也會有默認值,所以容易發生 OOM 異常。

于是 JDK7 就將永久代中的字符串常量池、靜態變量遷出,但 OOM 問題處理可能仍未達到預期,最終在 JDK8 采用在本地內存中實現的元空間作為方法區的落地實現。

在這個過程中,-XX:PermSize 和 --XX:MaxPermSize JVM 參數也隨之失效,改為通過--XX: MetaspaceSize 和 -XX:MaxMetaspaceSize 來設置元空間參數。

本地內存和直接內存

最后,我們來介紹一下本地內存和直接內存。個人理解,截止 JDK8,Java 程序內存應該是包含 JVM 內存和本地內存,本地內存狹義上又包含元空間和直接內存(二者存儲在同一塊區域,只是作用上不一致)。

本地內存

本地內存并不是虛擬機運行時數據區的一部分,也不是《Java 虛擬機規范》中定義的內存區域。

這塊區域直接受本機物理內存限制,當申請的內存超過了本機物理內存,才會拋出 OOM 異常。

直接內存

直接內存也是受本機物理內存限制,在 JDK4 中引入了基于通道與緩沖區的 NIO,它可以利用 Native 函數庫直接分配堆外內存,然后通過堆內的 DirectByteBuffer 對象引用這塊堆外內存。

避免了傳輸的數據在堆和堆外來回復制,顯著的提高了 IO 性能。這塊堆外內存就是直接內存。

責任編輯:武曉燕 來源: Java極客技術
相關推薦

2021-11-26 00:00:48

JVM內存區域

2024-11-13 11:12:08

JVM內存區域

2012-03-05 14:19:26

Java

2010-09-25 12:54:24

JVM內存

2010-02-03 14:10:28

C++內存邏輯區域

2025-03-03 09:05:56

2015-12-28 11:41:57

JVM內存區域內存溢出

2011-06-21 11:16:24

cc++

2011-04-13 16:50:54

CC++內存

2010-09-25 15:19:01

2020-08-10 17:49:25

JVM內存溢出

2019-07-16 14:59:00

JVM內存區域

2020-02-27 13:01:57

JVM內存劃分

2022-07-05 08:34:22

虛擬機JavaJVM

2013-03-29 11:09:17

JVM內存

2018-08-10 22:15:53

2019-11-20 15:02:45

Java虛擬機內存

2009-04-28 13:48:09

2010-01-25 15:40:38

Java 6 u18Hotspot垃圾回收

2020-07-29 14:15:04

JavaJvm算法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人欧美一区二区三区在线播放 | www.788.com色淫免费 | 在线播放一区二区三区 | 欧美日韩福利视频 | 欧美一级免费观看 | 国产精品69av | 玖操| 美女福利视频网站 | 亚洲精品www | 国产激情一区二区三区 | 日本在线视频一区二区 | 成人羞羞国产免费视频 | 每日更新av | 欧美性成人 | xxxxx黄色片 欧美一区免费 | www.色婷婷 | 天天看天天干 | 九九热在线视频免费观看 | 国产精品久久久久久久久久久久久久 | 久久高清免费视频 | 国产精品一二三区 | 欧美精品欧美精品系列 | 中文字幕亚洲精品 | 欧美精品一区二区三区蜜桃视频 | 91tv在线观看 | 日日夜夜精品 | 国产精品久久久久一区二区三区 | 日本三级日产三级国产三级 | 粉色午夜视频 | av在线一区二区三区 | 日韩欧美视频 | 日韩精品一区二区三区在线播放 | 午夜成人免费视频 | 黄色片a级 | 久久久毛片 | xx视频在线 | 91综合网 | 日韩三级一区 | 国产一区二区三区在线 | www.788.com色淫免费 | 国产亚洲精品a |