gpt4 book ai didi

java - jvm和Tomcat设置Heap内存的区别

转载 作者:行者123 更新时间:2023-11-30 06:09:25 25 4
gpt4 key购买 nike

我的系统中安装了 Java 8,并且能够从命令行查看和设置 JVM 的初始堆大小和最大堆大小。我正在使用 tomcat 7,在阅读一些教程时,我找到了一种使用 setenv.bat 文件更改 tomcat 堆大小的方法。

我的问题是上面两件事有什么不同? tomcat的启动脚本或批处理文件使用系统中使用JAVA_HOME环境变量安装的java 8。

如果我的 JVM 堆空间是 1024 M,并且我为 tomcat 设置了 512 M 堆空间,是否意味着我的 tomcat 应用程序最多可以使用 JVM 1024 M 堆中的 512 M 堆?

最佳答案

内存设置适用于 JVM,而不是 Tomcat

您可以创建一个单独的文件 %CATALINA_HOME%\bin\setenv.bat$CATALINA_HOME/bin/setenv.sh 并将环境变量放在那里。

所以我想设置 JAVA_OPTS 变量:

set JAVA_OPTS=-Xmx512m

对于 Xmx:

指定内存分配池的最大大小(以字节为单位)。该值必须是 1024 的倍数且大于 2MB。附加字母 k 或 K 表示千字节,或附加 m 或 M 表示兆字节。 默认值为 64MB。在 Solaris 7 和 Solaris 8 SPARC 平台上,该值的上限约为 4000m;在 Solaris 2.6 和 x86 平台上,该值的上限约为 2000m,减去开销量。因此,简单来说,您的意思是 Java 使用最多 1024 MB 的可用内存。

NOTE: there is NO SPACE between -Xmx and 1024m

资源链接:

  1. How to Change JVM Heap Setting (-Xms -Xmx) of Tomcat – Configuresetenv.sh file – Run catalina.sh
  2. How to Increase Apache Tomcat HeapSize (JVM Heap) in Eclipse IDE(integrated development environment) to Avoid OutOfMemory

UPDATE1:设置多个 Tomcat 实例

使用 CATALINA_BASE 环境变量可以创建多个 Tomcat 实例。每个实例都使用通用的二进制发行版,但使用自己的conf、webapps、temp、日志和工作目录。每个实例也有自己的 JVM,因此也有自己的内存池。如果您通过 JAVA_OPTS 将最大内存定义为 512MB,则每个实例将尝试分配最多 512MB。

更多详情,您可以查看本教程:Connecting Apache's Web Server to Multiple Instances of Tomcat

资源链接:

  1. 5 Scenarios and Best Practices for Running Multiple Instances ofTomcat or tc Server

关于java - jvm和Tomcat设置Heap内存的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37965886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com