我在将map转成文件流的时候遇到报错
ByteArrayOutputStream mem_out = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(mem_out);
out.writeObject(hashMap);
out.close();
mem_out.close();
byte[] bytes = mem_out.toByteArray();//这里会报错
return bytes;
似乎是内存溢出
我这个map键不多,但值很多,是解析一张图片的.
本人初学者,求老码们帮帮忙
你把异常贴出来看看,是不是map中存储的内容有些没有序列化造成的。你这个是序列化的操作吧。
如果是
byte[]bytes=mem_out.toByteArray();//这里会报错
这种错误可以增大内存空间,增大堆的内存,配置-Xms和-Xmx这两个内存参数。
ByteArrayOutputStream字节数不能太大,最大是int的最大值。
for(inti=0;i<cbw;i++){for(intj=0;j<cbh;j++){//循环整张图片//1024*768intpixel=bt.getPixel(i,j);//获得该点颜色List<int[]>points=hashMap.get(pixel);//判断该键值是否存在if(null==points){points=newArrayList<int[]>();hashMap.put(pixel,points);}points.add(newint[]{i,j});}}
然后就是调用前面的代码了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。