摘要:作用默認(rèn),即,適當(dāng)調(diào)整年輕代大小,可以一定層度上較少出現(xiàn)的概率其余性能調(diào)優(yōu)常用參數(shù)設(shè)置指定的初始和最大堆內(nèi)存大小,兩值可以設(shè)置相同,以避免每次垃圾回收完成后重新分配內(nèi)存。
Java性能優(yōu)化之針對(duì)分代垃圾回收調(diào)整
[TOC]
JVM內(nèi)存的系統(tǒng)級(jí)的調(diào)優(yōu)主要的目的是減少M(fèi)inor GC的頻率和Full GC的次數(shù),過多的Minor GC和Full GC是會(huì)占用很多的系統(tǒng)資源,影響系統(tǒng)的吞吐量。
針對(duì)分代垃圾回收調(diào)整部分參數(shù)年輕代分三個(gè)區(qū),一個(gè)Eden區(qū),兩個(gè)Survivor區(qū)(from和to區(qū)),可以通過-XXSurvivorRatio調(diào)整比例
作用:默認(rèn)-XX:SurvivorRatio=8,表示Survivor區(qū)與Eden區(qū)的大小比值是1:1:8,
在MinorGC過程,如果survivor空間不夠大,不能夠存儲(chǔ)所有的從eden空間和from suvivor空間復(fù)制過來活動(dòng)對(duì)象,溢出的對(duì)象會(huì)被復(fù)制到old代,
溢出遷移到old代,會(huì)導(dǎo)致old代的空間快速增長(zhǎng)。
大部分對(duì)象在先在Eden區(qū)中申請(qǐng)內(nèi)存
作用:可以通過設(shè)置-XX:PreTenureSizeThreShold大小,令大于這個(gè)值的對(duì)象直接保存到年老代,避免在Eden區(qū)與Survivor區(qū)之間頻繁地通過復(fù)制算法回收內(nèi)存
當(dāng)Eden區(qū)滿時(shí),無法為新的對(duì)象分配內(nèi)存時(shí),會(huì)進(jìn)行Minor GC對(duì)其回收無用對(duì)象占用的內(nèi)存,如果還有存活對(duì)象,則將存活的對(duì)象復(fù)制到Survivor From區(qū)(兩個(gè)中Survivor對(duì)稱);然后從Eden區(qū)存活下來的對(duì)象,就會(huì)被復(fù)制到From,當(dāng)這個(gè)From區(qū)滿時(shí),此區(qū)的存活對(duì)象將被復(fù)制到To區(qū),接下來Eden區(qū)存活下來的對(duì)象就會(huì)被復(fù)制到To區(qū),經(jīng)歷一定的次數(shù)Minor GC后,還存活的對(duì)象,將被復(fù)制“年老區(qū)(Tenured)”。
作用:Minor默認(rèn)15次,可通過-MaxTenuringThreshold參數(shù)調(diào)整年輕代回收次數(shù),防止對(duì)象過早進(jìn)入年老代,降低年老代溢出的可能性
年輕代和年老代的默認(rèn)比例為1:2,即年輕代占堆內(nèi)存的1/3,年老代占2/3,可調(diào)整-XX:NewRatio的大小設(shè)置年輕和年老的比例。
作用:默認(rèn)-XX:NewRatio=2,即young:tenured=1:2,適當(dāng)調(diào)整年輕代大小,可以一定層度上較少Full GC出現(xiàn)的概率
其余性能調(diào)優(yōu)常用參數(shù)設(shè)置-Xms and -Xmx (or: -XX:InitialHeapSize and -XX:MaxHeapSize):指定JVM的初始和最大堆內(nèi)存大小,兩值可以設(shè)置相同,以避免每次垃圾回收完成后JVM重新分配內(nèi)存。
-Xmn:設(shè)置年輕代大小。整個(gè)堆大小=年輕代大小 + 年老代大小 + 持久代大小。所以增大年輕代后,將會(huì)減小年老代大小。此值對(duì)系統(tǒng)性能影響較大,Sun官方推薦配置為整個(gè)堆的3/8。
-Xss:設(shè)置每個(gè)線程的堆棧大小。JDK5.0以后每個(gè)線程堆棧大小為1M。在相同物理內(nèi)存下,減小這個(gè)值能生成更多的線程。但是操作系統(tǒng)對(duì)一個(gè)進(jìn)程內(nèi)的線程數(shù)還是有限制的,不能無限生成,經(jīng)驗(yàn)值在3000~5000左右。
-XX:+HeapDumpOnOutOfMemoryError and -XX:HeapDumpPath:讓JVM在發(fā)生內(nèi)存溢出時(shí)自動(dòng)的生成堆內(nèi)存快照(堆內(nèi)存快照文件有可能很龐大,推薦將堆內(nèi)存快照生成路徑指定到一個(gè)擁有足夠磁盤空間的地方。)
-XX:OnOutOfMemoryError:當(dāng)內(nèi)存溢發(fā)生時(shí),我們甚至可以可以執(zhí)行一些指令,比如發(fā)個(gè)E-mail通知管理員或者執(zhí)行一些清理工作($ java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof -XX:OnOutOfMemoryError ="sh ~/cleanup.sh" MyApp)
-XX:PermSize and -XX:MaxPermSize:設(shè)置永久代大小的初始值和最大值(默認(rèn):最小值為物理內(nèi)存的1/64,最大值為物理內(nèi)存的1/16,永久代在堆內(nèi)存中是一塊獨(dú)立的區(qū)域,這里設(shè)置的永久代大小并不會(huì)被包括在使用參數(shù)-XX:MaxHeapSize 設(shè)置的堆內(nèi)存大小中)
-XX:PretenureSizeThreshold :令大于這個(gè)設(shè)置值的對(duì)象直接在老年代分配。這樣做的目的是避免在Eden區(qū)及兩個(gè)Survivor區(qū)之間發(fā)生大量的內(nèi)存復(fù)制
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/72262.html
摘要:性能調(diào)優(yōu)概述性能優(yōu)化有風(fēng)險(xiǎn)和弊端,性能調(diào)優(yōu)必須有明確的目標(biāo),不要為了調(diào)優(yōu)而調(diào)優(yōu)盲目調(diào)優(yōu),風(fēng)險(xiǎn)遠(yuǎn)大于收益程序性能的主要表現(xiàn)點(diǎn)執(zhí)行速度程序的反映是否迅速,響應(yīng)時(shí)間是否足夠短內(nèi)存分配內(nèi)存分配是否合理,是否過多地消耗內(nèi)存或者存在內(nèi)存泄漏啟動(dòng)時(shí)間程序 [TOC] Java性能調(diào)優(yōu)概述 性能優(yōu)化有風(fēng)險(xiǎn)和弊端,性能調(diào)優(yōu)必須有明確的目標(biāo),不要為了調(diào)優(yōu)而調(diào)優(yōu)?。。∶つ空{(diào)優(yōu),風(fēng)險(xiǎn)遠(yuǎn)大于收益?。。?程序性...
面試官:今天要不來聊聊JVM調(diào)優(yōu)相關(guān)的吧?面試官:你曾經(jīng)在生產(chǎn)環(huán)境下有過調(diào)優(yōu)JVM的經(jīng)歷嗎?候選者:沒有面試官:...候選者:嗯...是這樣的,我們一般優(yōu)化系統(tǒng)的思路是這樣的候選者:1. 一般來說關(guān)系型數(shù)據(jù)庫是先到瓶頸,首先排查是否為數(shù)據(jù)庫的問題候選者:(這個(gè)過程中就需要評(píng)估自己建的索引是否合理、是否需要引入分布式緩存、是否需要分庫分表等等)候選者:2. 然后,我們會(huì)考慮是否需要擴(kuò)容(橫向和縱向都...
摘要:顯示處于不可中斷的休眠的進(jìn)程數(shù)量。我們可以實(shí)用內(nèi)存數(shù)據(jù)庫,替代他的功能。 MySQL對(duì)于很多Linux從業(yè)者而言,是一個(gè)非常棘手的問題,多數(shù)情況都是因?yàn)閷?duì)數(shù)據(jù)庫出現(xiàn)問題的情況和處理思路不清晰。在進(jìn)行MySQL的優(yōu)化之前必須要了解的就是MySQL的查詢過程,很多的查詢優(yōu)化工作實(shí)際上就是遵循一些原則讓MySQL的優(yōu)化器能夠按照預(yù)想的合理方式運(yùn)行而已。 showImg(https://seg...
摘要:導(dǎo)讀閱讀本文需要有足夠的時(shí)間,筆者會(huì)由淺到深帶你一步一步了解一個(gè)資深架構(gòu)師所要掌握的各類知識(shí)點(diǎn),你也可以按照文章中所列的知識(shí)體系對(duì)比自身,對(duì)自己進(jìn)行查漏補(bǔ)缺,覺得本文對(duì)你有幫助的話,可以點(diǎn)贊關(guān)注一下。目錄一基礎(chǔ)篇二進(jìn)階篇三高級(jí)篇四架構(gòu)篇五擴(kuò) 導(dǎo)讀:閱讀本文需要有足夠的時(shí)間,筆者會(huì)由淺到深帶你一步一步了解一個(gè)資深架構(gòu)師所要掌握的各類知識(shí)點(diǎn),你也可以按照文章中所列的知識(shí)體系對(duì)比自身,對(duì)自己...
摘要:中的詳解必修個(gè)多線程問題總結(jié)個(gè)多線程問題總結(jié)有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升開源的運(yùn)行原理從虛擬機(jī)工作流程看運(yùn)行原理。 自己實(shí)現(xiàn)集合框架 (三): 單鏈表的實(shí)現(xiàn) 自己實(shí)現(xiàn)集合框架 (三): 單鏈表的實(shí)現(xiàn) 基于 POI 封裝 ExcelUtil 精簡(jiǎn)的 Excel 導(dǎo)入導(dǎo)出 由于 poi 本身只是針對(duì)于 ...
閱讀 1156·2021-11-24 09:38
閱讀 3604·2021-11-22 15:32
閱讀 3458·2019-08-30 15:54
閱讀 2568·2019-08-30 15:53
閱讀 1494·2019-08-30 15:52
閱讀 2498·2019-08-30 13:15
閱讀 1837·2019-08-29 12:21
閱讀 1395·2019-08-26 18:36