我刚刚从 grails 2.4.3 迁移到 grails 2.5.6,从 Java 7 迁移到 Java 8。我正在尝试在我的应用程序中设置最佳元空间大小。
实际元空间大小对应用程序性能有很大影响:
使用的元空间和响应平均时间:
- 200 MB - 339 毫秒
- 300 MB - 380 毫秒
- 400 MB - 430 毫秒
- 500 MB - 460 毫秒
- 600 MB - 530 毫秒
元空间在 90 分钟内从应用程序开始增长到 620MB。
这是我的实际 gc 设置:
-Xms14G -Xmx14G\
-XX:+UseG1GC\
-XX:ParallelGCThreads=8\
-XX:ConcGCThreads=4\
-XX:MaxGCPauseMillis=200\
-XX:+UseLargePages\
-XX:+UseLargePagesInMetaspace\
-XX:+AlwaysPreTouch\
-XX:InitialBootClassLoaderMetaspaceSize=512M\
-XX:MetaspaceSize=512M\
-XX:MinMetaspaceExpansion=8M\
-XX:MaxMetaspaceExpansion=32M\
-XX:+UseStringDeduplication\
-XX:+ParallelRefProcEnabled\
-XX:-TieredCompilation\
当 MaxMetaspaceSize 设置为 512M 时,运行几个小时后,我的应用程序会在一小时内减慢 1 或 2 倍。响应时间约为 10 秒。
有人遇到过这样的问题吗?在您的应用程序中,元空间对性能有这样的影响吗?