java - 正常的應用多久一次Full GC?
問題描述
我查看我們服務器的狀態,半個月發生了900+次full gc,大約20分鐘一次full gc,這是正常的嗎?或者說優化到多久一次會比較合理?
問題解答
回答1:雖然沒有優化過。不過覺得這個需要按照實際的業務需求和業務能力去做支撐.才好優化。
回答2:看java應用的heap大小以及qps,不過初步看20分鐘一次的full gc,貌似不大正常
回答3:jvm的優化談起來可以講幾個小時,這里簡單的給你點意見,不系統的展開說。
其一 :你的問題是full gc 頻繁,看下總內存和老年代設置的是否太小了。主要是看參數 -Xmx , -Xmn. 若是太小的話,必然會gc頻繁。
其二:添加以下參數 -verbose.gc -XX:+PrintGC -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+PrintTenuringDistribution -Xloggc:/data/log/xxx/xxx-gc.log -XX:+PrintGCDetails查看每次gc ,老年代還剩余多少空間,一般來說,老年代的空間設置為gc后內存的2-2.5倍是一個較為合理的數值。同時通過這個日志可以看到是否大量的對象沒有在新生代充分的gc掉就進入老生代。原本可以通過新生代回收的對象進入老年代的話必然會full gc 頻繁
其三 : 代碼原因 dump 內存 jmap -dump:live,format=b,file=xx.bin [pid]然后通過MAT(http://www.eclipse.org/mat/)工具來看具體是哪塊大內存沒有被釋放
相關文章:
1. Docker for Mac 創建的dnsmasq容器連不上/不工作的問題2. javascript - 求賜教:網易郵箱Web端模擬登錄看信的加密參數_ntes_nnid、_ntes_nuid3. javascript - 使用angular 的ui-sref 中出現了中文參數,點擊跳轉后瀏覽器的地址欄里出現轉義后的%AE....%a%44. java - ConcurrentHashMap中的get()方法為什么可以不加鎖?5. javascript - QWebEngineView 如何爬 angular 的動態數據?6. html5 - 這個代碼顯示功能如何實現?7. javascript - 用JS 七牛上傳圖片出現文件已存在的錯誤(file exists)8. 工作近5年,3年Java Web ,近2年前端,未來何去何從?9. css3 - 圖片等比例縮放10. java - 字節流轉成字符串之后,在通過字符串轉成字節流后的文件為什么會不一樣?
