关于java:PermGen和Metaspace有什么区别?

What is the difference between PermGen and Metaspace?

直到Java 7在JVM内存中有一个名为PyMGEN的区域,其中JVM用来保存它的类。在Java 8中,它被删除并被称为Meta SpACE的区域替换。

permgen和元空间之间最重要的区别是什么?

我知道的唯一区别是,不能再抛出java.lang.OutOfMemoryError: PermGen space,并且忽略了vm参数MaxPermSize


主要的差异从一个用户的角度来看,我认为你的答案之前应力不够元空间是城市的默认自动增加它的大小(两个"标的IP -我们提供permgen),但总是有一个固定的最大尺寸。你可以看到一个固定的最大为元空间与JVM参数,但你不能让permgen自动增长。

两个大的冰度,它只是一个名称的改变。当我回来permgen introduced,有没有Java EE或动态类加载(联合国),一类是母猪一次-这是卡在JVM的内存直到永久关下这样的一代。在当今unloaded鸭-可能是在lifespan的JVM元空间,让更多的社会意识的地区,那里有冰把元数据。

在过去的两个java.lang.Class包含instances鸭都遭受从过去leaks类装载器。唯一的区别是,与元空间的默认参数,它需要时间的概念,直到你的症状(因为它会增加汽车的AA。AA,即它可以),你就继续推问题没有解决它了。想象otoh效应在《大学运行了我们的记忆可以享受严重超过只是permgen JVM运行了,所以我不确定它是多个改进。

不管你是用一个JVM与permgen或与元空间,如果你是做动态卸载类,你应该采取措施对两类装载器leaks,例如,利用我市图书馆的类装载器泄漏的预防。


再见,再见。permgen元空间,凯蒂

permgen已被完全删除。

元空间垃圾的垃圾收集(collection of the Dead类和类装载器触发一次"类冰reaches MaxMetaspaceSize元数据的使用。

空间Metadata是语言的本体是不成功的Java heap,现在搬Metadata有两个本地存储区已知的MetaspaceAA。

在简单的词,

由于这类元数据allocated冰了本地存储器的最大可用空间是完全可用的系统内存。因此,你会不会遇到语言OOM errors鸭比IP spilling为《交换空间。

在不同的PermGen不均,你的类的加载问题是泄漏了。所以,是的,你将有两个静态监控你的消费水平和accordingly A,由于泄漏的消费会比你的全IP的本地存储器。

一些其他的物品,与分析:link1,link2鸭。


在短元空间大小的增加,汽车在本地存储器作为负载所需的两级元数据,如果不是-XX:MaxMetaspaceSize限制。