我需要从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");
我有什么遗漏的吗? 谢谢!
是的,它是二进制文件。所以这就是问题......我怎样才能阅读其中的一部分?
答案 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