JavaでOutOfMemoryが発生した時の対応策を教えていただきたいです。
処理内容は以下のような形です。コマンドの実行結果は場合によってはとても多くなる事があるのはわかっているのですが、出来ればListに詰めた後で後続処理を実行したいのです。このような場合の対応策としてはどのような方法がありますでしょうか?
JavaVMのチューニングとかは正直調べても中々すぐには理解できずどうするのが正解なのか分かりません。コード上で対応できるのが一番なのですが、、、
どうぞよろしくお願い致します。
処理内容(色々省略してますがこんな感じです)
lang
1List<String> testList = new ArrayList<>(); 2Process process = Runtime.getRuntime().exec(cmd); 3BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "utf-8")); 4br.lines().forEach(line -> { 5 testList.add(line); 6});
エラー内容
lang
1java.lang.OutOfMemoryError: Java heap space 2 at java.util.Arrays.copyOf(Arrays.java:3181) ~[na:1.8.0_25] 3 at java.util.ArrayList.grow(ArrayList.java:261) ~[na:1.8.0_25] 4 at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235) ~[na:1.8.0_25] 5 at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227) ~[na:1.8.0_25] 6 at java.util.ArrayList.add(ArrayList.java:458) ~[na:1.8.0_25]

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/04/28 04:42
2015/04/28 04:54
2015/04/29 15:51
2015/04/29 19:15
2015/04/30 08:00
2015/04/30 21:12