JVM效能調優2:JVM效能調優引數整理
在一次理想化的minor gc中,Eden和First Survivor中的活躍物件會被複制到Second Survivor。然而,Second Survivor不一定能容納下所有從E和F區copy過來的活躍物件。為了確保minor gc能夠順利完成,GC需要在年老代中額外保留一塊足以容納所有活躍物件的記憶體空間。這個預留操作,就被稱之為新生代收集擔保(New Generation Guarantee)。如果預留操作無法完成時,仍會觸發major gc(full gc)。
為什麼要關閉新生代收集擔保?
因為在年老代中預留的空間大小,是無法精確計算的。為了確保極端情況的發生,GC參考了最壞情況下的新生代記憶體佔用,即Eden+First Survivor。這種策略無疑是在浪費年老代記憶體,從時序角度看,還會提前觸發Full GC。為了避免如上情況的發生,JVM允許開發者手動關閉新生代收集擔保。在開啟本選項後,minor gc將不再提供新生代收集擔保,而是在出現survior或年老代不夠用時,丟擲promotion failed異常。
相關推薦
JVM效能調優2:JVM效能調優引數整理
關閉新生代收集擔保。 在一次理想化的minor gc中,Eden和First Survivor中的活躍物件會被複制到Second Survivor。然而,Second Survivor不一定能容納下所有從E和F區copy過來的活躍物件。為了確保minor gc能夠順利完成,GC需要在年老代中額外保留一塊
Spark效能優化篇三:資料傾斜調優
方案實現思路:這個方案的核心實現思路就是進行兩階段聚合。第一次是區域性聚合,先給每個key都打上一個隨機數,比如10以內的隨機數,此時原先一樣的key就變成不一樣的了,比如(hello, 1) (hello, 1) (hello, 1) (hello, 1),就會變成(1_hello, 1) (1_hello
深入理解JAVA虛擬機器2:JVM記憶體結構
記憶體結構一覽 在上一篇文章中,我們最後給出了一幅圖 這幅圖中,就包含了JVM的記憶體結構的所有組成元素,他們分別是:java堆記憶體、java棧、方法區、本地方法區以及pc暫存器,接下來我們就對這些區域逐一介紹。 java堆 Java堆是Java虛擬
深入理解JVM虛擬機器2:JVM垃圾回收基本原理和演算法
JVM GC基本原理與GC演算法 Java的記憶體分配與回收全部由JVM垃圾回收程序自動完成。與C語言不同,Java開發者不需要自己編寫程式碼實現垃圾回收。這是Java深受大家歡迎的眾多特性之一,能夠幫助程式設計師更好地編寫Java程式。 下面四篇教程是瞭解Jav
性能調優2:CPU
屬於 工作 針對 傳參 png count 就會 除了 -h 關系型數據庫嚴重依賴底層的硬件資源,CPU是服務器的大腦,當CPU開銷很高時,內存和硬盤系統都會產生不必需要的壓力。CPU的性能問題,直觀來看,就是任務管理器中看到的CPU利用率始終處於100%,而偵測CPU壓力
JVM系列第8講:JVM 垃圾回收機制
在第 6 講中我們說到 Java 虛擬機器的記憶體結構,提到了這部分的規範其實是由《Java 虛擬機器規範》指定的,每個 Java 虛擬機器可能都有不同的實現。其實涉及到 Java 虛擬機器的記憶體,就不得不談到 Java 虛擬機器的垃圾回收機制。因為記憶體總是有限的,我們需要一個機制來不斷地回收廢棄的記憶體
JVM系列第9講:JVM垃圾回收器
前面文章中,我們介紹了 Java 虛擬機器的記憶體結構,Java 虛擬機器的垃圾回收機制,那麼這篇文章我們說說具體執行垃圾回收的垃圾回收器。 總的來說,Java 虛擬機器的垃圾回收器可以分為四大類別:序列回收器、並行回收器、CMS 回收器、G1 回收器。 序列回收器 序列回收器是指使用單執行緒進行垃圾回
【JVM第十三篇】:JVM的類載入機制
一. 前言 我們知道,Java原始碼(.java檔案)需要通過編譯器編譯成位元組碼檔案(.class)後由類裝載子系統(ClassLoader)載入執行時資料區(<jdk1.8之前是載入方法區,>=jdk1.8以後是載入元資料區)才能被後續的Java執行程式(執行緒)正常使用
JVM系列第12講:JVM引數之檢視JVM引數
今天要說的是如何檢視 JVM 中已經設定的引數,包括顯示引數和隱式引數。 列印顯式引數 -XX:+PrintVMOptions 該引數表示程式執行時,列印虛擬機器接受到的命令列顯式引數。我們用下面的命令執行程式: java -XX:+UseSerialGC -XX:+PrintVMOptions co
JVM系列第14講:JVM引數之GC日誌配置
說到 Java 虛擬機器,不得不提的就是 Java 虛擬機器的 GC(Garbage Collection)日誌。而對於 GC 日誌,我們不僅要學會看懂,而且要學會如何設定對應的 GC 日誌引數。今天就讓我們來學習一下 Java 虛擬機器中所有與 GC 日誌有關的引數。相信掌握了這些引數之後,對於大家線上列印
JVM系列第13講:JVM引數之追蹤類資訊
我們都知道 JVM 在啟動的時候會去載入類資訊,那麼我們怎麼得知他載入了哪些類,又解除安裝了哪些類呢?我們這一節就來介紹四個 JVM 引數,使用它們我們就可以清晰地知道 JVM 的類載入資訊。 為了方便演示,我們使用下面的程式作為本次的演示程式。 /** * @author chenshuyi * @
JVM系列第7講:JVM 類載入機制
當 Java 虛擬機器將 Java 原始碼編譯為位元組碼之後,虛擬機器便可以將位元組碼讀取進記憶體,從而進行解析、執行等整個過程,這個過程我們叫:Java 虛擬機器的類載入機制。JVM 虛擬機器執行 class 位元組碼的過程可以分為七個階段:載入、驗證、準備、解析、初始化、使用、解除安裝。 在開始聊之前,先
JVM效能調優監控工具專題一:JVM自帶效能調優工具
前提概要: JDK本身提供了很多方便的JVM效能調優監控工具,除了整合式的VisualVM和jConsole外,還有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,每一種工具都有其自身的特點,使用者可以根據你需要檢測的應用或者程式片段的狀況,適
Spark效能優化:JVM引數調優
關於JVM垃圾回收種類 Minor GC 從年輕代空間(包括 Eden 和 Survivor 區域)回收記憶體被稱為 Minor GC。這一定義既清晰又易於理解。但是,當發生Minor GC事件的
Java效能優化必知的50個細節(珍藏版):Jvm調優+MySQL+Tomcat
開發十年,就只剩下這套架構體系了! >>>
【JAVA進階架構師指南】之五:JVM效能調優
## 前言 首先給大家說聲對不起,最近屬實太忙了,白天上班,晚上加班,回家還要收拾家裡,基本每天做完所有事兒都是凌晨一兩點了,沒有精力再搞其他的了. 好了,進入正題,讓我們來聊聊JVM篇最後一個章節----JVM效能調優.童鞋們隨便開啟一個大廠的招聘崗位JD,應該都會有JVM調優相關的描述,其實招
Java效能優化系列二(jvm記憶體調優)
首先需要注意的是在對JVM記憶體調優的時候不能只看作業系統級別Java程序所佔用的記憶體,這個數值不能準確的反應堆記憶體的真實佔用情況,因為GC過後這個值是不會變化的,因此記憶體調優的時候要更多地使用JDK提供的記憶體檢視工具,比如JConsole和Java VisualVM(jvisua
jvm調優實戰,定位效能瓶頸
玩過效能優化的朋友都清楚,效能優化的關鍵並不在於怎麼進行優化,而在於怎麼找到當前系統的效能瓶頸。效能優化分為好幾個層次,比如系統層次、演算法層次、程式碼層次…JVM 的效能優化被認為是底層優化,門檻較高,精通這種技能的人比較少。筆者呆過幾家技術力量不算弱的公司,每個公司內部真
JVM垃圾回收分代機制及效能調優
JVM Specification中的JVM整體架構 主要包括兩個子系統和兩個元件,Class Loader(類裝載)子系統,Execution Engine(執行引擎)子系統,Runtime Data Area(執行時資料區)元件,Native Interface(本地介面)元件。 Cl
JVM調優系列:(五)JVM常用調試參數和工具
框架 break 統計 進程 -i 內存 文件的 /etc/ action 轉自:http://blog.csdn.net/opensure/article/details/46715769 JVM常用調試參數: –verbose:gc在虛擬機發生內存