Java8 已经从它的内存区域中完全删除了 permgen space。它会完全阻止内存泄漏问题吗? ...

Java8 has completely removed permgen space from it's memory area. will it completely stop memory leak issues ? ...

这是我从 oracle 站点得到的:

区域:HotSpot / gc

剧情简介

The command line flags PermSize and MaxPermSize have been removed and are 
ignored. If used on the command line a warning will be emitted for each.

Java HotSpot(TM) Server VM warning: ignoring option PermSize=32m; support 
was removed in 8.0
Java HotSpot(TM) Server VM warning: ignoring option MaxPermSize=128m;
support was removed in 8.0

不兼容的性质

source

没有。当然内存泄漏仍然是可能的。实际上大部分内存泄漏出现在普通堆中,而不是 permgen/metaspace,因此此更改不会影响它们。例如,可以在静态字段中创建一个 HashMap 并在不删除元素的情况下逐渐填充它。这样堆消耗会不断增长。

同时将 class 数据从 permgen 移动到 metaspace 并不意味着它不需要 space。它只是分配在堆外区域,可以通过 MaxMetaspaceSize 选项(默认为无穷大)进行控制。此更改主要是内部的(使 JVM 中的某些事情更容易)并且不会影响普通程序员。它解决的唯一可见问题是,使用默认设置,您现在不太可能在加载太多 classes 时遇到问题。但是,如果您有严重的 class 加载程序泄漏,这将无济于事:您仍然受到机器上物理内存和交换大小的限制。