日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
一篇了解JVM堆(Heap),你學(xué)會(huì)了嗎?

1.JVM堆的概念

2.JVM堆的特點(diǎn)

堆內(nèi)存的存儲(chǔ)特點(diǎn):先進(jìn)先出,后進(jìn)后出。

堆是JVM占用區(qū)域最大的一塊,并且在運(yùn)行時(shí)動(dòng)態(tài)地分配內(nèi)存大小。

線(xiàn)程共享,整個(gè) Java 虛擬機(jī)運(yùn)行過(guò)程中只會(huì)有一個(gè)堆,所有的線(xiàn)程都訪(fǎng)問(wèn)同一個(gè)堆。而JVM中的程序計(jì)數(shù)器、Java 虛擬機(jī)棧、本地方法棧都是一個(gè)線(xiàn)程對(duì)應(yīng)一個(gè)。

虛擬機(jī)啟動(dòng)的時(shí)候創(chuàng)建堆。

堆是JVM中涉及垃圾回收的主要場(chǎng)所。

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

JVM規(guī)范規(guī)定堆可以處于物理上不連續(xù)的內(nèi)存空間中,但在邏輯上它應(yīng)該被視為連續(xù)的。

關(guān)于 Survivor(幸存區(qū)) s0,s1 區(qū): 復(fù)制之后有交換,誰(shuí)空誰(shuí)是 to。

3.JVM堆的內(nèi)部結(jié)構(gòu)

3.1 組成

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

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

JDK1.7堆內(nèi)部組成:

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

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

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

堆內(nèi)存的實(shí)際大小=新生代的大小+老年代的大小。

3.2 堆內(nèi)存內(nèi)部空間所占比例

新生代與老年代的默認(rèn)比例: 1:2。

新生代區(qū)的默認(rèn)比例是:8:1:1。

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

3.3 永久代和元空間區(qū)別

永久代:使用的是JVM的內(nèi)存;存儲(chǔ)字符串和數(shù)組容易出現(xiàn)性能和內(nèi)存溢出問(wèn)題,大小不好指定,GC復(fù)雜度高。

元空間:不再使用JVM的內(nèi)存而是使用計(jì)算機(jī)本地內(nèi)存,元空間大小只受本地內(nèi)存限制。

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

4.堆空間的大小設(shè)置

-Xms:表示堆區(qū)的初始內(nèi)存,等價(jià)于 -XX:InitialHeapSize。

-Xmx :表示堆區(qū)的最大內(nèi)存,等價(jià)于 -XX:MaxHeapSize。

注意:如果堆中的內(nèi)存大小超過(guò) “-Xmx" 所指定的最大內(nèi)存值的時(shí)候,將會(huì)拋出 OutOfMemoryError 異常。

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

默認(rèn)情況下:

  • 初始內(nèi)存:物理電腦內(nèi)存大小 / 64。
  • 最大內(nèi)存:物理電腦內(nèi)存大小 / 4。

5.堆空間垃圾回收

堆空間的垃圾回收有三種機(jī)制,MinorGC,MajorGC,F(xiàn)ullGC。

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

Major GC:清理老年代內(nèi)存空間,當(dāng)老年代空間不夠時(shí),JVM會(huì)在老年代進(jìn)行Major GC。

Full GC:清理JVM整個(gè)堆內(nèi)存空間,包括年輕代和老年代空間。


本文標(biāo)題:一篇了解JVM堆(Heap),你學(xué)會(huì)了嗎?
網(wǎng)頁(yè)地址:http://m.5511xx.com/article/copgded.html