我在Windows 7 64位上安装了Tomcat 9作为服务。我想:
对于1和3:我天真地试图使用jconsole,但是我找不到那个进程,因为Tomcat是作为本地系统服务运行的。虽然我发现如何将jconsole作为本地系统帐户运行,但是当Tomcat作为服务安装时,似乎停用了JMX。
因此,通过JMX查找当前使用的内存大小似乎至少非常复杂(可能启用JMX远程,应该通过TLS ...)。
For 2:我认为this是Tomcat文档的对应位置,其中包含:
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,而是关于修改现有安装。此外,我对一些hacky方式不感兴趣,以某种方式获得所需的结果(不知何故),但最好的做法是做到这一点;为此提供参考文档的链接是完美的。
答案 0 :(得分:0)
答案 1 :(得分:0)
对于1和3,有jmap
。您只需要知道运行tomcat实例的进程ID。
jmap -heap 7082
以下是我现在正在运行的jvm的输出(相关行):
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运行得很明显(以防万一......)。