Java内存泄露系列--内存泄露的原因及解决方案(大全)
原文网址:Java内存泄露系列—内存泄露的原因及解决方案(大全)_IT利刃出鞘的博客-CSDN博客
简介
本文介绍Java中内存泄露的一些原因与解决方案。
如果内存泄露的空间足够大,就会导致内存溢出(OOM)。
内存泄露的原因
堆内存中一个对象不再使用时,垃圾回收器却无法从内存中删除他们,导致内存泄露。
内存泄露的影响
- 长时间连续运行时性能严重下降;
- 出现OOM导致应用崩溃;
内存泄露的检测与分析
通常我们可以借助MAT、LeakCanary等工具来检测应用程序是否存在内存泄漏。
1、MAT是一款强大的内存分析工具,功能繁多而复杂。
2、LeakCanary则是由Square开源的一款轻量级的第三方内存泄漏检测工具,当检测到程序中产生内存泄漏时,它将以最直观的方式告诉我们哪里产生了内存泄漏和导致谁泄漏了而不能被回收。
内存泄露的类型
主要有以下类型:
- ThreadLocal
- static字段
- 未关闭的资源
- 集合容器
- 改变哈希值
- 内部类持有外部类
- finalize()方法
- 常量字符串
ThreadLocal
上边是文章的部分内容,为便于维护,全文已迁移到此网址:Java-内存泄露的原因及解决方案(大全) - 自学精灵
还没有评论,来说两句吧...