当前位置: 首页 > 知识库问答 >
问题:

在tomcat中设置JVM内存选项?

羊慈
2023-03-14

将-Xms和-Xmx设置为相同的值有什么缺点吗?并将-XX:MaxPermSize和-XX:PermSize设置为相同的值。

建议在这里使用。

如果服务器中有足够的物理可用存储器,是否建议为两个选项设置更高的值?

更新:

环境Java1.6。Solaris 10的0_45

Java版本"1.6.0_45"

Java(TM)SE运行时环境(build 1.6.0_45-b06)

JavaHotSpot(TM)64位服务器VM(构建20.45-b01,混合模式

共有3个答案

涂浩皛
2023-03-14

在服务器应用程序的情况下,建议使用ms和mx大小作为相同的值。原因是当它试图增加内存时,它会给JVM带来负担。如果堆大小相同,很容易估计完整的gc时间。

在烫发内存的情况下,在服务器预热后。这意味着大多数类已经加载,所以烫发大小通常不会改变。所以在你可以使用gc log选项测量烫发大小后,最好设置固定的烫发大小。

它将在服务器配置中更加稳定。

此外,如果您带来更大的堆大小(通过使用-mx选项)。这将需要更多的完整gc时间。在完全gc时,JVM处于冻结状态。所以你需要注意最大尺寸。

在我看来,如果你有足够的记忆力。最好运行额外的JVM实例(使用集群等)

庞意智
2023-03-14

>

话虽如此,还有很多其他因素也起着非常重要的作用。例如,应用程序使用内存的方式也决定了堆大小设置的效果。例如,计算密集型独立应用程序的内存需求与执行大量I/O的典型客户机-服务器电子商务应用程序完全不同。

要记住的另一点是底层操作系统。内存最终由操作系统根据请求分配给JVM,这种情况的发生方式因操作系统而异。处理的唯一方法是通过特定JVM实现的留档。

因此,对你的问题的回答可能并不难,是/否。这是主观的。

周浩博
2023-03-14

在Java的旧版本中,设置-xms和-xmx是一个很好的实践,当自适应调整大小不够好时。在Java

您必须记住的另一件事是,服务器上有8GB RAM并不意味着您可以将其完全用于Java。您必须为系统缓冲区留下一些

在Java

 类似资料:
  • 当我运行用pyspark编写的spark作业时,我会运行一个jvm,它的Xmx1g设置似乎无法设置。以下是ps aux的输出: 我的问题是,如何设置此属性?我可以使用SPARK\u DAEMON\u memory和SPARK\u DRIVER\u memory设置主内存,但这不会影响pyspark的派生进程。 我已经尝试了JAVA\u选项,或者实际查看了包的文件,但无法理解这是在哪里设置的。 设置

  • 我使用tomcat7和jvm内存选项设置为 使用这些设置,服务器无法启动,出现错误 即使我将NewSize增加到512或1024,它也是一样的,只有当我删除Newsize选项时才有效。Foor堆大小为2048MB,这些大小有效吗?

  • 问题内容: 我的开发机器上有8GB RAM,并试图运行Apache Tomcat(7.0.29)同时托管Artifactory(2.6.3)和Jenkins(1.479)。我试图找到Jenkins的内存需求,但看起来他们的Wiki断了。 在中,我添加了以下命令: 这应该将Tomcat的JVM的大小保持在(基本上)1到3 GB之间,为我留出足够的空间来容纳其他内容, 并 为Tomcat留出足够的内存

  • 我一直在尝试将一个应用程序部署到Azure应用程序服务(免费层),由于内存限制,该应用程序不断被杀死,因为它使用了太多内存。当然,解决这一问题的最简单方法是在启动时在JVM上设置Xmx900m,但是我尝试的方法到目前为止都不起作用。 我所尝试的: 将Xmx900m添加到web。config(配置)httpPlatform标签,位于参数属性(开始处) 我可以在Azure App Service Ja

  • 我正在使用由BitNami EC2 AMI提供支持的Apache Solr。Solr正在运行,但我想更改启动配置以增加分配给JVM的内存量。 我尝试在at/opt/bitnami/apachesolr/scripts/ctl修改启动脚本。通过修改以下行: SOLR=“$JAVABIN-Dsolr.SOLR.home=$SOLR\u home-Djetty.logs=$INSTALL\u PATH/

  • JVM内存分为:1.方法区2.堆区3.堆栈4.PC寄存器5.本机堆栈 > 现在假设我有一个属性为“int[]dealCodes”(int基元数组)的类。根据内存管理,一旦处理代码初始化,内存中就会有连续内存分配(total_elements*4字节)。所以,如果数组大小为10,则JVM内存中有40字节的分配。 我的问题是,这40个字节将分配到哪个区域(堆还是堆栈)? 我对数组的理解是:它就像任何其