java 多线程操作StringBuffer出现 java.lang.OutOfMemoryError: Java heap space

海会圣贤 2015-11-05 11:14:20
多线程频繁操作如下:
StringBuffer sb = new StringBuffer("");
String s = "";
while ((s = br.readLine()) != null) {
sb.append(s + "\r\n");
}


操作完后,资源都有关闭。

一定时间以后,线程就会挂掉,报: java.lang.OutOfMemoryError: Java heap space

大家有没有好的办法解决?
...全文
579 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
oO临时工Oo 2015-11-06
  • 打赏
  • 举报
回复
你的br是什么,如果是文件字符量太大的话,理论上是会OutOfMemery的,只能用部分缓存在磁盘上的策略。就像用windows的记事本打开一个100M的TXT文件,肯定卡得不行。 另个,以下方式以可以改善 sb.append(s); sb.append("\r\n");
番茄鲨鱼面 2015-11-06
  • 打赏
  • 举报
回复
1.把本地jvm的堆内存调大些。 2.控制线程数量。 3.缩小变量的作用域;变量在使用完之后赋值null。
dracularking 2015-11-06
  • 打赏
  • 举报
回复
可以用java profiling工具查看
  • 打赏
  • 举报
回复
参考 br有多大? 如果很大的话建议用流的方式去读取
心随自在飞 2015-11-06
  • 打赏
  • 举报
回复
楼上说的都可以试试 我来看看就好
zuxianghuang 2015-11-05
  • 打赏
  • 举报
回复
不要一直放在内存,读取一部分后,写入到硬盘,数据库,文件都可以啊。

81,091

社区成员

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

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