jvm参数调优堆的初始和最大值一定要一致
生活随笔
收集整理的這篇文章主要介紹了
jvm参数调优堆的初始和最大值一定要一致
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我上次是把初始內存32M,最大內存512M,這個是時候我把初始內存改成相等,512M,我就把服務器重啟一遍-XX:+PrintGCDetails -Xmx512M –Xms512M
-XX:+HeapDumpOnOutOfMemoryError
-XX:+UseSerialGC
-XX:PermSize=32M你們再看效果,有沒有GC的回收,是不是沒有,這我們就可以統計出來,0次,這就不用說了嗎,結果已經看的出來了GC回收次數是0次,那這邊你們說一下,這個吞吐量大概在多少,大概范圍在多少,肯定是5000以上,這個是肯定的,我估計7,8千,差不多,清空掉,運行,你們看一下有沒有GC回收,是不是沒有,我們運行完畢也沒有,吞吐量在5015
你們誰知道這是什么原因嗎,為什么變少了,你們有沒有誰知道,這個其實是軟件的一個bug問題,運行的時候怎么越變越小,這是什么原因,你們知道為什么嗎,這個軟件有Bug,永遠只在100多里面,看到沒有
是不是還在100多,這個軟件有bug,你們最好不要這么測,去HTTP請求菜單點擊執行,是不是已經高了
看到沒有,6561次,看到效果沒有,剛才變小是因為圖形界面,你們不要去展示報告里面執行去看報告,圖形運行的時候會影響我們的吞吐量的,這個軟件有bug,所以這個我就不說了,那你知道,6561次,吞吐量6561次,這個時候我把它清掉之后,我再來一遍,6702次
我清掉,我在運行一次,他又會變高的,因為他有緩存這個請求的,會慢慢變高的,6626,基本上在6600左右了
這個時候可以做個總結出來,堆的初始值和最大值一致的情況下,并且堆的初始值越大就會越高,其實你們可以總結一個結論出來,首先為什么要有一個初始內存呢,其實大家記住一點,說白了,堆的初始值要和堆的初始內存要一直,這是第一個條件,你如果初始堆內存越大,就越高,而且你有沒有發現,我現在要運行4,5遍,他才會產生一次GC回收,我們運行了多次,這一次GC肯定不算,一般你不要把它設置滿,你設置一半就行了,16G的話你設置成8G就行了,因為你還有其他的內存需要使用,所以這是我們給你講的一個結論出來,然后你們再想想,我設置512M,我用的是串行回收,我設置512M的時候,和初始值32M的時候,差別有多少,差別為幾次,是不是1000多次,是不是這樣的,而且和我們最開始的差別多少次,差別2000多次,所以為什么有的時候要把初始內存設大一點呢,這里就把串行這塊已經講完了,如果有人問你,JVM調優最基本的原則是什么,第一點是減少GC回收次數,因為GC回收本身會影響程序的效率的,第二點是堆的初始值和最大值一定要一致,因為垃圾回收次數和設置堆的最大內存無關,他是和初始堆內存大小有關系的,我已經把串行回收講完了
調整初始堆
-XX:+PrintGCDetails -Xmx512M –Xms512M
-XX:+HeapDumpOnOutOfMemoryError
-XX:+UseSerialGC
-XX:PermSize=32M
GC回收次數0次 吞吐量6561次
結論:堆的初始值和最大堆內存一致,并且初始堆越大就會高。
?
總結
以上是生活随笔為你收集整理的jvm参数调优堆的初始和最大值一定要一致的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 测试串行回收与堆初始值有关系02
- 下一篇: 测试并行回收报告