Java 内存泄漏

Java中,垃圾回收(析构函数的工作)是使用垃圾回收自动完成的。但是,如果代码中有引用它们的对象怎么办?它无法取消分配,即无法清除其内存。如果这种情况一再发生,并且创建或引用的对象根本没有被使用,它们就会变得无用。这就是所谓的内存泄漏

如果超过了内存限制,则程序将通过抛出错误(即“ OutOfMemoryError”)而终止。这就是为什么始终建议删除对对象的所有引用,以便Java Garbage Collector(垃圾回收器)可以自动销毁它的原因。

下面的示例说明了在尝试使用过多内存时编译器如何耗尽空间-

示例

import java.util.Vector;

public class Demo{

   public static void main(String[] args){

      Vector my_v1 = new Vector(314567);

      Vector my_v2 = new Vector(784324678);

      System.out.println("这是要打印的最后一行");

   }

}

输出结果

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

at java.base/java.util.Vector.(Vector.java:142)

at java.base/java.util.Vector.(Vector.java:155)

at Demo.main(Demo.java:7)

一个名为Demo的类包含了一个主函数,其中有两个向量对象,通过给它们分配过大的空间而创建。最后的打印行只是用来检查编译器是否达到这一行。实际上,它不会,因为这些向量占用的空间很大,所以无法分配大量内存,从而导致错误。

以上是 Java 内存泄漏 的全部内容, 来源链接: utcz.com/z/347444.html

回到顶部