当前位置: 首页 > 面试题库 >

什么是元数据GC阈值,我如何调整它?

蒲曦
2023-03-14
问题内容

在一个应用程序中,我有以下内容 -verbose:gc

[GC (Metadata GC Threshold)  8530310K->2065630K(31574016K), 0.3831399 secs]
[Full GC (Metadata GC Threshold)  2065630K->2053217K(31574016K), 3.5927870 secs]
[GC (Metadata GC Threshold)  8061486K->2076192K(31574016K), 0.0096316 secs]
[Full GC (Metadata GC Threshold)  2076192K->2055722K(31574016K), 0.9376524 secs]
[GC (Metadata GC Threshold)  8765230K->2100440K(31574016K), 0.0150190 secs]
[Full GC (Metadata GC Threshold)  2100440K->2077052K(31574016K), 4.1662779 secs]

这是什么 “ Metadata GC阈值” 以及如何降低它。注意:尽管Full
GC花费很长时间进行清理,但实际上并没有清理太多,即,如果不这样做,效果会更好。


问题答案:

日志消息表明GC是由 Metaspace 分配失败引起的。 元 空间
保存类元数据。它们已经出现在Java
8中以代替 PermGen

这是一些调整元
空间的 选项。
您可能要设置以下一个或几个选项:

-XX:MetaspaceSize=100M 设置分配的类元数据空间的大小,该类元数据空间将在首次超过垃圾收集时触发垃圾收集;

-XX:InitialBootClassLoaderMetaspaceSize=32M 增加启动类加载器元空间;

-XX:MinMetaspaceFreeRatio=50 使元空间更加积极地增长;

-XX:MaxMetaspaceFreeRatio=80 减少元空间缩小的机会;

-XX:MinMetaspaceExpansion=4M 元空间扩展的最小大小;

-XX:MaxMetaspaceExpansion=16M 不使用完整GC扩展元空间的最大大小。



 类似资料:
  • 在应用程序中,我有以下 这个“元数据GC阈值”是什么,以及如何降低它。注意:虽然完整的GC花了很长时间进行清理,但实际上清理得并不多,也就是说,如果不这样做,它会更好。

  • 本文向大家介绍GC是什么? 为什么要有GC?相关面试题,主要包含被问及GC是什么? 为什么要有GC?时的应答技巧和注意事项,需要的朋友参考一下 答 GC(Garbage Collection) GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一: 当程序需要更多的堆空间时,GC需要进行垃圾清理工作,暂停所有线程,找出所有无被引用的对象,进

  • 问题内容: 我有一个类似下面的属性。登录的所有内容都超出WARN级别。我不了解此处设置的调试阈值。有人可以解释阈值是什么吗? 问题答案: 这里有两件事:一个记录器和一个附加器。不幸的是,您为两者选择了相同的名称,但这并不太清楚。 记录器的最低级别设置为警告,这意味着您使用该记录器记录的所有没有警告级别的内容都将被忽略。 记录器接受了消息后,会将其发送到一个或几个附加程序(发送到文件,控制台,邮件服

  • 问题内容: 我试图避免Full GC(来自下面的gc.log示例)在生产中的Tomcat中运行Grails应用程序。关于如何更好地配置GC的任何建议? 14359.317:[完整GC 14359.317:[CMS:3453285K- > 3099828K(4194304K),13.1778420秒] 4506618K-> 3099828K(6081792K),[CMS彼尔姆:261951K-> 1

  • 对于Java 8之后的JVM 当metaspace的大小

  • 本文向大家介绍请问GC是什么? 还有为什么要有GC?相关面试题,主要包含被问及请问GC是什么? 还有为什么要有GC?时的应答技巧和注意事项,需要的朋友参考一下 考察点:回收 GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存