在刚开始接触Java之前,一直弄不明白这个问题。刚在博客园首页上看到这个问题,上面的解释非常清楚,我这里简要摘录过来。
原引为为:https://www.cnblogs.com/liululee/p/11056779.html
Java内存泄露的原因主要可以主要归类为以下四方面:
1.Performance(性能):通常与过多的对象创建与删除有关,垃圾收集的长时间延迟,过多的操作系统页面交换等相关联。
2.Resource Constraints(资源约束):当可用内存很少或内存过于分散而无法分配大对象时,就会造成内存泄露。这可能是本机的或者更常见的是与Java堆相关。
3.Java heap leaks(Java堆泄露):这是最经典的内存泄露,Java对象在不释放的情况下不断创建。这是由潜在的引用对象引起的。
4.Native Memory leaks(本机内存泄露):与Java堆之外的任何不断增长的内存利用率相关联,例如由JNI代码,驱动程序,甚至JVM分配
原文:https://www.cnblogs.com/linwenbin/p/11058724.html