我试图读取只有一行的文本文件。文件大小超过50Mb。当我尝试使用以下代码阅读它时,它给出了
java.lang.outofmemory异常jvm 堆大小不足
我将java堆内存更改为1GB。但它仍然给出了同样的例外。
设置JAVA_OPTS = -Xms1024m -Xmx1024m
我使用foollowing code pragment来读取文件。
BufferedReader Filein1 = new BufferedReader(新的FileReader(新的 文件(“C:\ ABC \ MsgStream.txt”))); S = Filein1.readLine();
有人可以告诉我如何克服这个问题。提前谢谢。
答案 0 :(得分:4)
JAVA_OPTS环境变量仅受某些应用程序的尊重(例如,通常用于启动Tomcat的包装器脚本)。 java
命令没有注意它。
您需要将选项放在java
命令行...类名之前; e.g。
java -Xms1024m -Xmx1024m ... some.pkg.MainClass ...
(1Gb堆应该足以缓冲50Mb文件。)
答案 1 :(得分:0)
JAVA_OPTS实际上是在输出中运行的吗?您可能需要将它们实际放在正在运行的命令行上,或者在其上包含$ JAVA_OPTS。
答案 2 :(得分:0)
_JAVA_OPTIONS 不是 JAVA_OPTS
如果您有类似
的课程public class Test {
public static void main(String args[]) {
System.out.println("value : " + System.getProperty("foo"));
}
}
然后你应该
> set _JAVA_OPTIONS=-Dfoo=bar
> java Test
> value : bar