HashMap内存如何释放?

每次请求都是将同样键值对存入HashMap中,请求多了出现卡顿甚至页面奔溃的现象!
查看网上例子,使用clear()方法只能清除值,堆内存依旧被占用,无法解决。
使用Map = null的方式,出现空指针异常!

部分代码如下:

 for(int x=0; x<4; x++){
            for (int y=0; y<4; y++){
                os.paintRegionOfLevel(graphics2D, 0, 0,256*x, 256*y, 256, 256, 0);
                graphics2D.dispose();

                ImageIO.write(result, "jpg", baos);
                byte[] bytes = baos.toByteArray();
                hash2.put(y+"_"+x, bytes);
//                list.add(hash2);
            }
        }
        hash1.put("code", 0);
        hash1.put("msg", "返回成功!");
        hash1.put("data",hash2);
     
        return hash1;

页面崩溃和你的前端渲染数据太多有关系,和后台没关系,如果每次的数据都一样,建议首次初始化保存在缓存,不必清理,下次直接从缓存拿就可以。

浏览器页面崩溃跟HashMap可能关系并不大。HashMap使用不当确实可能出现内存泄露的问题,但是仅从你给的代码,看不出什么东西。clear() 方法调用后,堆内存没有被回收,可能是还没有触发GC的条件。或者确实是发生了内存泄露,导致HashMap里面的对对象不能被GC。

好的,数据确实多,那前端有没有什么手段可以防止页面出现奔溃的现象?

懒加载,按需加载,比如地图渲染的要素过多,或者3D模型的贴图过多,可以按照渲染的区域加载,再者就是怼硬件,只要涉及到3D,那么普通的电脑肯定效果不好的