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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常见jvm参数配置

發布時間:2024/4/13 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常见jvm参数配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
垃圾收集器做一個實戰的調優,你自己可以下去做一個小實驗,以后你要做架構師的時候,生產環境關于JVM調優的時候,一般都是架構師去做的,這個時候你可以大致的去了解一下,今天會講到一個性能測試工具,JMeter,是用來測試HTTP請求的吞吐量的,待會我也會說一下吞吐量的一個意思,我們今天可能會講到哪些內容呢,關于JVM參數的一個調優,我們怎么去配一個JVM的基本的參數,堆內存大小,配置新生代的一個比例參數,老年代的幾個參數,做開發的一般的都會遇到方法區異常,還有棧異常,棧溢出的,其實還是比較常見的,我們怎么做一個參數的一個配置,內存溢出和內存泄露的區別,因為很多在初學的時候,在字面上對于溢出和泄露,兩個概念肯定會搞混淆,內存泄露其實是包含了內存溢出的,具體什么意思,講到市面上比較流行的垃圾收集器,串行回收和并行回收,CMS,四種收集器會詳細講一下,測試一個吞吐量 JVM參數的配置,這個有沒有人配過的,配置過一些參數的,你們沒有遇到過內存溢出嗎,遇到內存溢出肯定是會配置內存參數的,調堆內存的一個大小,其實JVM參數調優還是比較重要的,如果你們做到架構師的級別的時候,基本上生產環境每臺服務器的配置,都是由你來做的,其實JVM相關的參數,有非常非常多,我在這里可能只講比較常用的,你們下次可以研究一下更細節的,我只說幾個比較常見的,第一個我會講到-XX:+PrintGC,只要是在我們JAVA運行的時候,你配置這樣一個JVM參數,當它每次GC做一個回收的時候,都會去打印一個日志,還有一個是-XX:+UseSerialGC,是專門做串行回收的,串行回收現在一般用的比較少,-XX:+PrintGCDetail是可以更加詳細的打印一些GC信息,-Xms這個常用的是起什么作用呢,表示堆初始值,表示我堆內存的時候,我最開始初始的時候的堆內存大小是多少,這是你們以后經常會遇到的,堆的初始值一定要和最大值設置成相等的,如果不相等的情況下,-Xmx表示配置堆的最大的可用值,表示配置堆的最大的一個大小,堆內存默認配置的是4個G,如果你們沒有配置JVM參數的話,默認是4個G的,但是有人會說如果我的電腦是2個G呢,2個G的話它就根據你的實際內存來定的,因為在我之前做生產服務器的時候,比如我的是8G內存,他默認就是4個G,不是8個G的,還有一個叫-Xmn,表示新生代的最大可用值,如果新生代一旦滿的情況下,會發生這個GC的,如果新生代滿的情況下,會產生什么GC,Minor GC,Full GC是會把新生代和老年代都會回收的,還有一個參數,-XX:SuvivorRatio這個參數也是用的比較多的,他是配置eden區和from/to區的一個比列大小,eden區一般比from大兩倍,相當于eden區占兩份,from/to占一份,還有一個參數-XX:NewRatio=2主要是配置新生代和老年代的一個占比,這個幾個參數你們可以記下了,配置垃圾收集器,G1,還有CMS,在做JVM配置的時候,初始值一定和要最大值相等,如果不等的情況下,如果我現在的堆初始值是10,最大值是512M,這樣的話會有什么問題呢,就會產生垃圾回收機制不停的在回收,因為我的空間太小了,不停的申請,不停的回收,不停的去申請內存,這個一定要相等的,不要配置初始值是0M,然后堆的最大值是512M,這樣的話性能是不好的,減少垃圾回收的次數,垃圾回收的時候如果每次都在回收的情況下,這個時候其他的工作線程是會停頓一段時間的,但是我們人為的看不出來,這個時候我們都是看不出來的,為什么看不出來呢,有的時候是因為你的服務器配置太好了,他的回收可能不是很頻繁,所以對整個程序影響不大,如果你的初始值和堆內存配置不大的情況下,這個時候垃圾回收機制不停的回收的情況下,這樣會導致程序會一直停下,運行一下,停一下,這樣對應用程序不好的,本身垃圾回收機制會導致其他線程暫停的,為什么暫停呢,如果說你不暫停的情況下,如果又產生新的垃圾呢,那我怎么去回收呢,所以他這么做的目的,保證回收的時候稍微干凈一點,這是我要講的第一個原則,第二個原則是什么呢,一定要把新生代堆的空間,一定要比老年代要小,垃圾回收器回收的時候,盡量在新生代里做回收,不要在老年代做回收,老年代的對象已經經歷過很多考驗了,基本上都是經歷過15次的考驗,如果非常成熟的情況下,會從eden區晉升到from區或者to區,然后到老年代里面去,這樣他是非常穩定的,為什么要垃圾回收到新生代回收呢,新生代的對象可能一次之后就不再使用了,所以要把新生代的比列稍微小一點,什么時候垃圾回收機制會頻繁回收呢,就是我的空間比較小的情況下,他的回收次數比較多,如果在生產環境的時候,你會發現好多公司怎么配的,一般把新生代配置為1:2,就是新生代占比1份,老年代占比2份,這樣的話,我新生代占比越小的情況下,垃圾回收機制就可能越頻繁,如果老年代占比越大的情況下,垃圾回收機制就可能不會那么頻繁去回收,這樣的話對整個性能就會非常好,大體回收原則 常見參數配置 -XX:+PrintGC 每次觸發GC的時候打印相關日志 -XX:+UseSerialGC 串行回收 -XX:+PrintGCDetails 更詳細的GC日志 -Xms 堆初始值 -Xmx 堆最大可用值 -Xmn 新生代堆最大可用值 -XX:SurvivorRatio 用來設置新生代中eden空間和from/to空間的比例. -XX:NewRatio 配置新生代與老年代占比 1:2 含以-XX:SurvivorRatio=eden/from=den/to 總結:在實際工作中,我們可以直接將初始的堆大小與最大堆大小相等, 這樣的好處是可以減少程序運行時垃圾回收次數,從而提高效率。 -XX:SurvivorRatio 用來設置新生代中eden空間和from/to空間的比例.

?

總結

以上是生活随笔為你收集整理的常见jvm参数配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。