日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JVM调优技巧与经验

發(fā)布時間:2024/9/30 编程问答 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM调优技巧与经验 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

吞吐量:用戶代碼時間/(用戶代碼時間 + 垃圾回收時間)
響應(yīng)時間:STW越短,響應(yīng)時間越好
調(diào)優(yōu)追求的是什么?吞吐量優(yōu)先還是響應(yīng)時間優(yōu)先,還是在滿足一定響應(yīng)時間的情況下,達到多大的吞吐量。

科學(xué)計算,吞吐量

什么是調(diào)優(yōu)?

  • 根據(jù)需求進行JVM規(guī)劃和預(yù)調(diào)優(yōu)
  • 優(yōu)化JVM運行環(huán)境(慢、卡頓)
  • 解決JVM運行過程中的各種問題,如OOM
  • JVM調(diào)優(yōu)其實就是盡量減少Full GC次數(shù)和時間。
    Full GC會導(dǎo)致STW(stop the world),Java所有線程掛起,,用戶就會有卡頓的感覺。
    minor GC也會導(dǎo)致STW,但是時間很短對程序運行影響較小。而Full GC時間較長,一般比minor GC
    慢10倍以上,應(yīng)該盡量避免。
    一般生產(chǎn)環(huán)境中,幾天才會觸發(fā)一次FGC,甚至一周。

  • 在jvm參數(shù)中配置,可以打印GC日志

    -XX:+PrintGCDetails
    -Xloggc:/{path}/gc.log

    參數(shù)總結(jié):
    -XX:+PrintGC 輸出GC日志
    -XX:+PrintGCDetails 輸出GC的詳細日志
    -XX:+PrintGCTimeStamps 輸出GC的時間戳(以基準(zhǔn)時間的形式)
    -XX:+PrintGCDateStamps 輸出GC的時間戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
    -XX:+PrintHeapAtGC 在進行GC的前后打印出堆的信息
    -Xloggc:…/logs/gc.log 日志文件的輸出路徑


  • [Times: user=0.00 sys=0.00, real=0.00 secs]分別表示
    用戶消耗的CPU時間 內(nèi)核態(tài)消耗的CPU時間 操作從開始到結(jié)束所經(jīng)過的墻鐘時間(Wall Clock Time)

    user是用戶態(tài)耗費的時間,sys是內(nèi)核態(tài)耗費的時間,real是整個過程實際花費的時間。user+sys是CPU時間,每個CPU core單獨計算,所以這個時間可能會是real的好幾倍。
    CPU時間和墻鐘時間的差別是,墻鐘時間包括各種非運算的等待耗時,例如等待磁盤I/O、等待線程阻塞,而CPU時間不包括這些耗時

    可以使用一些離線的工具來對GC日志進行分析,比如sun的gchisto( https://java.net/projects/gchisto),gcviewer( https://github.com/chewiebug/GCViewer ),這些都是開源的工具,用戶可以直接通過版本控制工具下載其源碼,進行離線分析。
    必看:
    https://www.jianshu.com/p/fd1d4f21733a
    https://www.jianshu.com/p/088d71f20a47
    https://www.jianshu.com/p/5bad514071ab
    https://www.jianshu.com/p/8eabaf631d15
    https://www.jianshu.com/p/26f95965320e
    https://www.jianshu.com/p/fd1d4f21733a
    https://www.jianshu.com/p/dbaabe4554b6

    老年代默認是占整個堆的2/3的大小

    如果程序啟動時,頻繁發(fā)生元空間的Full GC,就會啟動很慢,需要調(diào)大元空間值。
    每秒產(chǎn)生的對象較大,survior區(qū)放不下,所以放到老年代,但是這些對象其實都是垃圾。

    總結(jié)

    以上是生活随笔為你收集整理的JVM调优技巧与经验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。