Java中也会产生内存泄漏,内存泄漏分两种情况:
第一种: 程序在运行过程中产生了无法被回收的对象。
eg1:长生命周期的变量持有短生命周期对象的引用时,导致短生命周期对象不能被回收,可能会导致内存溢出。
eg2: 将对象存入到HashMap中,然后该对象参与hashcode运算的某个域发生了改变,导致无法从HashMap中找到原先保存的对象,就产生了不可回收的对象了。
第二种: 程序运行过程中需要的分配的内存大小超过了JVM可以提供的最大值。
eg1:开辟了一个超大的数组,但是JVM内存设置过小。
eg2: 程序中出现死循环,循环中不断创建许多对象且不可回收时。