Java中的内存泄漏
在 C 中,程序员完全控制动态创建对象的分配和释放。如果程序员不销毁对象,C 中就会发生内存泄漏,
Java进行自动垃圾收集。但是,可能存在垃圾收集器不收集对象的情况,因为存在对它们的引用。可能存在应用程序创建大量对象但不使用它们的情况。仅仅因为每个对象都有有效的引用, Java中的垃圾收集器不能销毁对象。这种类型的无用对象称为内存泄漏。如果分配的内存超出限制,程序将通过上升 OutOfMemoryError 终止。因此,如果不再需要某个对象,强烈建议使该对象符合垃圾收集器的条件。否则我们应该使用一些进行内存管理的工具来识别无用的对象或内存泄漏,例如:
- 惠普 OVO
- 惠普 J 仪表
- JP探针
- IBM 蒂沃利
Java
// Java Program to illustrate memory leaks
import java.util.Vector;
public class MemoryLeaksDemo
{
public static void main(String[] args)
{
Vector v = new Vector(214444);
Vector v1 = new Vector(214744444);
Vector v2 = new Vector(214444);
System.out.println("Memory Leaks");
}
}
输出:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space exceed