发布于2026-07-06 阅读(0)
扫一扫,手机访问
Ja va内存泄漏的祸根,往往藏在最不起眼的角落——那些看似无害的集合变量,一旦持有了不该长期持有的对象,就会变成堆内存的黑洞。问题不在于集合本身,而在于它“不该长期存着却一直存着”的对象引用。这些对象本该随业务逻辑结束就被回收,却因被静态或长生命周期容器强持有,成了GC Root不可达路径上的“活死人”。

静态集合(static List/Map/Set)的生命周期与类加载器一致,只要类没卸载,里面所有元素就永远无法被GC回收。哪怕只是缓存一个用户会话对象,若没配容量限制、过期策略或清理入口,1000个请求就会积累1000个对象,堆内存只增不减。
不是static的集合也可能酿成泄漏——只要它属于一个长期存活的对象(如Spring单例Bean、Servlet、Connection Pool)。举例来说:
不用等OOM,现在动手就能验证:
有些集合看着“合理”,实则暗藏陷阱:
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8