一个文件大概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怎么解决,谢了。
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怎么解决,谢了。
改成
String content = sb.toString();
试试
我想问lz的内存够吗?
默认的java虚拟机的大小比较小,在对大数据进行处理时java就会报错:java.lang.OutOfMemoryError。
设置jvm内存的方法,对于单独的.class,可以用下面的方法对Test运行时的jvm内存进行设置。
java -Xms64m -Xmx256m Test
-Xms是设置内存初始化的大小
-Xmx是设置最大能够使用内存的大小(最好不要超过物理内存大小)网上找的不知道有没有用
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清除掉。
你的程序根据情况自己调。