next java release附带来自Hotspot JVM的removal of the permanent generation。 java开发人员应该知道什么后果?
答案 0 :(得分:1)
来自您关联的JEP:
将实际的字符串和类静态移动到Java堆可能会导致内存不足异常或GC数量增加。
这是我能想到的主要后果之一。您的应用程序可能会尝试加载新类,从而触发GC甚至获取OOME,因为没有为此类数据保留的显式内存区域。某些应用程序可能能够从OOME中恢复,但我不确定在类加载过程中抛出它是否属实,尤其是对于使用PermGen构建的遗留应用程序。
另一方面,不必明确配置PermGen会很好,特别是如果不需要更大的部分。这也可能使PermGen中的数据更容易GCing并降低那些可怕的PermGen空间错误的风险。
但是,如果存在内存泄漏,删除PermGen可能只会使跟踪它们变得更加困难。如果由于某种原因(例如在较旧的jboss版本中)无法卸载类,那么阻止哪个内存部分没有多大区别。泄漏仍然存在,稍后可能会变得明显,因为限制较少。
这只是我的2美分,我可能在这里完全错了,但这些是我目前可以想到的含义。
答案 1 :(得分:0)
是的,您是对的PermGen已从Java 8中删除,并替换为Metaspace。
对于Java Developer,我认为没有任何后果,但是,他们需要知道Metaspace所需的新JVM参数。