我有一個批處理過程,可以將WAV順序轉換爲MP3。問題是,在數千人之後,有太多的文件保持打開狀態,並且會在文件上限內運行。如何測試「打開的文件太多」問題
它這樣做的原因是因爲在SystemCommandTasklet代碼:
FutureTask<Integer> systemCommandTask = new FutureTask<Integer>(new Callable<Integer>() {
public Integer call() throws Exception {
Process process = Runtime.getRuntime().exec(command, environmentParams, workingDirectory);
return process.waitFor();
}
});
這有讓我依賴於JVM清理過程,留下的文件打開,這樣的討厭的副作用。
我已經重寫它是這樣:
FutureTask<Integer> systemCommandTask = new FutureTask<Integer>(new Callable<Integer>() {
public Integer call() throws Exception {
Process process = Runtime.getRuntime().exec(command, environmentParams, workingDirectory);
int status = process.waitFor();
process.getErrorStream().close();
process.getInputStream().close();
process.getOutputStream().flush();
process.getOutputStream().close();
process.destroy();
return status;
}
});
我95%肯定,這個工程在我的Mac(感謝LSOF),但我怎麼做一個適當的測試,將工作在任何系統證明我正在嘗試做的是實際工作?
我目前的問題是N似乎在我的開發機器上是無限的。 – 2010-08-27 20:47:56
如果您無法在系統上重現問題,則需要一個允許重現運行測試問題的系統。 或者檢查文件是否實際打開,但我猜你的系統上沒有文件打開,這樣也不起作用。 – 2010-08-27 21:50:00