Tomcat - 如何检查当前使用的内存设置

Ora*_*ver 7 memory tomcat java

我已经使用 Server 2008 和 IIS 7 设置了 Tomcat 服务器。
如何判断 JAVA_OPTS 环境变量是否正在被实际使用?

我之前听说我必须编辑 service.bat 文件才能使用 JAVA_OPTS 环境变量,但是我怎么知道它是否成功?

我一直无法找出是否有办法在日志或其他更定量的东西中查看它。我能想到的尝试测试它的唯一方法是编辑变量并尝试判断性能是否存在差异。我将 JAVA_OPTS 设置为以下内容:

-server -Xmx1k -Xms1k-Xmn1k -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:PermSize=1k -XX:MaxPermSize=1k  
Run Code Online (Sandbox Code Playgroud)

另外,我发现文档说要将 service.bat 中的以下行更改为:

"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" --JvmMs 128 --JvmMx 256
Run Code Online (Sandbox Code Playgroud)

到:

"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" %JAVA_OPTS%
Run Code Online (Sandbox Code Playgroud)

我运行命令时没有出现错误

service install ServiceName
Run Code Online (Sandbox Code Playgroud)

到目前为止,在我使用更改的内存设置重新安装服务之前,一切似乎都像往常一样快速运行,这让我认为 JAVA_OPTS 没有影响任何事情。

对不起,如果这是一个广泛的问题,但我还没有找到一个很好的线索来了解后端实际发生的事情。有人可以对此有所了解吗?

Ora*_*ver 7

好的,我找到了我正在寻找的信息,所以我将接受我的答案,因为我提供了更多详细信息,但是 +1 给 David Levesque 以获取线索。

我发现我试图设置的内存设置没有被使用。为了更改内存设置,我使用了 \bin 文件夹中的 tomcat7w。

运行以下命令:

tomcat7w //ES//<ServiceName>
Run Code Online (Sandbox Code Playgroud)

然后应该弹出以下内容:

Java 服务管理器

单击带下划线的 Java 选项卡并在突出显示的区域中添加参数。


为了检查这一点,我使用了 jinfo 可执行文件(在 \bin 文件夹中)。Jinfo 打印给定 Java 进程的 Java 配置信息。使用以下语法运行此命令:

jinfo -flags PID-of-Tomcat-executable
Run Code Online (Sandbox Code Playgroud)

下面的小脚本节省了我每次都必须找出 Tomcat 的 PID 的时间,所以我想我不妨把它贴在这里:

@echo off
for /f "tokens=1,2 delims= " %%i in ('=tasklist ^| findstr "tomcat"') do (
    echo Tomcat Executable = %%i
    echo Tomcat Process ID = %%j
    set tomcat_pid=%%j
)
echo %tomcat_pid%
%JAVA_HOME%\bin\jinfo -flags %tomcat_pid%
Run Code Online (Sandbox Code Playgroud)


Dav*_*que 5

您可以使用jinfoJDK 附带的实用程序在运行时查询 VM 标志和系统属性。