2013-03-14 79 views
1

我有一個GC日誌文件,當堆空時(每隔30分鐘,然後20,10,5每分鐘幾次事件就顯示頻繁的完整GC)在某些時候,儘管如此,我可以看到堆使用量突然增加(我想象在用戶開始連接到我的應用程序的那一刻),並且完整的GC事件開始發生得不那麼頻繁 我想不出爲什麼會這樣。可能發生頻繁滿GC空堆

我使用的Oracle VM 1.6,我的啓動腳本是:

java -XX:+HeapDumpOnOutOfMemoryError \ 
    -Xmx7500m \ 
    -XX:HeapDumpPath=../logs \ 
    -verbose:gc \ 
    -XX:+PrintGCDetails \ 
    -XX:+PrintGCTimeStamps \ 
    -Xloggc:/app/diffusion/Logs/gc.log \ 
    -Dcom.sun.management.jmxremote \ 
    -Dcom.sun.management.jmxremote.ssl=false \ 
    -Dcom.sun.management.jmxremote.authenticate=false \ 
    -Dcom.sun.management.jmxremote.port=2000 \ 
    -cp ../lib/diffusion.jar:../etc:../data com.pushtechnology.diffusion.Diffusion $1 

回答

0

嘗試禁用明確的GC,看看是否有幫助:-XX:+DisableExplicitGC

然後,你可以收集幾個線程轉儲,確認沒有什麼應用程序確實運行時堆是空的。