文件阅读脱离Java中的堆空间?

时间:2014-12-24 20:10:32

标签: java data-structures collections io heap

我正在使用java.io读取日志文件和grep for ERROR / WARN等...使用

//FileManipulator class
   public static List<String> execute(String command) throws IOException{
            List<String> output = new ArrayList<String>();

            Process process = Runtime.getRuntime().exec(new String[] { "bash", "-c", command });

            InputStream input = process.getInputStream();
            InputStreamReader isr = new InputStreamReader(input);
            BufferedReader br = new BufferedReader(isr);

            String line = null;
            while ((line = br.readLine()) != null){
                output.add(line);
            }   
            input.close();

            return output;
        }

我在运行相同的

时得到了这个消息
Exception in thread "pool-1-thread-1" java.lang.OutOfMemoryError: Java heap space
        at java.util.Arrays.copyOfRange(Arrays.java:2694)
        at java.lang.String.<init>(String.java:203)
        at java.io.BufferedReader.readLine(BufferedReader.java:349)
        at java.io.BufferedReader.readLine(BufferedReader.java:382)
        at com.citi.muni.msdc.sanity.util.FileManipulator.execute(FileManipulator.java:220)
        at com.citi.muni.msdc.sanity.util.FileManipulator.grepWarnings(FileManipulator.java:300)

所以似乎有些文件的大小可能太大而无法处理,有人可以建议我如何编辑当前的方法来停止堆问题。

由于 SK

1 个答案:

答案 0 :(得分:0)

您尝试阅读的文件有多大?

您可以尝试增加堆大小。 看这里:Increase heap size in Java