我的項目生成一些文本/二進制文件。如果我正常運行它,某些文件的大小會非常小(這表示出現了問題)。如果我從調試模式運行它(逐步執行代碼),文件將被正確生成。什麼會導致此Java行爲?
什麼會導致此行爲?我很確定我沒有任何未公開的文件。
編輯:我已經通過更專注的方式代碼,我發現了這個問題。在某個時間點,這些文件會被壓縮,這就解釋了大小的減少。我很愚蠢:) 主持人可以關閉這個問題,如果他覺得合適。
我的項目生成一些文本/二進制文件。如果我正常運行它,某些文件的大小會非常小(這表示出現了問題)。如果我從調試模式運行它(逐步執行代碼),文件將被正確生成。什麼會導致此Java行爲?
什麼會導致此行爲?我很確定我沒有任何未公開的文件。
編輯:我已經通過更專注的方式代碼,我發現了這個問題。在某個時間點,這些文件會被壓縮,這就解釋了大小的減少。我很愚蠢:) 主持人可以關閉這個問題,如果他覺得合適。
你的代碼是多線程的嗎?你是否正在嘗試閱讀一些你沒有給出另一個線程完成構建的機會,而當你正在逐步完成構建時,這並沒有體現出來?
例如,您是否調用某種「讀取」方法從文件中讀取數據,並假定您將始終取回您請求的字節數?
嘗試增加:
System.gc();
try { Thread.sleep(4000); } catch (Exception e) {}
System.gc();
...在程序結束。如果問題消失,那麼你忘記關閉()文件。上面的代碼是沒有解決方案的,它是一個hacky嘗試增加終結器運行的可能性。
添加了代碼。沒有什麼改變。 – Geo 2010-01-11 10:45:49
我肯定會試圖添加logging/printlns來調試問題(老派的風格!) – 2010-01-11 15:00:55
...或者你可以嘗試不同的JRE或Java版本,你永遠不會知道,它可能是一個錯誤。 – 2010-01-11 15:01:34
你有一些代碼發佈? – futureelite7 2010-01-11 09:53:39
是你的代碼多線程? – Jean 2010-01-11 09:54:25
代碼不是多線程的,並且有太多的類。 – Geo 2010-01-11 10:13:03