2014-11-06 20 views
1

这似乎是一个肯定的问题或者是没有问题的问题,我本可以预料它会在某个地方得到回答,但我当然找不到它。 java中的内存泄漏并不像使用C或C++这样的语言开发那么频繁,但它们可能会发生。Java内存泄漏 - 程序终止时清除?

大多数操作系统都会清除程序终止时分配的内存,除了共享内存等特定情况。这对于JVM何时退出仍然如此?如果我无意中在Java中创建内存泄漏,它是否会被JVM或Linux或Windows操作系统清除?

回答

3

是的,所有内存将在JVM终止后释放。

+2

和打开文件句柄,网络套接字等相同(但是,在完成时主动关闭它们仍然是一个好习惯) – Thilo 2014-11-06 01:24:03

+0

这个答案有点理想。 JNI有潜在的泄漏,不安全的调用,堆外缓存等。 – spudone 2014-11-06 01:41:37

+0

@spudone:真的吗?至少就进程内存而言,在进程退出后操作系统不会可靠地释放所有内存? – Thilo 2014-11-06 02:45:48