【发布时间】:2011-12-06 21:27:50
【问题描述】:
我正在尝试使用以下方法编写包含一些数据的文件:
public static <T extends SomeClass> void writeFile(String buffer, Class<T> clazz, int fileNumber) {
String fileType = ".txt";
File file = new File(clazz.getName()+fileNumber+fileType);
PrintWriter printWriter = null;
try {
FileWriter writer = new FileWriter(file);
printWriter = new PrintWriter(writer);
printWriter.print(buffer);//error occurs here
printWriter.flush();
printWriter.close();
System.out.println("created file: "+file.getName());
} catch (IOException e) {
e.printStackTrace();
} finally{
if(printWriter!=null){
printWriter.flush();
printWriter.close();
}
}
System.out.println("Done!");
}
缓冲区字符串包含 +-6mb 的数据,当我运行代码时,我在缓冲区中得到一个 java.lang.OutOfMemoryError。
【问题讨论】:
-
您是否使用 -Xmx 命令行选项为您的 Java VM 提供了合理的内存量?
-
您是否尝试将缓冲区写入较小的块而不是单个调用?
-
顺便说一句,我认为 PrintWriter.write 使用内存的原因是它将整个字符串编码为一个字节数组,然后写入。
标签: java file-io out-of-memory heap-memory