2010-01-11 138 views
1

我的項目生成一些文本/二進制文件。如果我正常運行它,某些文件的大小會非常小(這表示出現了問題)。如果我從調試模式運行它(逐步執行代碼),文件將被正確生成。什麼會導致此Java行爲?

什麼會導致此行爲?我很確定我沒有任何未公開的文件。

編輯:我已經通過更專注的方式代碼,我發現了這個問題。在某個時間點,這些文件會被壓縮,這就解釋了大小的減少。我很愚蠢:) 主持人可以關閉這個問題,如果他覺得合適。

+3

你有一些代碼發佈? – futureelite7 2010-01-11 09:53:39

+2

是你的代碼多線程? – Jean 2010-01-11 09:54:25

+0

代碼不是多線程的,並且有太多的類。 – Geo 2010-01-11 10:13:03

回答

2

你的代碼是多線程的嗎?你是否正在嘗試閱讀一些你沒有給出另一個線程完成構建的機會,而當你正在逐步完成構建時,這並沒有體現出來?

1

例如,您是否調用某種「讀取」方法從文件中讀取數據,並假定您將始終取回您請求的字節數?

3

嘗試增加:

System.gc(); 
try { Thread.sleep(4000); } catch (Exception e) {} 
System.gc(); 

...在程序結束。如果問題消失,那麼你忘記關閉()文件。上面的代碼是沒有解決方案的,它是一個hacky嘗試增加終結器運行的可能性。

+0

添加了代碼。沒有什麼改變。 – Geo 2010-01-11 10:45:49

+0

我肯定會試圖添加logging/printlns來調試問題(老派的風格!) – 2010-01-11 15:00:55

+0

...或者你可以嘗試不同的JRE或Java版本,你永遠不會知道,它可能是一個錯誤。 – 2010-01-11 15:01:34

相關問題