您的位置 首页 java

JAVA内存泄露2-3经典案例

JAVA内存泄露2-3经典案例

OOM

太多份相同的对象导致的 OOM坑

原因∶不管是程序的实现不合理,还是因为各种框架对数据的重复处理、加工和转换,相同的数据在内存中不一定只占用一份空间

解决∶针对内存量使用超大的业务逻辑,比如缓存逻辑、文件上传下载和导出逻辑,我们在做容量评估时,可能还需要实际做一下 Dump,而不是简单地假设数据只有一份

WeakHashMap 出现 OOM

原因∶WeakHashMap 的 Key 虽然是弱引用,但是其Value持有Key 中对象的强引用会导致Key 无法回收,无限往WeakHashMap 加入数据同样会 OOM

解决∶使用 Spring 提供的 ConcurrentReferenceHashMap,或使用WeakReference来包装Value

7年前的代码奉上,给大家看看,如何使用弱引用。

JAVA内存泄露2-3经典案例

Tomcat 参数不合理导致的 OOM 血案

原因∶ 设置不合理的 server.max-http- header -size=10M, 每个请求需要占用 20M 内存,并发大的时候导致 OOM

解决∶要根据实际需求来修改参数配置, 可以考虑预留 2 到5 倍的量。容量类的参数背后往往代表了资源,设置超大的参数就有可能会占用不必要的资源,在并发量大的时候因为资源大量分配导致 OOM

关注转发,分享更多填坑知识。

文章来源:智云一二三科技

文章标题:JAVA内存泄露2-3经典案例

文章地址:https://www.zhihuclub.com/171234.shtml

关于作者: 智云科技

热门文章

网站地图