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

大家有没有好的办法解决?
...全文
400 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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。
回复
科學信仰 2015-11-06
可以用java profiling工具查看
回复
参考 br有多大? 如果很大的话建议用流的方式去读取
回复
心随自在飞 2015-11-06
楼上说的都可以试试 我来看看就好
回复
zuxianghuang 2015-11-05
不要一直放在内存,读取一部分后,写入到硬盘,数据库,文件都可以啊。
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-11-05 11:14
社区公告
暂无公告