我们正在将Web应用程序从Java 7迁移到Java8。我们已经定义了PermSize jvm param参数。

由于Java 8会忽略此参数,因此不再使用。元空间是Java 8中引入的,其默认大小随动态增长而不受限制(限于物理内存)。

我的问题是我是否需要为metaspace jvm params确定Web应用程序的最佳值,或者使用default是一个好主意?

更新:

我的Web应用程序上的更多信息:
我的Web应用程序基于strutsspring框架。通常每分钟需要4k个请求。该应用程序部署在tomcat 8.5上,并且不承载任何其他Web应用程序。但是,同一虚拟机上运行着多个tomcat实例。当前的-Xms-Xmx值设置为1g

最佳答案

您可以考虑以下多项内容:

  • 初始元空间大小:在启动应用程序时,由于JVM必须调整元空间的大小,您看到负面和可衡量的影响吗?然后,您可能应该设置最小大小。仍然我会尽量避免这种情况,因为这会在应用程序增长时很容易被忘记。 -XX:MetaspaceSize=<NNN>
  • 最大元空间大小:当元空间增长到特定大小时,您是否希望应用程序失败?还是要在这方面限制服务器占用的资源?然后,您可能应该为元空间-XX:MaxMetaspaceSize=<NNN>
  • 设置最大大小
  • Metaspace自由比率:您是否动态加载许多不同的类?然后,您可以在元空间上定义自由比率,以便始终有足够的空间用于新类,并且在紧急情况下无需调整大小。 -XX:MinMetaspaceFreeRatio=<NNN>-XX:MaxMetaspaceFreeRatio=<NNN>

  • 我的建议是坚持默认设置,对其进行测试,仅在需要时使用react。

    09-10 08:59
    查看更多