時,這是奇怪的:當我開始使用timer.scheduleAtFixedRate
時間表,這需要很長的時間,然後拋出OutOfMemoryError: Java heap space
,但如果我只是叫timerTask.run()
方法在主線程,它工作得很好。的OutOfMemoryError Java堆空間使用的TimerTask
我調用的方法不是開源的,所以我不能把它粘貼出來。但任何人都可以幫助我分析這種情況下的一些可能性。在timerTask線程中運行它並在主線程中運行它有什麼區別?
非常感謝!
的代碼片段只是如下簡單:
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
AModule.load(tmpFilePath); //not open-source
}
}
timer.scheduleAtFixedRate(task, new Date(), 1*60*1000); //OOME
//If I change the upper code to:
task.run() //it just works fine
顯示您的代碼,以便我們可以重現問題 – Masudul
嘗試分析我們無法看到的代碼是一個有缺陷的前提。 –
爲我們發佈一些代碼。也許檢查遞歸調用或內存持久實例(完成/關閉資源,大對象等)。 – LastFreeNickname