java.lang.outofmemory异常jvm堆大小不足

时间:2011-02-16 01:44:25

标签: java

我试图读取只有一行的文本文件。文件大小超过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();

有人可以告诉我如何克服这个问题。提前谢谢。

3 个答案:

答案 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