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

Java內存模型中的三個代

開發 后端
本文介紹Java內存模型中的三個代:年輕代,終身代以及永久代。文中圖示了各個代的默認排列。本文適用于JDK 1.4到JDK6。

之前也介紹過Java內存模型,下面主要介紹Java內存模型中的三個代。Java的內存模型由3個代組成,各個代的默認排列有如下圖(適用JDK1.4.*  到 JDK6):

Java的內存模型

Java 的內存模型分為

Young(年輕代)

Tenured(終身代)

Perm(永久代)

有些舊版本也叫作

New

Old

Perm

叫法不同,表達的意思卻是基本相同。

注意Young(年輕代)還可以分為Eden區和兩個Survivor區(from和to,這兩個Survivor區大小嚴格一至),新的對象實例總是首先放在Eden區,Survivor區作為Eden區和 Tenure(終生代)的緩沖,可以向 Tenure(終生代)轉移活動的對象實例。

Tenure(終生代)中存放生命周期長久的實例對象,但并不是如它的名字那樣是終生的,里面的對象照樣會被回收掉。

Young和Tenure共同組成了堆內存。

Perm(永久代)則是非堆內存的組成部分。主要存放加載的Class類級對象如class本身,method,field等等。

有同學可能已經注意到了,每個代都有的Virtual區又是什么?

我們知道有一些參數可以影響以上各代的大小。

在JVM啟動時,就已經保留了固定的內存空間給Heap內存,這部分內存并不一定都會被JVM使用,但是可以確定的是這部分保留的內存不會被其他進程使用。這部分內存大小由 -Xmx 參數指定。

而另一部分內存在JVM啟動時就分配給JVM,作為JVM的初始Heap內存使用。影響這個的參數是 -Xms ,如果 -Xms 指定的值比-Xmx 的小,那么兩者的差值就是Virtual內存值。隨著程序的運行,Eden區、 Tenured區和Perm區會逐漸使用保留的Virtual空間。

如果沒有具體指定,初始和最大堆內存將根據機器的內存計算得出。參數DefaultInitialRAMFraction DefaultMaxRAMFraction 會影響最終的結果,如下表所示:


Formula Default
initial heap size memory / DefaultInitialRAMFraction memory / 64
maximum heap size MIN(memory / DefaultMaxRAMFraction, 1GB) MIN(memory / 4, 1GB)

可以看到堆內存默認值最大不會超過1G。

JVM會根據堆內存的使用情況自動決定何時擴張和縮減實際堆內存的大小,可以用VM參數 -XX:MinHeapFreeRatio=<minimum>-XX:MaxHeapFreeRatio=<maximum> 使用堆內存空閑百分比來定義,一般在32位機器上的默認值如下:

Parameter Default Value
MinHeapFreeRatio 40
MaxHeapFreeRatio 70
-Xms 3670k
-Xmx 64m

當空閑堆內存所占堆內存百分比低于40%,JVM就會試圖擴張堆內存空間;當空閑堆內存所占堆內存百分比高于70%,JVM就會試圖壓縮堆內存空間。

ps:以上默認值在不同平臺會有不同的值,如果是64位系統,這些值一般需要擴張30%,來容納在64位系統下變大的對象。

加上-XX:NewRatio=3 意味著 young(年輕代) 和 tenured(終生代)的比率是1:3,也就是說,eden區和survivor區容量之和將占總堆內存的1/4。

加上-XX:SurvivorRatio=6 設置eden區和 其中一個survivor space的比率是1:6,也就是說,其中一個survivor space占年輕代1/8的容量 (可以想想為什么不是1/7)。

另外還有 -XX:NewSize -XX:MaxNewSize   指定年輕代的初始值和最大值。

32位系統下默認值如下:


Default Value
Parameter Client JVM Server JVM
NewRatio 8 2
NewSize 2228K 2228K
MaxNewSize not limited not limited
SurvivorRatio 32 32

以上就介紹了Java內存模型的三個代。

【編輯推薦】

  1. Java內存模型詳解
  2. Java與.NET的WebServices相互調用
  3. 在Java中實現DOM文檔和XML文件互相轉換
  4. Java垃圾回收機制淺析
  5. Java基礎教程之事件和監聽器
  6. Java類中域和方法設置中的常見錯誤
責任編輯:yangsai 來源: JavaEye博客
相關推薦

2024-04-24 12:50:46

云端LLMs語言模型

2022-04-02 09:00:00

GitOps開發團隊

2023-04-26 11:14:11

IT領導者遠程工作

2020-06-11 09:00:27

SDN網絡架構網絡

2018-03-01 14:49:53

多云云計算混合云

2013-04-10 18:36:41

2009-07-22 18:08:00

ASP.NET基類

2021-06-16 12:53:57

Java編程語言

2012-01-06 11:13:02

SinatraJava框架

2010-05-19 18:11:05

2013-04-09 17:43:33

2023-11-01 08:07:42

.NETC#

2018-02-25 07:23:23

2010-09-02 16:46:52

SOAP協議

2011-12-20 10:41:36

程序員

2022-02-21 14:14:03

SSH加密密鑰

2022-06-22 08:50:53

ERP系統CTO

2021-12-23 10:05:43

機器學習人工智能黑盒模型

2023-12-25 13:59:14

2022-01-10 11:33:17

Go測試軟件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区在线免费观看 | 国产无套一区二区三区久久 | 一区不卡在线观看 | 天天看夜夜| 色综合天天天天做夜夜夜夜做 | 久久免费精品 | 国产欧美一区二区精品久导航 | 成人动漫视频网站 | 精品乱码一区二区三四区 | 国产精品日韩欧美一区二区三区 | 精品亚洲二区 | 日韩中出 | 卡通动漫第一页 | 亚洲精品乱码久久久久久久久 | 国产精品高潮呻吟久久av黑人 | 久久99精品久久久久 | 成人免费毛片片v | 国产精品区二区三区日本 | 午夜影院在线视频 | 日韩欧美三区 | 中文字幕乱码一区二区三区 | 日日夜夜91 | 成人乱人乱一区二区三区软件 | 久久久久久久久国产精品 | 中文字幕在线三区 | 欧美精品一区二区在线观看 | 国产精品视频在线观看 | 国产一级淫片a直接免费看 免费a网站 | 欧美日韩国产在线观看 | 国产网站在线免费观看 | 日日干日日射 | 99在线精品视频 | 成人片免费看 | 国产精品成人一区二区三区夜夜夜 | 久久久精品影院 | 亚洲+变态+欧美+另类+精品 | 亚洲美女网站 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 国产精品日韩 | 女女百合av大片一区二区三区九县 | 精品在线一区 |