我在将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 (int i = 0; i < cbw; i++) {
for (int j = 0; j < cbh; j++) {//循环整张图片//1024*768
int pixel = bt.getPixel(i, j); //获得该点颜色
List<int[]> points = hashMap.get(pixel); //判断该键值是否存在
if (null == points) {
points = new ArrayList<int[]>();
hashMap.put(pixel, points);
}
points.add(new int[] { i, j });
}
}
然后就是调用前面的代码了