我有一個應用程序負責歸檔舊的應用程序,它將一次執行大量的應用程序,因此它需要一次運行數天。應該花多少時間做垃圾回收
當我的公司開發它時,他們做了一些公正的性能測試,他們似乎從中得到了不錯的數據,但我最近爲一位客戶運行了一個存檔,而且它似乎運行速度非常慢,表現似乎正在退化甚至更長的時間。
似乎沒有內存泄漏,因爲我使用jconsole監視它,但仍有大量內存可用,並且看起來並沒有縮小。
但我已經注意到,堆的倖存者空間和終身代可以很快填滿,直到垃圾收集出現,並清除它似乎很頻繁發生,我不知道如果這可能是一個明顯減緩的來源。
該應用程序已運行7天3小時,根據jconsole,它已花費6小時執行復制垃圾回收(772,611集合)以及12小時25分鐘的markweep壓縮(145,940集合)。
這似乎是一個大量的時間花在垃圾回收上,我只是想知道是否有人看過類似的東西,並知道這是否正常?
編輯
本地處理似乎是緩慢的,比如我在看日誌中的一部分是用了5秒內使用的XPath它然後追加到一個字符串提取SOAP信封一些XML緩衝區以及根標籤......就是這樣。我還沒有對它進行簡介,因爲這是在生產環境中運行,我要麼通過網絡將數據拉下來,要麼在我們的開發環境中建立一個可能最終需要做的大型測試基地。
運行Java HotSpot客戶端虛擬機版本10.0-B23
真的只需要高吞吐量,還沒有配置任何特定的垃圾收集參數,將永遠運行在默認設置是什麼。不知道如何找到什麼收藏家將被使用?
修復
最終得到一個事件探查器就可以了,轉身出了放緩的原因是一些代碼,不斷修剪線斷狀態框輸出這是很嚴重的做記錄的聲明。應該認識到垃圾收集是不斷將狀態文本複製到內存中的症狀,而不是真正的原因。
乾杯人。
無論法官下令做什麼? – ZenMaster 2012-04-06 01:00:42
*(不是你的問題的回答,因此評論)* ... *「這將一次做大量的應用程序,所以它將需要一次運行幾天。」* ... [原文如此]你的意思是你的應用程序無法關閉並重新啓動,無需從頭開始一切!? – TacticalCoder 2012-04-06 01:06:18
那麼,如果你停下來,它會保存一個列表,列出哪些應用程序沒有存檔,哪些可以加載並重新運行。如果我們不能在接下來的幾天內加快速度,將我們的檔案標誌分成更小的批次,那就是我們的計劃。 – Dan675 2012-04-06 01:11:39