freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

java內存優(yōu)化-畢玄(完整版)

2025-09-09 18:35上一頁面

下一頁面
  

【正文】 : 80。如ScavengeBeforeFullGC為true(默認值),則先執(zhí)行minor GC。 3)minor gc時的悲觀策略; 默認情況下,當TLAB、eden上分配都失敗時,判斷需要分配的內存大小是否 = eden space的一半大小,如是就直接在老生代上分配; 默認情況下,新生代對象晉升到老生代的規(guī)則:XX:MaxPermSize:設置持久代最大值。應根據應用的線程所需內存大小進行適當調整。與jmap heap中顯示的New gen是不同的。兩個Survivor區(qū)與一個Eden區(qū)的比值為2:8,一個Survivor區(qū)占整個年輕代的1/10。和threadstacksize選項解釋很類似,官方文檔似乎沒有解釋,在論壇中有這樣一句話:Xss is translated in a VM flag named ThreadStackSize”一般設置這個值就可以了。 3)堆外分配(,但不推薦這種方式)監(jiān)控方法1)系統(tǒng)程序運行時可通過jstat –gcutil來查看堆中各個內存區(qū)域的變化以及GC的工作狀態(tài); 2)啟動時可添加XX:+PrintGCDetails 默認情況下的垃圾回收規(guī)則: 默認情況下的新生代對象晉升到老生代的規(guī)則:如希望跟蹤每次的變化情況,可在啟勱參數上增加: PrintAdaptiveSizePolicy。 其中,MinHeapFreeRatio默認值: 40GC組合1)默認GC組合2)可選的GC組合GC監(jiān)測1)jstat –gcutil [pid] [intervel] [count]2)verbose:gc // 可以輔助輸出一些詳細的GC信息;XX:+PrintGCDetails // 輸出GC詳細信息;XX:+PrintGCApplicationStoppedTime // 輸出GC造成應用暫停的時間XX:+PrintGCDateStamps // GC發(fā)生的時間信息;XX:+PrintHeapAtGC // 在GC前后輸出堆中各個區(qū)域的大?。籜loggc:[file] // 將GC信息輸出到單獨的文件中,建議都加上,這個消耗不大,而且對查問題和調優(yōu)有很大的幫助。 (1)長期消耗,可以直接dump,然后MAT(內存分析工具)查看即可 XX:+PrintGCTimeStamps2)jmap:(由于每個版本jvm的默認值可能會有改變,建議還是用jmap首先觀察下目前每個代的內存大小、GC方式) J3)運行狀況監(jiān)測工具:jstat、jvisualvm、sar 、gclogviewer應收集的信息1)minor gc的執(zhí)行頻率;full gc的執(zhí)行頻率,每次GC耗時多少?2)高峰期什么狀況?3)minor gc回收的效果如何?survivor的消耗狀況如何,每次有多少對象會進入老生代?4)full gc回收的效果如何?(簡單的memory leak判斷方法)5)系統(tǒng)的load、cpu消耗、qps or tps、響應時間QPS每秒查詢率:是對一個特定的查詢服務器在規(guī)定時間內所處理流量多少的衡量標準。 3)減小Heap或老生代(5)降低Minor GC執(zhí)行頻率通常原因:每次請求分配的內存多、請求量大通常辦法:1)擴大heap、擴大新生代、擴大eden。2)調大Survivor。由于調整幅度很小,導致了經常有對象直接轉移到了老生代;于是禁止Survivor區(qū)的動態(tài)調整了,XX:UseAdaptiveSizePolicy,并計算Survivor Space需要的大小,于是繼續(xù)觀察,并做微調…。2)有向圖Tracing:適合于復雜對象的引用關系場景,Hotspot采用這種。 新生代串行GC(Serial Copying): 1)首先在TLAB(本地線程分配緩沖區(qū))上嘗試分配; 3)檢查是否需要嘗試在老生代上分配,如需要,則遍歷所有代并檢查是否可在該代上分配,如可以則進行分配;如不需要在老生代上嘗試分配,則繼續(xù); 5)如需要分配的大小大于PretenureSizeThreshold,嘗試在老生代上分配,否則嘗試在新生代上分配; 7)執(zhí)行full gc,并清除所有soft Ref,按步驟5繼續(xù)嘗試分配。 4)掃描引用關系,將活的對象copy到to space,如對象在minor gc中的存活次數超過tenuring_threshold或分配失敗,則往老生代復制,如仍然復制失敗,則取決于HandlePromotionFailure,如不需要處理,直接拋出OOM,并退出vm,如需處理,則保持這些新生代對象不動; 6)執(zhí)行非最大壓縮的full gc,在eden上分配; 獲取之前所有minor gc晉級到old的平均大小,并對比目前eden+from已使用的大小,取更小的一個值,如老生代剩余空間小于此值,則返回false,如大于則返回true; 6)內存分配,free list方式,so性能稍差,對minor GC會有一點影響; 堆內的對象數據是各個線程所共享的,所以當在堆內創(chuàng)建新的對象時,就需要進行鎖操作。典型設置: o java Xmx3550m Xms3550m Xmn2g Xss128kXmx3550m:設置JVM最大可用內存為3550M。以前每個線程堆棧大小為256K。如果設置為0的話,則年輕代對象不經過Survivor區(qū),直接進入年老代。 java Xmx3800m Xms3800m Xmn2g Xss128k XX:+UseParallelGC XX:ParallelGCThreads=20XX:+UseParallelGC:選擇垃圾收集器為并行收集器。 java Xmx3550m Xms3550m Xmn2g Xss128k XX:+UseParallelGC java Xmx3550m Xms3550m Xmn2g Xss128k XX:ParallelGCThreads=20 XX:+UseConcMarkSweepGC XX:+UseParNewGCXX:+UseConcMarkSweepGC:設置年老代為并發(fā)收集。此值設置運行多少次GC以后對內存空間進行壓縮、整理。 55% used [0x221d0000, 0x22527e10, 0x227d0000) total 69632K, used 2696K [0x227d0000, 0x26bd0000, 0x26bd0000)the space 69632K,def new generation 4% used [0x227d0000, 0x22aeb958, 0x22aeba00, 0x26bd0000) ro space 8192K, Xmx:最大堆大小 167。 XX:+UseSerialGC:設置串行收集器 167。 XX:ParallelGCThreads=n:設置并行收集器收集時使用的CPU數。 167。 2. 年老代大小選擇 o 響應時間優(yōu)先的應用:年老代使用并發(fā)收集器,所以其大小需要小心設置,一般要考慮并發(fā)會話率和會話持續(xù)時間等一些參數。 3. 較小堆引起的碎片問題因為年老代的并發(fā)收集器使用標記、清除算法,所以不會對堆進行壓縮。 Xmx設置為服務器物理內存的1/4(最大為1G)我在網上發(fā)現了這篇文章,也是根據那篇PDF寫的,基本都翻譯過來了,那我就不再做造輪子的過程了。 Xms3550m:設置JVM促使內存為3550m。以前每個線程堆棧大小為256K。如果設置為0的話,則年輕代對象不經過Survivor區(qū),直接進入年老代。o java Xmx3550m Xms3550m Xmn2g Xss128k XX:+UseParallelGC XX:ParallelGCThreads=20 XX:+UseParallelOldGC XX:+UseParallelOldGC:配置年老代垃圾收集方式為并行收集。 響應時間優(yōu)先的并發(fā)收集器如上文所述,并發(fā)收集器主要是保證系統(tǒng)的響應時間,減少垃圾收集時的停頓時間。o java Xmx3550m Xms3550m Xmn2g Xss128k XX:+UseConcMarkSweepGC XX:CMSFullGCsBeforeCompaction=5 XX:+UseCMSCompactAtFullCollectionXX:CMSFullGCsBeforeCompaction:由于并發(fā)收集器不對內存空間進行壓縮、整理,所以運行一段時間以后會產生“碎片”,使得運行效率降低。 XX:+PrintGCTimeStamps XX:+PrintGC:PrintGCTimeStamps可與上面兩個混合使用輸出形式:: [GC 98328K93620K(130112K), secs] 常見配置匯總 注意Survivor區(qū)有兩個。 垃圾回收統(tǒng)計信息 XX:ParallelGCThreads=n:設置并發(fā)收集器年輕代收集方式為并行收集時,使用的CPU數。 吞吐量優(yōu)先的應用:一般吞吐量優(yōu)先的應用都有一個很大的年輕代和一個較小的年老代。因為對響應時間沒有要求,垃圾收集可以并行進行,一般適合8CPU以上的應用。 XX:GCTimeRatio=n:設置垃圾回收時間占程序運行時間的百分比。 XX:+PrintGCDetails XX:MaxPermSize=n:設置持久代大小 Xms:初始堆大小可與上面混合使用輸出形式:Application time: seconds XX:+UseCMSCompactAtFullCollection:打開對年老代的壓縮。 典型配置:o java Xmx3550m Xms3550m Xmn2g Xss128k XX:ParallelGCThreads=20 XX:+UseConcMarkSweepGC XX:+UseParNewGC XX:+UseConcMarkSweepGC:設置年老代為并發(fā)收集。XX:GCTimeRatio=nnn參數則是設置GC時間和運行時間的比值,GC時間占整個運行時間的1 / (1 + nnn)。 典型配置:o java Xmx3800m Xms3800m Xmn2g Xss128k XX:+UseParallelGC XX:ParallelGCThreads=20XX:+UseParallelGC:選擇垃圾收集器為并行收集器。如果將此值設置為一個較大值,則年輕代對象會在Survivor區(qū)進行多次復制,這樣可以增加對象再年輕代的存活時間,增加在年輕代即被回收的概率。在相同物理內 存下,減小這個值能生成更多的線程。Xmn2g:設置年輕代大小為2G。摘自 原文鏈接 但是,當堆空間較小時,運行一段時間以后,就會出現“碎片”,如果并發(fā)收集器找不到足夠的空間,那么并發(fā)收集器將會停止,然后使用傳統(tǒng)的標記、清除方式進行回收。最優(yōu)化的方案,一般需要參考以下數據獲得: 167。并行收集線程數。 167。 XX:+UseParalledlOldGC:設置并行年老代收集器 167。 XX:NewRatio=n:設置年輕代和年老代的比值。 total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1