Pet*_*rey 34 java performance garbage-collection java-8
在一个应用程序中,我有以下内容 -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]
Run Code Online (Sandbox Code Playgroud)
什么是"元数据GC阈值"以及如何减少它.注意:虽然Full GC花了很长时间进行清理,但它实际上会清理很多,即如果不这样做会更好.
apa*_*gin 45
日志消息告知GC是由Metaspace分配失败引起的. 元空间包含类元数据.它们已经出现在Java 8中以取代PermGen.
以下是调整Metaspaces的一些选项.
您可能需要设置以下一个或多个选项:
-XX:MetaspaceSize=100M 设置分配的类元数据空间的大小,该空间将在第一次超出时触发垃圾回收;
-XX:InitialBootClassLoaderMetaspaceSize=32M 增加引导类加载器Metaspace;
-XX:MinMetaspaceFreeRatio=50 使Metaspaces变得更加积极;
-XX:MaxMetaspaceFreeRatio=80 减少Metaspaces萎缩的机会;
-XX:MinMetaspaceExpansion=4M 扩展Metaspace的最小尺寸;
-XX:MaxMetaspaceExpansion=16M 没有Full GC扩展Metaspace的最大大小.