试图从大文本文件java中读取一些字节

时间:2016-08-01 08:23:02

标签: java text binary out-of-memory heap

我需要从700MB文件中读取几个字节(比如1 MB,2 MB ......)。

我尝试了几种方法,但在每个人中我得到了:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

我尝试使用JDK 8流:

try (Stream<String> lines = Files.lines(Paths.get("myfilename"),
                                        Charset.defaultCharset())) {
    lines.forEachOrdered(line -> doSomething(line));
}

并使用InputStream / OutputStream

    InputStream is = new FileInputStream("myfilename");
    ByteArrayOutputStream result = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    int length;
    while ((length = is.read(buffer)) != -1) {
        result.write(buffer, 0, length);
    }
    is.close();
    return result.toString("UTF-8");

我有什么遗漏的吗? 谢谢!

是的,它是二进制文件。所以这就是问题......我怎样才能阅读其中的一部分?

1 个答案:

答案 0 :(得分:0)

在32位模式下使用JVM,可分配的最大堆大小为1280 MB。所以,如果你想超越它,你需要在64模式下调用JVM。

尝试使用java执行选项:

xms =分配的最小内存

xmx =分配的最大内存

JVM_ARGS="-d64 -Xms1024m -Xmx15360m "
jdk1.X/bin/java $JVM_ARGS -jar myprogram.jar