开发者社区> 问答> 正文

在map转byte流上遇到报错,求救 ?报错

我在将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键不多,但值很多,是解析一张图片的.
本人初学者,求老码们帮帮忙

展开
收起
爱吃鱼的程序员 2020-06-23 16:04:27 471 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    你把异常贴出来看看,是不是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});}}

    然后就是调用前面的代码了

    2020-06-23 16:04:43
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载