首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从命令行更改安装为Windows的Tomcat 9的Java堆大小?

如何从命令行更改安装为Windows的Tomcat 9的Java堆大小?
EN

Stack Overflow用户
提问于 2017-05-17 06:47:57
回答 2查看 4.2K关注 0票数 4

我在Windows 7 64位上安装了Tomcat 9作为服务。我想:

  1. 查看当前配置和活动的堆大小。
  2. 持久更新服务配置以使用不同的堆大小
  3. 验证Tomcat实际上正在使用新的堆大小。
  4. 从命令行执行所有这些操作。

对于1和3:我天真地尝试使用j控制台,但是我找不到那里的进程,因为Tomcat正在以的形式运行。虽然我了解了如何将j控制台作为本地系统帐户运行,但当Tomcat作为服务安装时,JMX似乎已被停用。

因此,通过JMX找出当前使用的内存大小似乎非常复杂(可能启用JMX远程,应该在TLS.之上)。

对于2:我认为是Tomcat文档的对应位置,它的内容如下:

代码语言:javascript
复制
 To update the service parameters, you need to use the //US// parameter.

 Update the service named 'Tomcat9'
 C:\> tomcat9 //US//Tomcat9 --Description="Apache Tomcat Server - http://tomcat.apache.org/ " ^
      --Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar

但我对这篇文章的理解不足以解决我的问题。特别是,我不想更改其他参数(比如描述、启动等)。

据我所知,在作为服务运行时,配置存储在Windows注册表中,因此tomcat/conf中的常规配置不适用或至少部分适用。

请注意,这个问题不是关于安装Tomcat,而是关于修改现有安装。另外,我不感兴趣的是某种(以某种方式)获得所需结果的麻烦事,但我对这样做的最佳实践感兴趣;而且,最好有指向参考文档的链接。

EN

回答 2

Stack Overflow用户

发布于 2017-05-17 06:59:31

给出链接到的文档

-JvmMx 最大内存池大小(以MB为单位)。(不在exe模式下使用。)

应该有助于控制的堆大小。

对于获取当前值,像jvmtop这样的工具可能是最简单的答案。

票数 0
EN

Stack Overflow用户

发布于 2017-05-17 08:21:18

对于1和3,有jmap。您只需要知道正在运行的tomcat实例的进程Id。

代码语言:javascript
复制
jmap -heap 7082

下面是我现在正在运行的jvm的输出(相关行):

代码语言:javascript
复制
Heap Configuration:
MinHeapFreeRatio    = 0
MaxHeapFreeRatio    = 100
MaxHeapSize         = 1073741824 (1024.0MB) // that is -Xmx flag

.... 

NewSize             = 357564416 (341.0MB) // 1
MaxNewSize          = 357564416 (341.0MB)
OldSize             = 716177408 (683.0MB) // 2

1 + 2 = -Xms flag

不幸的是,我无法回答2,因为我从来没有开始在windows上使用tomcat -作为一种服务(我几乎不知道这对windows意味着什么)。但假设这是一个由windows作为脚本启动的进程.

不应该:tomcat9 -Xms512M -Xmx2G...有效吗?再说一次,只是暗示一下,不确定。最后要注意的是,只有在jvm启动时才能更改堆,在运行时不能这样做,而tomcat显然正在运行(以防万一.)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44017510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档