简介
何为内存泄漏
动态分配的内存空间,在使用完毕后未得到释放,结果导致一直占据该内存单元,直到程序结束。这个现象称之为内存泄漏。因此良好的代码规范,可以有效地避免这些错误。
内存泄漏带来的问题
1)长时间运行,程序会变卡,性能严重下降。
2)OutOfMemoryError错误,系统直接挂掉。
导致内存泄漏的原因
1)大量使用静态变量(静态变量与程序生命周期一样)
2)IO/连接资源用完没关闭(记得执行close操作)
3)内部类的使用方式存在问题(实力内部类或默认引用外部类对象)
4)缓存(Cache)应用不当(尽量不要使用强引用)
5)ThreadLocal应用不当(用完记得执行remove操作)
内存泄漏分析常用手段
应用内存分析工具 JProfiler, YourKit, Java VisualVM等。
在开发阶段时或者在测试环节,增加压力测试。
认真对待开发工具给出的告警提示,该关闭的资源尽早关闭。
选择合适的时机进行代码 review。
通俗地说,我们可以将内存泄漏视为一种疾病,如果不治愈,随着时间的推移,它可能导致致命的应用程序崩溃。内存泄漏很难解决,发现它们需要对 Java 语言的复杂掌握和掌握。在处理内存泄漏时,没有一种万能的解决方案,因为泄漏可能通过各种不同的事件发生。
但是,如果我们采用最佳实践并定期执行严格的代码排查和分析,那么我们可以将应用程序中内存泄漏的风险降到最低。
————————————————