请教高手:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

来源:百度知道 编辑:UC知道 时间:2024/06/22 21:19:03
我 写了这样的代码static Vector v=new Vector();
public static void randomWrite() throws IOException
{
int i,j;
char t = 0;
boolean append=true;
FileWriter fw=new FileWriter("xulie.txt",append);
for (i=0;i<1000000;i++)//不要忘了改回原状
{
j=(int)((Math.random()*10)%4+1);
switch (j)
{
case 1:t='A';
break;
case 2:t='T';
break;
case 3:t='C';
break;
case 4:t='G';
break;

}
v.add(t);
//写文件
fw.write(t);
}
在main()函数中让上面的程序重复执行1000次的时候会出Exception in thread "main" java.lang.OutOfMemoryError: Java heap space的错误,如何解决?
如果执行5次的时候是正常的!这样就相当于生成了500万个。要生成30亿个,如果用多线程行吗?如可以的话如何实现?

多线程是不可以的,但你可以制作一个缓冲类。用缓冲管理,然后把存于内存中的内容存成多个临时文件。

内存溢出,你在for (i=0;i<1000000;i++)//这里的数设置的太大了 呵呵内存不够了,估计你电脑不行啊

用缓冲流包装下
然后 flush()

内存溢出是说你要存的东西太多,内存里存不下了,没办法解决,你为什么要生成3亿个字母啊,3亿个字母是 3E/1024/1024 = 285兆,你加跟内存试试?

内存溢出