C++中内存泄漏本身存在多长时间,以及等效的Java程序有何不同

How long does memory leak itself exist in C++ and how does an equivalent Java program differ?

本文关键字:Java 何不同 程序 泄漏 内存 长时间 存在 C++      更新时间:2023-10-16

这里是C++中的一段简单代码,它只为某个名为Foo的类的实例动态分配内存,然后忘记释放内存。假设Foo非常简单。

int main() {
  Foo *abcd = new Foo();
  return 0;
}

既然程序终止了,那真的是内存泄漏吗如果我重新运行此程序,以前分配的内存是否可以分配?

这是等效的Java代码:

public static void main(String[] args) {
  Foo abcd = new Foo();
}

由于程序很快终止,如果垃圾收集器没有足够的时间释放内存怎么办如果我重新运行此程序,以前分配的内存是否可以分配?

在这两种情况下,当程序完成时,所有使用的内存都会被回收。内存泄漏在运行很长时间(几天、几周、几个月甚至几年)的程序中最为严重。