中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JVM調優的方法是什么

發布時間:2021-12-18 14:51:33 來源:億速云 閱讀:123 作者:iii 欄目:大數據

這篇文章主要介紹“JVM調優的方法是什么”,在日常操作中,相信很多人在JVM調優的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JVM調優的方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

了解JVM常用命令行參數

  • 標準:-開頭,所有HotSpot都支持

  • 非標準:-X開頭,特點版本HotSpot支持特定的命令

  • 不穩定:-XX開頭,下個版本可能會取消的命令

java -version

java -X

調優代碼:

public class OomTest {  public static void main(String[] args) {    List<byte[]> bytes= new ArrayList<>();    for(;;){      byte[] b=new byte[1024*1024];      bytes.add(b);    }  }}JDK14 java -XX:+PrintCommandLineFlags OomTest.java-XX:G1ConcRefinementThreads=8 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=268435456 -XX:MaxHeapSize=4294967296 -XX:MinHeapSize=6815736 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
JDK8 java -XX:+PrintCommandLineFlags OomTest.java-XX:InitialHeapSize=268435456 -XX:MaxHeapSize=4294967296 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC

GC 垃圾回收器模式選擇

科學計算:吞吐量,數據挖掘,吞吐量優先的一般選擇:PS+PO

響應時間:網站,API  G1

什么是調優?(搞定了就重啟一次)

  1. 依據需求進行JVM規劃和預調優

  1. 優化運行JVM環境(慢,卡頓)

  1. 解決JVM運行過程中出現的各種問題(OOM)

調優,從規劃開始

  • 調優,從業務場景開始,沒有場景調優都是耍流氓

  • 無監控,不調優

  • 步驟

    1. 熟悉業務場景

      • 響應時間,停頓時間【CMS,G1 ZGC】(需要給用戶做響應)

      • 吞吐量=用戶/(用戶時間+GC時間)【PS PO-默認】

    1. 選擇回收器組合

    1. 計算內存需求

    1. 選定CPU(越高越好)

    1. 設定年代大小,升級年齡

    1. 設定日志參數

    1. 觀察日志情況

     JVM調優的方法是什么

通過top jstack 找出堆棧信息

# 第一步先top 找出 哪個java進程占用率最高top#顯示如下PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     24525 root      20   0 4909144 1.421g   6248 S   6.7 18.6  67:52.53 jsvc
# 第二步 使用top -Hp Pid 找出這個pid進程里哪個線程占用率最高top -Hp 24525 顯然如下:PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND  24624 root      20   0 4917660 1.427g  14548 S  2.7 18.7   0:30.39 jsvc # 第三步使用jstack查找改進程的堆棧信息,需要把top -Hp的PID轉換成16進制printf '%x\n' 24624 輸出:66030# 使用jstack -l pid(進程的)|grep 16進制(top- Hp線程PID)查找堆棧jstack -l 24525 |grep 66030輸出堆棧信息,結合源碼進行原因查找使用jmap分析java進程的內存占用分析使用jmap會導致系統STWjmap -histo 進程ID |head 20jmap -dump:format=b,file=xxx pid /jmap -histo

工具:阿里arthas工具使用

java -jar arthas-boot.jar按數組選擇java進程# 常用命令有1. dashboard :類似top命令實時檢控線程情況2. jvm :把當前java進程的jvm配置全部顯示出來(棧,堆內存等等info)3. thread 可以跟個線程ID:查看所有線程列表信息,后面跟著線程ID,4. heapdump : 導出堆內存情況,會導致stw使用jhat -J-mx512M xxx.hprof
5. redefine 熱替換,線上直接替換文件

 實際線上運行的jvm參數(jdk8用的G1,堆內存最大512m)

#!/bin/bash
SERVER_NAME=xx-xx-serverBUILD_NAME=master-202003042222-13cae098aBASE_DIR=/usr/local/xx/xxx-web-server
exec java \-Dfile.encoding=UTF-8 \-Dlogback.configurationFile=${BASE_DIR}/conf/logback.xml \-Xmx512m \-XX:+UseG1GC \-XX:MaxGCPauseMillis=100 \ # gc的清理間隔時間-XX:InitiatingHeapOccupancyPercent=35 \  # 啟動G1的堆空間占用比例-verbose:gc \        # 類加載詳細過程-XX:+PrintGCDetails \       # GC詳情-XX:+PrintGCDateStamps \      # 打印gc啟動時間的相對時間-XX:+PrintGCTimeStamps \    # 打印發送GC的時間-XX:+PrintGCApplicationStoppedTime \  #打印GC的stw停止時間-Xloggc:${BASE_DIR}/logs/jvm_gc.log \  #打印GClog-XX:ErrorFile=${BASE_DIR}/logs/jvm_err.log \ #打印Gc報錯log-XX:+HeapDumpOnOutOfMemoryError \    # 導出oom異常對dump異常快照-XX:HeapDumpPath=${BASE_DIR}/logs/jvm_dump_pid%p.hprof \-jar ${BASE_DIR}/bin/xxx-xx-server-${BUILD_NAME}.jar ${BASE_DIR}/conf/server.properties

到此,關于“JVM調優的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

jvm
AI

田林县| 红河县| 连江县| 临夏县| 闻喜县| 虹口区| 邢台县| 吕梁市| 庆阳市| 石狮市| 宣武区| 潼南县| 永清县| 鹤山市| 盘山县| 安西县| 海晏县| 松江区| 商河县| 云南省| 同德县| 原平市| 杭锦后旗| 禹城市| 兴义市| 永平县| 彭水| 弥渡县| 和政县| 汶川县| 冕宁县| 上林县| 淮阳县| 鹤岗市| 谢通门县| 洪湖市| 松溪县| 乡城县| 富锦市| 峡江县| 巴林左旗|