1. 程式人生 > >JAVA GC調優零碎記錄

JAVA GC調優零碎記錄

是否需要進行GC調優

決定是否進行Java GC調優,前提是主要看新生代的Minor GC和老年代的FULL GC 的GC頻率和每次GC停頓的時間對於業務來說是否可接受,一般滿足以下條件,可不用考慮GC調優(僅參考,具體還要看業務)

1      MinorGC執行的很快(小於50ms

2      MinorGC執行的並不頻繁(大概10秒一次)

3      FullGC執行的很快(小於1s

4      FullGC執行的並不頻繁(10分鐘一次)

如何監控

1、啟動時指定引數,打印出日誌

-Xloggc:/var/log/hadoop-hdfs/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps

2、使用命令列

 jstat -gc  26990 1000 10 (每秒展示一次,總共展示10次,記憶體各區使用情況及總的GC情況)

//檢視記憶體實際使用類,物件
jmap -heap 25856 (在CMS GC的情況下可能造成程序掛起,檢視記憶體各區域used,free情況,以及記憶體引數配置,執行很快)
jmap -histo -F 4191 (能查到在記憶體裡哪些類,類有多少例項,佔多少空間,注意使用該命令時,比較慢,程序暫停對外工作)
 
jmap –dump:format=b,file=test.bin 3500 //生成dump檔案,可再用visualvm視覺化分析?在java bin目錄下有jvisualvm,若無響應指定-F,用jhat分析dump檔案功能比較弱, -dump:[live,]format=blive指定只輸出活的物件到檔案
 
//檢視虛擬機器內部執行緒
jstack -l -F 22595   (注意執行比較慢)
//檢視jvm顯示指定的引數和隱式的預設引數

Jps –v //檢視各個程序的顯示引數
Jinfo –flag CMSInitiatingOccupancyFractionpid (檢視某個程序某個引數值)

如何調優

目前調優主要還是針對JVM引數進行調整,針對自己的業務考慮 1、選擇哪種垃圾收集器 比較成熟使用較多的是parallel gc 、CMS gc,尤其CMS GC停頓時間較短,實際使用更為常見,而G1 GC停頓時間更短,也沒有CMS GC記憶體碎片問題,但是穩定性還未可知,並且佔用記憶體會更多,所以目前階段只是不是GC出現嚴重問題,一般不選擇G1 GC 2、怎麼調整引數 比較重要的是針對新生代和老年代的空間分配大小找個折中點, 如果發現FULL GC執行頻率能接受,但是一旦GC發行停頓時間很長,可適當減小老年代的空間大小,相反執行頻率過快,單次停頓較短,是否該考慮調大老年代空間,新生代同理 如果使用的是CMS GC垃圾收集器,會產生記憶體碎片問題,可設定多少次FULL GC以後進行一次碎片整理 3、應用層去調優減少不必要的物件生成,或者啟用多個JVM例項,避免單個JVM例項大記憶體GC問題

相關推薦

JAVA GC調零碎記錄

是否需要進行GC調優 決定是否進行Java GC調優,前提是主要看新生代的Minor GC和老年代的FULL GC 的GC頻率和每次GC停頓的時間對於業務來說是否可接受,一般滿足以下條件,可不用考慮GC調優(僅參考,具體還要看業務) 1      MinorGC執行的很快

Java GC調

元空間 閾值 含義 nor mod 目標 還需 業務安全 占用空間 當Java程序性能達不到既定目標,且其他優化手段都已經窮盡時,通常需要調整垃圾回收器來進一步提高性能,稱為GC優化。但GC算法復雜,影響GC性能的參數眾多,且參數調整又依賴於應用各自的特點,這些因素很大程度

性能測試系列-java gc調

操作 發生 失敗 應用 目標 社區 為什麽 不知道 current 性能測試中除了需要做好性能測試外,我們還需要做性能測試後的,性能調優,需要發現性能問題,也需要做性能調優,在做性能調優中,jvm的性能調優是經常遇到的一個。 隨著jdk版本的迅速變化,jdk裏面的GC算法也

效能測試系列-java gc調

效能測試中除了需要做好效能測試外,我們還需要做效能測試後的,效能調優,需要發現效能問題,也需要做效能調優,在做效能調優中,jvm的效能調優是經常遇到的一個。 隨著jdk版本的迅速變化,jdk裡面的GC演算法也是發生了很多變化,新版的jdk中,G1的已經成了jdk的預設演算法了,效能測試中,我們經常關注的比較多

針對HBase的Java GC調

文章是由Intel的Java效能架構師(Java performance architect)Eric Kaczmared發表,用於探索如何對HBase進行Java GC調優,全文的測試基於YCSB 100% Read進行測試。 Apache HBase是一個有Apache基金會開源,提供Nos

JVM GC調(2)-----GC演算法判定物件可以被回收(部分摘自深入理解Java虛擬機器)

這次我們介紹JVM中的GC演算法 引用計數法 可達性分析法 首先我們提出四個問題 哪裡的記憶體需要回收? 什麼時候回收? 如何回收? Java與C++之間有一堵由記憶體動態分配和垃圾收集技術所圍成的“高牆”, 牆外面的人想進去, 牆裡面的人卻想出來。

JVM GC調(3)-----GC演算法(部分摘自深入理解Java虛擬機器)

介紹幾種GC演算法的思想及其發展過程: 標記-清除 複製 標記-壓縮 分代收集演算法 GC演算法主要是用於堆死亡物件的清理的集中方式,他們各有優缺點,下面我們開始做介紹 標記清除演算法 原理解析 -最基礎的收集演算法是“標記-清除”( Mark-Swe

Java 9 中的 GC 調基礎

在經過了幾次跳票之後,Java 9終於在原計劃日期的整整一年之後釋出了正式版。Java 9引入了很多新的特性,除了閃瞎眼的Module System和REPL,最重要的變化我認為是預設GC(Garbage Collector)修改為新一代更復雜、更全面、效能更好的G1(Gar

java虛擬機-GC-調

最小 次數 n) 選擇 內存碎片 tails 最優 統計 收集器 1. 年輕代大小選擇 * 響應時間優先的應用:盡可能設大,直到接近系統的最低響應時間限制(根據實際情況選擇)。在此種情況下,年輕代收集發生的頻率也是最小的。同時,減少到達年老代的對象。 * 吞吐量優

6. GC 調(工具篇) - GC參考手冊

統一 行為 png 永久代 搜索 最大值 自己 跟蹤 err 進行GC性能調優時, 須要明白了解, 當前的GC行為對系統和用戶有多大的影響。有多種監控GC的工具和方法, 本章將逐一介紹經常使用的工具。 您應該已經閱讀了前面的章節: 垃圾收集簡單介

ORACLE sql調記錄一次trim函數引發的大表全表掃描

oracle trim 全表掃描 sql 調優 2017年8月14日,一地市oracle相關的調度程序ETL抽取速度奇慢,sql語句每次執行平均時間要9秒左右,如果所示:該調度過程涉及的sql語句如下:select count(*) from (SELECT rtrim(

GC調在Spark應用中的實踐(轉載)

avg fix 時也 net aso 會有 介紹 完整 頻繁 Spark是時下非常熱門的大數據計算框架,以其卓越的性能優勢、獨特的架構、易用的用戶接口和豐富的分析計算庫,正在工業界獲得越來越廣泛的應用。與Hadoop、HBase生態圈的眾多項目一樣,Spark的運行離不開J

記一次線上gc調的過程

aspect hash 接下來 JD lac abs rac 數據庫 %x 近期公司運營同學經常表示線上我們一個後臺管理系統運行特別慢,而且經常出現504超時的情況。對於這種情況我們本能的認為可能是代碼有性能問題,可能有死循環或者是數據庫調用次數過多導致接口運

JVM層GC調(上)

gist 記錄 meet 官方文檔 官網 核心數 這樣的 特殊 編寫 JVM內存結構簡介(jdk1.8) JVM層的GC調優是生產環境上必不可少的一個環節,因為我們需要確定這個進程可以占用多少內存,以及設定一些參數的閥值。以此來優化項目的性能和提高可用性,而且這也是在面試中

JVM層GC調(下)

日誌分析工具 f11 hub xpl aec 發現 gen sta abc GC日誌格式 本文是 JVM層GC調優(上) 的後續,在上一篇文章中,我們介紹了JVM的內存結構、常見的垃圾回收算法以及垃圾收集器和不同收集器中的一些GC調優參數。所以通過上文,我們也對GC相關的內

jvm性能監控與GC調

builder mat ont cati 顯示 %20 系統 處理 port 目錄 一 提出問題 二 基於JDK命令行工具的監控 1. JVM的三種參數類型 1.1 標準參數 1.2 X 參數 1.3 XX 參數 1.4 常用命令 2. jstat查看虛擬機統計信息 2

gc調

進行GC效能調優時, 需要明確瞭解, 當前的GC行為對系統和使用者有多大的影響。有多種監控GC的工具和方法, 本章將逐一介紹常用的工具。 您應該已經閱讀了前面的章節: 垃圾收集簡介 - GC參考手冊 Java中的垃圾收集 - GC參考手

第一章 Java效能調概述

效能概述 看懂程式的效能 一般來說,程式的效能能通過以下幾個方面來表現: 執行速度:程式的反映是否迅速,響應時間是否足夠短 記憶體分配:記憶體分配是否合理,是否過多地消耗記憶體或者存在洩漏 啟動時間:程式從執行到可以正常處理業務需要花費多長時間 負責承受能力:當系統壓力上升時,系統的執

Java效能調概述

目錄 Java效能調優概述 效能優化有風險和弊端,效能調優必須有明確的目標,不要為了調優而調優!!!盲目調優,風險遠大於收益!!! 程式效能的主要表現點 執行速度:程式的反映是否迅速,響應時間是否足夠短 記憶體分配:記憶體分配是否合理,是否過多地消耗記憶體或者存在記憶體洩漏

HotSpot虛擬機器GC調指南

原文:https://docs.oracle.com/javase/9/gctuning/JSGCT.pdf 1簡介 從桌面小程式applet到大型伺服器上的Web服務,有各種各樣的應用程式在使用Java平臺,標準版(Java SE)。為了支援這些不同種類的部署,Jav