内存溢出问题!!!

xxHedgehog 2014-04-08 10:33:13

显示红线一行出问题,提示问题内存溢出,栈空间不足,已经改过-xms -xmx,还是不行。。。
...全文
4140 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxHedgehog 2014-04-08
  • 打赏
  • 举报
回复
引用 7 楼 dollyn 的回复:
800M的文件都读到一个Stringbuffer里么。。。
是这样的
霜之哀伤 2014-04-08
  • 打赏
  • 举报
回复
800M的文件都读到一个Stringbuffer里么。。。
xxHedgehog 2014-04-08
  • 打赏
  • 举报
回复
引用 5 楼 jinsong1213 的回复:
据我了解啊,按行读取,不能设置缓冲区大小,你别按行读取了。
可是在bufferedreader里面只有readline是关于string的方法啊?不按行读怎么读?
全能码农-ss 2014-04-08
  • 打赏
  • 举报
回复
据我了解啊,按行读取,不能设置缓冲区大小,你别按行读取了。
xxHedgehog 2014-04-08
  • 打赏
  • 举报
回复
引用 1 楼 huxiweng 的回复:
bufferreader 读得太多了。你需要设置一个缓冲大小。每次读取一点之后flush掉
怎么加啊,完全没用过。。
xxHedgehog 2014-04-08
  • 打赏
  • 举报
回复
引用 2 楼 is_zhoufeng 的回复:
你文件是多大的
800多M
_jerrytiger 2014-04-08
  • 打赏
  • 举报
回复
你文件是多大的
teemai 2014-04-08
  • 打赏
  • 举报
回复
bufferreader 读得太多了。你需要设置一个缓冲大小。每次读取一点之后flush掉
只是_曾经 2014-04-08
  • 打赏
  • 举报
回复
引用 7 楼 dollyn 的回复:
800M的文件都读到一个Stringbuffer里么。。。
版主已经给你指出了。。
只是_曾经 2014-04-08
  • 打赏
  • 举报
回复
你把jvm内存上限调整至1-2G应该就不会内存溢出。或者你把文件大小调整到50-100M也不会溢出。总之就是一句话,你这种写法,文件多大就会占多大内存。
只是_曾经 2014-04-08
  • 打赏
  • 举报
回复
sb.append(s);每次都把s追加到sb中,相当于你把800M文件全部写入sb中。
wawy000 2014-04-08
  • 打赏
  • 举报
回复
public BufferedReader(Reader in, int sz) 这个方法后边的int sz就是设置缓冲区吧
全能码农-ss 2014-04-08
  • 打赏
  • 举报
回复
引用 6 楼 u014600232 的回复:
[quote=引用 5 楼 jinsong1213 的回复:] 据我了解啊,按行读取,不能设置缓冲区大小,你别按行读取了。
可是在bufferedreader里面只有readline是关于string的方法啊?不按行读怎么读?[/quote]

StringBuffer sb = new StringBuffer();
			byte[]  bs = new byte[1024];
	        int length = -1;
	        while((length=inStrm.read(bs))>-1){
	        	sb.append(new String(bs,0,length,"utf-8"));
	        }
	        String  ret = sb.toString();

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧