私はこれをかなり長い間グーグルで検索しようとしましたが、成功しませんでした。ここで問題が解決することを願っています。
最初の関数:
public void startTFServer(Channel c) {
try {
ProcessBuilder procBuilder = new ProcessBuilder("tfs.exe");
procBuilder.redirectErrorStream();
Process proc = null;
System.out.println(Runtime.getRuntime().freeMemory());
proc = procBuilder.start();
System.out.println(Runtime.getRuntime().freeMemory());
StreamGobbler gobbler = new StreamGobbler(proc.getInputStream(), "STD_OUT");
gobbler.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
プロセス出力をキャプチャするスレッド:
private class StreamGobbler extends Thread {
InputStream is;
String type;
private StreamGobbler(InputStream is, String type) {
this.is = is;
this.type = type;
}
@Override
public void run() {
try {
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(type + "> " + line);
}
}
catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
問題: アプリケーションを実行すると、毎回同じ場所で入力が中断されます。「Process クラス」で実行しているアプリケーションは、実行にかなりのメモリを必要とするサーバーです。これが、プロセスがアプリのロードを完了できない理由の 1 つになる可能性がありますか? メモリがなくなると思っていましたが、本当に診断できません。
どんな助けでも大歓迎です!