Tomcat环境变量的完美组合是什么?

Tomcat环境变量的完美组合是什么?

我在 apache-tomcat 服务器中托管了一个应用程序 UI。我已在 bin/setenv.sh 文件中将环境变量设置为:

CATALINA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=512m -XX:MaxPermSize=1024m

每次我执行一个巨大的操作时(例如:使用应用程序中的所有数据生成报告),'Java堆空间'异常即将到来,然后后续应用程序将无法正常工作。我必须再次重新启动服务器。

我的问题是:

什么是-Xms 和-Xmx?

我应该为它们设置什么值以避免 JavaHeapSpace 异常?

它们的最大值和最小值是多少?

如果取决于服务器配置,我在下面分享了我的服务器配置。请提出建议。我真的很想避免这个问题。

我的服务器配置:RAM:8GB,处理器:八核,硬盘:500GB

如果你们需要任何相关信息,请告诉我。

答案1

什么是-Xms 和-Xmx?

Xms256m ---> 为应用程序选择较低的初始 JVM 堆大小。所以,XMS指定将用于启动服务器的内存量(以兆字节为单位)。

Xmx512m ---> 选择应用程序允许的最大 JVM 堆大小。所以,Xmx指定专用于运行服务器的最大内存量(以兆字节为单位)。

我应该为它们设置什么值以避免 JavaHeapSpace 异常?

这不取决于您的系统配置,而是取决于您要执行的应用程序类型。所以,所有这些都是您提供的不必要的细节。您应该关心您的 JVM 是 32 位还是 64 位。就像,我有这样的 JVM 配置来执行我的本地最小自然应用程序 ---> -J-Xms100m -J-Xmx200m -J-XX:PermSize=100m

它们的最大值和最小值是多少?

这受到您的系统和 JVM 的特性的限制。

32 位 JVM 的最大理论堆限制为 4G。由于各种额外的限制,例如可用交换、内核地址空间使用、内存碎片和虚拟机开销,实际上该限制可以低得多。在大多数现代 32 位 Windows 系统上,最大堆大小范围为 1.4G 到 1.6G。在 32 位 Solaris 内核上,地址空间限制为 2G。在运行 32 位 VM 的 64 位操作系统上,最大堆大小可能更高,在许多 Solaris 系统上接近 4G。

如果您的应用程序需要非常大的堆,您应该在支持 64 位应用程序的操作系统版本上使用 64 位 VM。

查看这个链接了解更多

相关内容