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

一篇了解JVM堆(Heap),你學會了嗎?

開發 前端
清理年輕代內存空間(包括 Eden 和 Survivor 區域),釋放在Eden中所有不活躍的對象,釋放后若Eden空間還不滿足以放入新對象,JVM會試圖將部分Eden中活躍對象放入Survivor區。

1.JVM堆的概念

JVM中的堆是用來存放對象的內存空間,幾乎所有的Java對象、數組都存儲在JVM的堆內存中。比如當我們new一個對象或者創建一個數組的時候,就會在堆內存中分配出一段空間用來存放。類加載器讀取了類文件后,需要把類、方法、常變量放到堆內存中,保存所有引用類型的真實信息,便于后續的執行。

2.JVM堆的特點

堆內存的存儲特點:先進先出,后進后出。

堆是JVM占用區域最大的一塊,并且在運行時動態地分配內存大小。

線程共享,整個 Java 虛擬機運行過程中只會有一個堆,所有的線程都訪問同一個堆。而JVM中的程序計數器、Java 虛擬機棧、本地方法棧都是一個線程對應一個。

虛擬機啟動的時候創建堆。

堆是JVM中涉及垃圾回收的主要場所。

堆可分為新生代(Eden 區:From Survior,To Survivor)、老年代。

JVM規范規定堆可以處于物理上不連續的內存空間中,但在邏輯上它應該被視為連續的。

關于 Survivor(幸存區) s0,s1 區: 復制之后有交換,誰空誰是 to。

3.JVM堆的內部結構

3.1 組成

堆內存邏輯上由新生代 ( Young )、老年代 ( Old )、永久代(Perm)組成。

新生代 ( Young )包括:Eden、From Survivor(From幸存區)和To Survivor(To幸存區)組成。

JDK1.7堆內部組成:

圖片

JDK1.8 堆內部組成,其中永久代(Perm)換成了元空間。

圖片

堆內存邏輯角度::堆=新生代+老年代+永久代或者元空間;

堆內存物理角度:由新生代 ( Young )和老年代 ( Old )組成,公式如下:

堆內存的實際大小=新生代的大小+老年代的大小。

3.2 堆內存內部空間所占比例

新生代與老年代的默認比例: 1:2。

新生代區的默認比例是:8:1:1。

說明:在 HotSpot 中,Eden 空間和另外兩個 SurvIvor 空間缺省所占的比例是 8:1:1。

3.3 永久代和元空間區別

永久代:使用的是JVM的內存;存儲字符串和數組容易出現性能和內存溢出問題,大小不好指定,GC復雜度高。

元空間:不再使用JVM的內存而是使用計算機本地內存,元空間大小只受本地內存限制。

元空間的設置參數:-XX:MetaspaceSize(初始值值)和-XX:MaxMetaspaceSize(最大值)。

4.堆空間的大小設置

-Xms:表示堆區的初始內存,等價于 -XX:InitialHeapSize。

-Xmx :表示堆區的最大內存,等價于 -XX:MaxHeapSize。

注意:如果堆中的內存大小超過 “-Xmx" 所指定的最大內存值的時候,將會拋出 OutOfMemoryError 異常。

說明:一般情況下會將 -Xms 和 -Xmx 兩個參數配置相同的值,其目的是為了能夠在 java 垃圾回收機制清理完堆區后避免重新分隔計算堆區的大小,從而提高性能。

默認情況下:

  • 初始內存:物理電腦內存大小 / 64。
  • 最大內存:物理電腦內存大小 / 4。

5.堆空間垃圾回收

堆空間的垃圾回收有三種機制,MinorGC,MajorGC,FullGC。

Minor GC:清理年輕代內存空間(包括 Eden 和 Survivor 區域),釋放在Eden中所有不活躍的對象,釋放后若Eden空間還不滿足以放入新對象,JVM會試圖將部分Eden中活躍對象放入Survivor區。Survivor區被用來作為Eden及老年代的中間交換區域,如果老年代空間滿了,Survivor區的對象會被移到老年代,否則會被保留在Survivor區。

Major GC:清理老年代內存空間,當老年代空間不夠時,JVM會在老年代進行Major GC。

Full GC:清理JVM整個堆內存空間,包括年輕代和老年代空間。

責任編輯:武曉燕 來源: IT技術分享社區
相關推薦

2023-08-28 07:02:10

2023-05-29 07:43:32

JVM內存調優

2023-05-09 08:25:26

Gaussdb數據庫開源數據庫

2024-05-10 08:19:59

arthasjava字節碼

2022-10-26 11:37:08

數據分析方法報告

2023-07-31 07:33:05

JVM調優Full GC

2024-11-13 11:12:08

JVM內存區域

2024-01-19 08:25:38

死鎖Java通信

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具

2023-01-10 08:43:15

定義DDD架構

2023-08-01 12:51:18

WebGPT機器學習模型

2024-01-02 12:05:26

Java并發編程

2024-09-26 09:10:08

2023-07-31 07:48:43

Java內存虛擬機

2023-10-10 11:04:11

Rust難點內存

2024-05-06 00:00:00

InnoDBView隔離

2024-07-31 08:39:45

Git命令暫存區

2023-01-30 09:01:54

圖表指南圖形化

2022-07-08 09:27:48

CSSIFC模型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一区二区三区在线播放 | 99久久精品视频免费 | 在线一区二区三区 | 天天宗合网 | 综合网在线 | 成人一区二区三区在线观看 | 99久久亚洲 | 一区二区三区国产好 | 日韩中文字幕 | 激情五月婷婷丁香 | 天堂av影院 | 视频在线一区二区 | 亚洲综合视频一区 | 久久久在线视频 | 毛片免费在线观看 | 久久精品青青大伊人av | 国产一区二区三区视频免费观看 | a级大片| 一区二区在线免费观看 | 在线成人免费视频 | 日韩成人免费视频 | 一区二区三区成人 | 午夜视频一区二区 | 9999视频| 中文精品视频 | 精品伊人久久 | 日本精品视频 | 免费在线一区二区 | 久久9热 | 亚洲高清三级 | 亚洲免费在线观看 | 中文字幕亚洲一区二区va在线 | 亚洲一区二区三区四区av | 欧美日韩91 | 亚洲一区二区三区在线 | 高清视频一区二区三区 | 亚洲精品专区 | 欧美日韩精品免费观看 | 国产一区二区三区 | av无遮挡 | 久久一区二区三区四区五区 |