国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

JVM GC調整優化過程全揭秘

開發 后端
調整JVM GC(Garbage Collection),可以極大的減少由于JVM GC工作,而導致的程序運行中斷方面的問題,進而適當的提高Java程序的工作效率。

JVM GC調整優化是以個極為復雜的過程,由于各個程序具備不同的特點,如:web和GUI程序就有很大區別(Web可以適當的停頓,但GUI停頓是客戶無法接受的),而且由于跑在各個機器上的配置不同(主要cup個數,內存不同),所以使用的JVM GC種類也會不同。接下來,我簡單介紹一下如何進行JVM GC調整優化。

首先說一下如何監視JVM GC,你可以使用我以前文章中提到的JDK中的jstat工具,也可以在java程序啟動的opt里加上如下幾個參數(注:這兩個參數只針對SUN的HotSpotVM):

  1. -XX:-PrintGCPrintmessagesatgarbagecollection.Manageable.  
  2. -XX:-PrintGCDetailsPrintmoredetailsatgarbagecollection.Manageable.(Introducedin1.4.0.)  
  3. -XX:-PrintGCTimeStampsPrinttimestampsatgarbagecollection.Manageable(Introducedin1.4.0.) 

當把-XX:-PrintGCDetails加入到javaopt里以后可以看見如下輸出:

[GC[DefNew:34538K->2311K(36352K),0.0232439secs]45898K->15874K(520320K),0.0233874secs]
[FullGC[Tenured:13563K->15402K(483968K),0.2368177secs]21163K->15402K(520320K),[Perm:28671K->28635K(28672K)],0.2371537secs]

他們分別顯示了JVM GC的過程,清理出了多少空間。第一行GC使用的是‘普通GC’(MinorCollections),第二行使用的是‘全GC’(MajorCollections)。他們的區別很大,在第一行最后我們可以看見他的時間是0.0233874秒,而第二行的FullGC的時間是0.2371537秒。第二行的時間是第一行的接近10倍,也就是我們這次調優的重點,減少FullGC的次數,以為FullGC會暫停程序比較長的時間,如果FullGC的次數比較多。程序就會經常性的假死。當然這只是他們的表面現象,接下來我仔細介紹一下GC,和FullGC(為后面的調優做準備)。

我們知道Java和C++的區別主要是,Java不需要像c++那樣,由程序員主動的釋放內存。而是由JVM里的GC(GarbageCollection)來,在適當的時候替我們釋放內存。JVM GC調整優化的內部工作,即JVM GC的算法有很多種,如:標記清除收集器,壓縮收集器,分代收集器等等。現在比較常用的是分代收集(也是SUNVM使用的),即將內存分為幾個區域,將不同生命周期的對象放在不同區域里(新的對象會先生成在Youngarea,在幾次GC以后,如過沒有收集到,就會逐漸升級到Tenuredarea)。在JVM GC收集的時候,頻繁收集生命周期短的區域(Youngarea),因為這個區域內的對象生命周期比較短,GC效率也會比較高。而比較少的收集生命周期比較長的區域(OldareaorTenuredarea),以及基本不收集的永久區(Permarea)。

注:Youngarea又分為三個區域分別叫Eden,和倆個Survivorspaces。Eden用來存放新的對象,Survivorspaces用于新對象升級到Tenuredarea時的拷貝。

我們管收集生命周期短的區域(Youngarea)的收集叫GC,而管收集生命周期比較長的區域(OldareaorTenuredarea)的收集叫FullGC,因為他們的收集算法不同,所以使用的時間也會不同。我們要盡量減少FullGC的次數。

接下來介紹一下HotSpotVMGC的種類,GC在HotSpotVM5.0里有四種。一種是默認的叫serialcollector,另外幾種分別叫throughputcollector,concurrentlowpausecollector,incremental(sometimescalledtrain)lowpausecollector(廢棄掉了)。以下是SUN的官方說明:

1.Thethroughputcollector:thiscollectorusesaparallelversionoftheyounggenerationcollector.Itisusedifthe-XX:+UseParallelGCoptionispassedonthecommandline.Thetenuredgenerationcollectoristhesameastheserialcollector.

2.Theconcurrentlowpausecollector:thiscollectorisusedifthe-Xincgc™or-XX:+UseConcMarkSweepGCispassedonthecommandline.Theconcurrentcollectorisusedtocollectthetenuredgenerationanddoesmostofthecollectionconcurrentlywiththeexecutionoftheapplication.Theapplicationispausedforshortperiodsduringthecollection.Aparallelversionoftheyounggenerationcopyingcollectorisusedwiththeconcurrentcollector.Theconcurrentlowpausecollectorisusediftheoption-XX:+UseConcMarkSweepGCispassedonthecommandline.

3.Theincremental(sometimescalledtrain)lowpausecollector:thiscollectorisusedonlyif-XX:+UseTrainGCispassedonthecommandline.ThiscollectorhasnotchangedsincetheJ2SEPlatformversion1.4.2andiscurrentlynotunderactivedevelopment.Itwillnotbesupportedinfuturereleases.Pleaseseethe1.4.2GCTuningDocumentforinformationonthiscollector.

簡單來說就是throughputcollector和concurrentlowpausecollector:使用多線程的方式,利用多CUP來提高GC的效率,而throughputcollector與concurrentlowpausecollector的去別是throughputcollector只在youngarea使用使用多線程,而concurrentlowpausecollector則在tenuredgeneration也使用多線程。

根據官方文檔,他們倆個需要在多CPU的情況下,才能發揮作用。在一個CPU的情況下,會不如默認的serialcollector,因為線程管理需要耗費CPU資源。而在兩個CPU的情況下,也挺高不大。只是在更多CPU的情況下,才會有所提高。當然concurrentlowpausecollector有一種模式可以在CPU較少的機器上,提供盡可能少的停頓的模式,見下文。

當要使用throughputcollector時,在javaopt里加上-XX:+UseParallelGC,啟動throughputcollector收集。也可加上-XX:ParallelGCThreads=來改變線程數。還有兩個參數-XX:MaxGCPauseMillis=和-XX:GCTimeRatio=,MaxGCPauseMillis=用來控制最大暫停時間,而-XX:GCTimeRatio可以提高GC說占CPU的比,以最大話的減小heap。

當要使用concurrentlowpausecollector時,在java的opt里加上-XX:+UseConcMarkSweepGC。concurrentlowpausecollector還有一種為CPU少的機器準備的模式,叫Incrementalmode。這種模式使用一個CPU來在程序運行的過程中GC,只用很少的時間暫停程序,檢查對象存活。

在Incrementalmode里,每個收集過程中,會暫停兩次,第二次略長。第一次用來,簡單從root查詢存活對象。第二次用來,詳細檢查存活對象。整個過程如下:

  1. *stopallapplicationthreads;dotheinitialmark;resumeallapplicationthreads(第一次暫停,初始話標記)  
  2. *dotheconcurrentmark(usesoneprocesorfortheconcurrentwork)(運行是標記)  
  3. *dotheconcurrentpre-clean(usesoneprocessorfortheconcurrentwork)(準備清理)  
  4. *stopallapplicationthreads;dotheremark;resumeallapplicationthreads(第二次暫停,標記,檢查)  
  5. *dotheconcurrentsweep(usesoneprocessorfortheconcurrentwork)(運行過程中清理)  
  6. *dotheconcurrentreset(usesoneprocessorfortheconcurrentwork)(復原) 

當要使用Incrementalmode時,需要使用以下幾個變量:

  1. -XX:+CMSIncrementalModedefault:disabled啟動i-CMS模式(mustwith-  
  2.  
  3. XX:+UseConcMarkSweepGC)  
  4. -XX:+CMSIncrementalPacingdefault:disabled提供自動校正功能  
  5. -XX:CMSIncrementalDutyCycle=default:50啟動CMS的上線  
  6. -XX:CMSIncrementalDutyCycleMin=default:10啟動CMS的下線  
  7. -XX:CMSIncrementalSafetyFactor=default:10用來計算循環次數  
  8. -XX:CMSIncrementalOffset=default:0最小循環次數(Thisisthepercentage(0-  
  9.  
  10. 100)bywhichtheincrementalmodedutycycleisshiftedtotherightwithintheperiod  
  11.  
  12. betweenminorcollections.)  
  13. -XX:CMSExpAvgFactor=default:25提供一個指導收集數 

SUN推薦的使用參數是:

  1. -XX:+UseConcMarkSweepGC\  
  2. -XX:+CMSIncrementalMode\  
  3. -XX:+CMSIncrementalPacing\  
  4. -XX:CMSIncrementalDutyCycleMin=0\  
  5. -XX:CMSIncrementalDutyCycle=10\  
  6. -XX:+PrintGCDetails\  
  7. -XX:+PrintGCTimeStamps\  
  8. -XX:-TraceClassUnloading 

注:如果JVM GC中使用throughputcollector和concurrentlowpausecollector,這兩種垃圾收集器,需要適當的挺高內存大小,以為多線程做準備。JVM GC調整優化到此結束。

【編輯推薦】

  1. 安裝JDK后JRE與JVM聯系淺談
  2. 監視JSP中JVM可用內存
  3. JDK、JRE、JVM之間的關系
  4. Java之父:我們看中的并非Java語言,而是JVM
  5. Java虛擬機(JVM)中的內存設置詳解
責任編輯:彭凡 來源: javadby
相關推薦

2017-11-08 15:23:57

Java GC優化jvm

2020-09-10 14:52:01

JVMJava算法

2020-07-29 14:15:04

JavaJvm算法

2017-09-26 16:32:03

JavaGC分析

2021-04-12 09:36:14

JVM生產問題JVM FULL GC

2019-11-15 15:12:19

Windows激活KMS

2025-11-06 01:21:00

2010-09-26 16:31:07

JVM參數配置

2010-09-17 15:25:03

JAVAJVM

2019-12-10 08:59:55

JVM內存算法

2025-08-11 02:00:52

2025-04-24 09:01:37

2022-05-27 08:01:36

JVM內存收集器

2010-09-17 14:03:40

2019-09-04 14:30:54

Nginx功能服務器

2025-04-02 00:00:03

2014-07-25 11:12:32

2023-12-07 12:21:04

GCJVM垃圾

2025-06-05 02:25:00

2012-01-11 11:07:04

JavaJVM
點贊
收藏

51CTO技術棧公眾號

久久久久久网站| aaaa欧美| 日韩av电影手机在线观看| 中文字幕欧美日韩一区| 激情开心成人网| 女人被男人躁得好爽免费视频 | 丁香视频免费观看| 欧美孕妇毛茸茸xxxx| 一区二区三区产品免费精品久久75 | 国产精品片aa在线观看| 97福利网站在线观看视频| 国产精品欧美日韩一区二区| 午夜国产精品影院在线观看| 国产精品二区影院| 牛牛精品在线视频| 国产夫妻自拍一区| 久久久亚洲国产天美传媒修理工| 亚洲男女一区二区三区| 91精品国产91久久综合| 午夜老司机在线观看| 一区二区三区在线视频111| 最新国产成人av网站网址麻豆| 国产精品无人区| 日韩国产一区二区三区| 国产三区视频在线观看| 国产精品va在线观看无码| 欧美激情一二区| 五月天精品一区二区三区| 性色一区二区| **精品中文字幕一区二区三区| 国产国产国产国产国产国产| 国产日韩精品推荐| 日韩高清中文字幕| 国产精品超碰97尤物18| 日韩免费高清| 久色国产在线| 成人一区二区三| 97中文在线| 在线亚洲欧美视频| 自拍偷拍欧美精品| 麻豆精品网站| 日本99精品| 丁香婷婷在线| 全黄性性激高免费视频| 国产精品久久久久av免费| 日韩午夜三级在线| 国产亚洲欧洲一区高清在线观看| 午夜日韩视频| 欧美成人毛片| 天堂中文在线资| 菠萝蜜视频在线观看入口| 国产精品成人品| 亚洲精品久久久久久久久久久久久 | 国产一二三视频| 麻豆精品蜜桃一区二区三区| 色老头一区二区三区| 偷窥少妇高潮呻吟av久久免费| 日本视频一区二区三区| 麻豆精品少妇| 久久久精品中文字幕| 午夜视频一区二区| 久久精品国产精品青草| 天天操综合520| 成人看av片| 综合激情丁香| 久久精品最新地址| 一本色道亚洲精品aⅴ| 成人午夜精品在线| 亚洲午夜电影| 日本在线视频一区二区三区| 成人在线观看免费| 青青青在线播放| 国产精品我不卡| 欧美二区乱c黑人| 欧美日韩高清一区| 国产精品美女一区二区三区 | 亚洲女人的天堂| 精品一区二区久久| 亚洲欧美综合久久久| 在线一区视频观看| 五月天婷婷在线视频| 成人女性文胸| 成人国产在线看| 国产嫩草一区二区三区在线观看| 性视频1819p久久| 亚洲精品中文字| 欧美日韩亚州综合| 亚洲综合激情另类小说区| 99re热这里只有精品免费视频| 久久婷婷激情| 中文字幕亚洲综合久久五月天色无吗''| 精品国产亚洲一区二区三区在线 | 欧美日本高清一区| 亚洲大尺度美女在线| 色综合久久中文字幕| 中文av一区特黄| 豆国产96在线|亚洲| 亚洲一区二区免费看| 欧洲激情综合| 亚洲一区二区三区在线免费| 自拍在线观看| 天堂8中文在线| 波多野结衣在线网站| 日韩伦理片在线观看| 成人在线看视频| 好色先生视频污| 欧美日韩一区在线播放 | 国产精品国产自产拍高清av王其| 国产一区二区网址| 亚洲欧美日本日韩| 欧美黄色一级视频| 妖精视频一区二区三区| 在线免费成人| 春暖花开亚洲一区二区三区| 丝袜综合欧美| 成人h小游戏| 青青草在线免费观看| 超碰在线12| 日本高清好狼色视频| 午夜网站在线观看| a在线观看免费视频| 国产福利视频在线播放| 精品欧美一区免费观看α√| www国产无套内射com| av动漫免费观看| 日韩第一页在线观看| 一区二区三区四区在线视频 | 黄色av免费在线看| 国产一区91| 播播国产欧美激情| 一区二区三区动漫| 一本一道波多野结衣一区二区| 亚洲少妇最新在线视频| 国产亚洲欧美中文| 国产三级三级三级精品8ⅰ区| 91亚洲精华国产精华精华液| 97国产精品videossex| 91麻豆成人久久精品二区三区| 欧美高清中文字幕| 综合视频一区| 在线观看亚洲a| 91日韩视频| 国产欧美二区| 精品88久久久久88久久久| 国产成人自拍网| 国产a久久麻豆| 国产美女视频91| 欧美日韩一区二| 日本一区二区三区视频在线观看| 美女网站色精品尤物极品姐弟| 亚洲欧美日韩精品| 中文在线观看视频| 国产成人在线观看免费网站| 亚洲国产日韩精品| 九九热精品视频在线播放| 免费在线国产精品| 在线影院av| 欧美xxxx网站| 久久一二三四| 色综合天天狠狠| 国产精品视频久久久| 免费一区二区三区在线观看| 福利一区在线| 最新日韩av| 欧美日韩一区二区三区在线 | 色欧美片视频在线观看| 欧洲精品久久| 日韩中文首页| 欧美大片免费观看在线观看网站推荐| 亚洲国产精品精华素| 日本黄色一区二区| 日本一级在线观看| 精品成人久久av| 国产导航在线| 18成人在线观看| 色婷婷狠狠18| 久久久不卡网国产精品二区| 亚洲一区在线免费| 久久99精品国产麻豆婷婷| 色999日韩自偷自拍美女| 宅男噜噜噜66国产日韩在线观看| 欧美国产综合一区二区| 国产美女永久无遮挡| 国产色爱av资源综合区| 欧美一区二区三区图| 日本调教视频在线观看| 日韩天堂av| 欧美福利视频网站| 中文在线a√在线8| 久久99精品久久久久久动态图 | 国产高清一区二区三区| 人人干在线视频| 欧美一区自拍| 欧美日韩亚洲丝袜制服| 成人羞羞视频免费看看| 国产日韩欧美a| 久播影院第一理论片| 一本久久综合亚洲鲁鲁五月天 | 无遮挡动作视频在线观看免费入口 | 99热国产精品|