1. 程式人生 > >GC日誌分析、年輕代、老年代

GC日誌分析、年輕代、老年代

堆記憶體

Java 中的堆是 JVM 所管理的最大的一塊記憶體空間,主要用於存放各種類的例項物件。
在 Java 中,堆被劃分成兩個不同的區域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被劃分為三個區域:Eden、From Survivor、To Survivor。
這樣劃分的目的是為了使 JVM 能夠更好的管理堆記憶體中的物件,包括記憶體的分配以及回收。
堆的記憶體模型大致為:


從圖中可以看出: 堆大小 = 新生代 + 老年代。其中,堆的大小可以通過引數 –Xms、-Xmx 來指定。
本人使用的是 JDK1.6,以下涉及的 JVM 預設值均以該版本為準。
預設的,新生代 ( Young ) 與老年代 ( Old ) 的比例的值為 1:2 ( 該值可以通過引數 –XX:NewRatio 來指定 ),即:新生代 ( Young ) = 1/3 的堆空間大小。
老年代 ( Old ) = 2/3 的堆空間大小。其中,新生代 ( Young ) 被細分為 Eden 和 兩個 Survivor 區域,這兩個 Survivor 區域分別被命名為 from 和 to,以示區分。
預設的,Edem : from : to = 8 : 1 : 1 ( 可以通過引數 –XX:SurvivorRatio 來設定 ),即: Eden = 8/10 的新生代空間大小,from = to = 1/10 的新生代空間大小。
JVM 每次只會使用 Eden 和其中的一塊 Survivor 區域來為物件服務,所以無論什麼時候,總是有一塊 Survivor 區域是空閒著的。
因此,新生代實際可用的記憶體空間為 9/10 ( 即90% )的新生代空間。

相關推薦

GC日誌分析年輕年代

堆記憶體 Java 中的堆是 JVM 所管理的最大的一塊記憶體空間,主要用於存放各種類的例項物件。 在 Java 中,堆被劃分成兩個不同的區域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被劃分為三個區域:Eden、From Sur

JVM記憶體:年輕年代,永久

Java 中的堆是 JVM 所管理的最大的一塊記憶體空間,主要用於存放各種類的例項物件,如下圖所示:  在 Java 中,堆被劃分成兩個不同的區域:新生代 ( Young )、老年代 ( Old)。新生代 ( Young ) 又被劃分為三個區域:Eden、S0、S1。 這樣劃分的目的是

jvm裡面年輕年代,永久,元空間

1.年輕代 年輕代主要有三個區域組成,一個是Eden區域,另一個是存活區1和存活區2。Eden主要負責物件的建立,存活區1和存活2主要負責向老年代普及物件,存活區1和存活區2這兩個區域裡面總存在一個是空的,為什麼這兩個區域裡面有一個空的呢?因為這兩個區域需要負責回收年輕代活躍物件,需要把這些年輕

JVM記憶體中的年輕年代

引言 對於大多數Java應用來說,Java Heap(Java堆)是JVM管理的記憶體中較大的一塊,而且Java Heap是被所有執行緒共享的一塊記憶體區域,於虛擬機器啟動時建立。 而Java堆的唯一目的就是存放物件例項。 由於Java堆是垃圾收集器管理的主要區域,因此

JVM年輕年代,永久詳解

前言 最近被問到了這個問題,解釋的不是很清晰,有一些概念略微模糊,在此進行整理和記錄,分享給大家。本篇文章主要講解記憶體區域的年輕代,老年代和永久代,略微提及一些垃圾回收演算法,下面是正文。 堆整體 堆主要用於存放各種類的例項物件和陣列。在java中被分為兩個區域:年輕代和老年代。在java中還有一個永久

年輕年代GC原理詳細拆解

1、為什麼要對堆記憶體分代     我們先來屢屢,為什麼需要把堆分代?不分代不能完成他所做的事情麼?其實不分代完全可以,分代的唯一理由就是優化GC效能。你先想想,如果沒有分代,那我們所有的物件都在一塊,GC的時候我們要找到哪些物件沒用,這樣就會對堆的所有區域進行掃描。而我們的

JVM內存:年輕年代永久(推薦 轉)

回收 以及 平靜的 保持 size 個人 對象更新 you 應用 參考文章: 1.Java 新生代、老年代、持久代、元空間 2.Java內存與垃圾回收調優 3.方法區的Class信息,又稱為永久代,是否屬於Java堆? Java 中的堆是 JVM 所管理的最大的一塊內存空

Java 年輕年老GC

一篇關於gc的文章 http://www.cnblogs.com/hnrainll/archive/2013/11/06/3410042.html   自己的筆記: JVM是用c語言寫的。一般說的JVM是HotSpot。 GC是垃圾回收的意思。 Java的GC對不同存活時長的物件才用不同

(入門貼)JVM堆記憶體相關的啟動引數:年輕年代和永久的記憶體分配

如果想觀察JVM程序佔用的堆記憶體,可以通過命令工具jmap或者視覺化工具jvisualvm.exe。JVM這些啟動引數都擁有預設值,如果想了解JVM的記憶體分配策略,最好手動設定這些啟動引數。再通過

JVM垃圾回收--年輕年老點和持久

就會 為什麽 比例 生命 system 碎片 根據 請求 min 年輕代:   一般情況下,所有新生成的對象首先都是放在年輕代的。年輕代的目的就是盡可能快速的收集掉那些生命周期短的對象。年輕代分三個區。一個Eden區,兩個 Survivor區(分別叫from和to)Eden

ELK6.2.3日誌分析工具搭建JDKElasticsearchKibana安裝(一)

Logstash: Logstash服務的元件,用於處理傳入的日誌。 Elasticsearch: 儲存所有日誌 Kibana : 用於搜尋和視覺化的日誌的Web介面,通過nginx反代 Logstash Forwarder: 安裝在將要把日誌傳送到logstash的伺服器上,作為日誌轉發的道

實時日誌分析系統的架構實現以及思考

1 序 對ETL系統中資料轉換和儲存操作的相關日誌進行記錄以及實時分析有助於我們更好的觀察和監控ETL系統的相關指標(如單位時間某些操作的處理時間),發現系統中出現的缺陷和效能瓶頸。 由於需要對日誌進行實時分析,所以Storm是我們想到的首個框架。Stor

對這個java虛擬機器記憶體的,年輕,年老,永久i,搞不太清楚。年輕年老存放在堆還是棧。新版虛擬機器沒有永久是個啥情況

1.什麼是jvm?(1)jvm是一種用於計算裝置的規範,它是一個虛構出來的機器,是通過在實際的計算機上模擬模擬各種功能實現的。(2)jvm包含一套位元組碼指令集,一組暫存器,一個棧,一個垃圾回收堆和一個儲存方法域。(3)JVM遮蔽了與具體作業系統平臺相關的資訊,使Java

Jave虛擬機器劃分的三個年輕年老和持久

虛擬機器中的共劃分為三個代:         年輕代(Young Generation)、年老代(Old Generation)和持久代(Permanent  Generation)。其中持久代主要存放的是Java類的類資訊,與垃圾收集要收集的Java物件關係 不大。年輕代和年老代的劃分是對垃 圾收集影響

JVM-GC日誌分析

pre cat erb 說明 times 參數 區域 meta vivo 程序運行時配置如下參數: -Xms20M -Xmx20M -Xmn10M -verbose:gc -XX:+PrintGCDetails -XX:SurvivorRatio=8 -XX:+Print

Elasticsearch Log GC 日誌分析詳解

如果你關注過 elasticsearch 的日誌,可能會看到如下類似的內容: [2018-06-30T17:57:23,848][WARN ][o.e.m.j.JvmGcMonitorService] [qoo--eS] [gc][228384] overhead, spent [2.2s]

python3自學筆記4-切片列表生成式生成器和迭

目錄切片迭代列表生成式生成器迭代器 切片 1、Python提供了切片(Slice)操作符:; 2、list可以進行切片操作: # 生成列表 >>> L = list(range(100)) >>> L [0, 1, 2, 3,

常見軟體開發模型對比:瀑布螺旋敏捷

一、瀑布模型 模型說明 瀑布模型是將軟體生存週期的各項活動規定為按固定順序而連線的若干階段工作,形如瀑布流水,最終得到軟體產品。 1970年溫斯頓·羅伊斯(Winston Royce)提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被廣泛採用的軟體開發模型。 核心思想:瀑布模型核心思想是按

Parallel Scavenge收集器-GC日誌分析

1) jvm引數配置                  預設使用的就是Parallel Scavenge收集器             &nb