一个文件大概7,80MB, 
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
String temp = br.readLine();
StringBuffer sb = new StringBuffer();
while((temp=br.readLine()!=null)
{
   sb = sb.append(temp);
}
 String content = new String(sb);为什么老是报 OutOfMermory  内存溢出的错误 ,我在eclipse.ini 中也调了。
eclipse.ini-clean
-showsplash
com.genuitec.myeclipse.product.ide
--launcher.XXMaxPermSize
256m
-vmargs
-Xms256m
-Xmx512m
-Duser.language=en 
-XX:PermSize=128M 
-XX:MaxPermSize=256M怎么解决,谢了。

解决方案 »

  1.   

    String content = new String(sb); 
    改成
    String content = sb.toString(); 
    试试
      

  2.   

    1L 的原因是?
    我想问lz的内存够吗?
      

  3.   

    单文件的jvm内存进行设置
    默认的java虚拟机的大小比较小,在对大数据进行处理时java就会报错:java.lang.OutOfMemoryError。
    设置jvm内存的方法,对于单独的.class,可以用下面的方法对Test运行时的jvm内存进行设置。
    java -Xms64m -Xmx256m Test
    -Xms是设置内存初始化的大小
    -Xmx是设置最大能够使用内存的大小(最好不要超过物理内存大小)网上找的不知道有没有用
      

  4.   

    定一个长度。
    new StringBuilder((int) file.length() / 3); 
    同时,如果你一行的数据过大的话,temp=br.readLine() ,会十分影响内存。
    最好用一个char[]做缓存。
    char[] carr = new char[1024];
    in.read(carr);
    carr的长度你自己运行一下然后自己调。
    String content = new String(sb);
    之后,
    sb=null;
    System.gc();
    迅速把 sb清除掉。
      

  5.   

    虚拟机运行参数,我用-Xms32m -Xmx256m就可以了。
    你的程序根据情况自己调。