Re: [請益] java的效能!?
※ 引述《Aurim (Who cares?)》之銘言:
: ※ 引述《lgd1008 (lgd1008)》之銘言:
: : 不要只把 VM, GC 算進 overhead, 而不同時考慮他們可能對效能產生的幫助,
: 請試舉一例VM/GC對整體效能有幫助的例子。
因為懂得不多所以僅對GC的部分提供一點小心得。
GC對於AP的影響除了回收的時間與次數之外,最重要的關係者就是你的Generation的
調整與配置,如何因應系統的運作行為去調整演算法與Generation的設定以達到減少
GC的時間、次數是很重要的一個效能調校環節。
因為VM在實作上的差異,導致了GC的運作行為也不一樣,有的VM是GC的三個階段都
作,有的只作mark跟sweep但是不做compaction,斷裂的問題就是從這來的,現在是比
較少有這種狀況了,不過一但斷裂發生,你的程式碼調得再好也是枉然!因為GC的thread
掌握了monitor之後,整個系統都不動了~ GC thread的優先權是這麼的高,一但他卡住
,其它的事也都別想要做了。
曾遇過有些客戶覺得我有預算就直接多買一點記憶體,這樣總行了吧!
實體記憶體的大小我不知道他會加到多少,但是我注意的是分了多少給VM,給少了,VM
就一天到晚在GC,給太多,要是Generation的配置沒有因應AP的物件生成行為去調整的
話,一次Full GC就可以讓系統凍結30秒以上....這問題要怎麼界定是效能問題還是
middleware的設定問題?
也許這些都被認為與純粹的程式效能調校沒有關係,那就可以了解有些AP交給客戶使用
之後的惡名是從何而來了。
上了production才是噩夢的開始。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.229.63.63
討論串 (同標題文章)