默认情况下是否收集metaSpace?
是的,GC会在元空间变满时在元空间上运行,它还会动态增加(如果允许)分配给元数据的内存。
甚至通过添加-XX:+
CMSClassUnloadingEnabled之类的参数来收集PermGen的GC,那么什么使metaSpace比PermGen更好呢?
改进之处在于元空间的动态扩展,而这是permgen无法做到的。
metaSpace基于本机内存,因此它将Java对象保留在磁盘上而不是VM上吗?
根据对元空间的描述,它仅使用本机内存(不分页)。
根据Pierre-Hugues
Charbonneau(链接)的研究,很明显,元空间的引入并不一定解决OOM问题,它充其量只是解决该问题的绷带,它试图动态调整元空间的内存大小以适应越来越多的类被加载,可能会产生不可控制地增长的副作用(只要本地内存允许)。
通过将
MaxmetaspaceSize参数设置为JVM并运行提供的示例程序,可以实现著名的OOM错误。
非常感谢Pierre-Hugues Charbonneau。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)