Я замечаю утечку дескриптора с моей Java-программой, когда пытаюсь выполнить внешний процесс.Мой пример кода приведен ниже.Не могли бы вы подсказать мне, что я делаю неправильно?
Я запускаю эту программу, используя Open JDK 10 на ОС Windows 10.Есть ли способ свернуть ручку?
import java.util.*;
import java.io.*;
public class Test {
public static void main(String args[]) {
while (true) {
Process p = null;
try {
// p = new ProcessBuilder("ipconfig").start();
p = Runtime.getRuntime().exec("cmd /c ipconfig");
BufferedReader br[] = new BufferedReader[2];
br[1] = new BufferedReader(new InputStreamReader(p.getErrorStream()));
br[0] = new BufferedReader(new InputStreamReader(p.getInputStream()));
int errCode = p.waitFor();
try {
br[0].close();
} catch (Exception a) {}
try {
br[1].close();
} catch (Exception a) {}
} catch (Exception grrr) {}
finally {
try {
closeStreams(p);
p.destroy();
} catch (Exception r) {
}
}
}
}
static void closeStreams(Process p) throws IOException {
p.getInputStream().close();
p.getOutputStream().close();
p.getErrorStream().close();
}
}