第 16 章 JVM
16.1. 关于 JVM
16.1.1. 关于 JVM 设置
host.xml 和 domain.xml 配置文件里声明的,由负责启动和停止服务器进程的域控制器组件确定。而在独立服务器实例里,服务器的启动过程可以传入命令行参数。这可以通过命令行或管理控制台的 System Properties 屏幕里进行声明。
受管域的一个重要特征是可以定义多级别的 JVM 设置。您可以在主机、服务器组、服务器实例级别配置定义 JVM 设置。您可以用更专用的子元素覆盖父配置,这允许声明专有的服务器配置而无需在组或主机级别进行排除。这也允许其他级别继承父配置,直至在运行时传入或在配置文件里声明设置。
例 16.1. 域配置文件里的 JVM 设置
domain.xml 配置文件里的服务器组的 JVM 声明。
<server-groups>
<server-group name="main-server-group" profile="default">
<jvm name="default">
<heap size="64m" max-size="512m"/>
</jvm>
<socket-binding-group ref="standard-sockets"/>
</server-group>
<server-group name="other-server-group" profile="default">
<jvm name="default">
<heap size="64m" max-size="512m"/>
</jvm>
<socket-binding-group ref="standard-sockets"/>
</server-group>
</server-groups>
main-server-group 的组声明了大小为 64MB 的堆,其最大堆大小为 512MB。属于这个组的任何服务器都将继承这些设置。你可以为整个组、为某个主机、或者单个服务器修改这些设置。
例 16.2. 主机配置文件里的域设置
host.xml 配置文件里的服务器组的 JVM 声明。
<servers>
<server name="server-one" group="main-server-group" auto-start="true">
<jvm name="default"/>
</server>
<server name="server-two" group="main-server-group" auto-start="true">
<jvm name="default">
<heap size="64m" max-size="256m"/>
</jvm>
<socket-bindings port-offset="150"/>
</server>
<server name="server-three" group="other-server-group" auto-start="false">
<socket-bindings port-offset="250"/>
</server>
</servers>
server-two 的服务器属于 main-server-group 服务器组,它继承了 default JVM 组的设置。在前面的例子里,main-server-group 的主要堆大小是 512MB。通过声明更小的最大堆尺寸为 256MB,server-two 可以覆盖 domain.xml 设置来按需要调整性能。
独立服务器实例的 JVM 设置可以在启动服务器前通过设置 JAVA_OPTS 环境变量来声明。下面是在 Linux 命令行里设置 JAVA_OPTS 环境变量的例子:
[user@host bin]$ export JAVA_OPTS="-Xmx1024M"
C:\> set JAVA_OPTS="Xmx1024M"
EAP_HOME/bin 目录下的 standalone.conf 文件里,它包含了传入 JVM 的选项示例。
警告
16.1.2. 在管理控制台里显示 JVM 状态
表 16.1. JVM 状态属性
| 类型 | 描述 |
|---|---|
| Max | 可以用于内存管理的最大内存数量。最大可用的内存数用浅灰色条显示。 |
| Used | 已使用的内存数量,以深灰色的条显示。 |
| Committed | JVM 可使用的内存数量,以深灰色条显示。 |
| Init | JVM 从操作系统请求的用于内存管理的初始内存数量,以深灰色条显示。 |
过程 16.1. 在管理控制台里显示 JVM 状态
显示独立服务器实例的 JVM 状态
从屏幕顶部选择 标签页。展开 菜单,然后展开 菜单。选择 。显示受管域的 JVM 状态
从屏幕顶部选择 标签页。展开 菜单,然后展开 菜单。选择 。
- 受管域可以提供服务器组里的所有服务器实例的可视性,但它只允许您在服务器菜单里一次查看一个服务器。要查看服务器组里其他服务器的状态,请点击屏幕左边的 以选择组里显示的主机和服务器。选择所需的服务器或主机,JVM 细节将相应改变。点击 完成。
显示服务器实例的 JVM 设置的状态。
16.1.3. 配置 JVM
<jvm name="default"> <heap size="1303m" max-size="1303m"/> <permgen max-size="256m"/> <jvm-options> <option value="-XX:+UseCompressedOops"/> </jvm-options> </jvm>
要用 CLI 配置 JVM,请使用以下语法:
# cd /server-group=main-server-group/jvm=default
# :add-jvm-option(jvm-option="-XX:+UseCompressedOops")
{
"outcome" => "success",
"result" => undefined,
"server-groups" => undefined
}
# :read-resource
# Expected Result:
[domain@localhost:9999 jvm=default] :read-resource
{
"outcome" => "success",
"result" => {
"agent-lib" => undefined,
"agent-path" => undefined,
"env-classpath-ignored" => undefined,
"environment-variables" => undefined,
"heap-size" => "1303m",
"java-agent" => undefined,
"java-home" => undefined,
"jvm-options" => ["-XX:+UseCompressedOops"],
"max-heap-size" => "1303m",
"max-permgen-size" => "256m",
"permgen-size" => undefined,
"stack-size" => undefined,
"type" => undefined
}
}
要删除 jvm-options 条目,请使用下列语法:
# cd /server-group=main-server-group/jvm=default
# :remove-jvm-option(jvm-option="-XX:+UseCompressedOops")
# Expected Result:
[domain@localhost:9999 jvm=default] :remove-jvm-option(jvm-option="-XX:+UseCompressedOops")
{
"outcome" => "success",
"result" => undefined,
"server-groups" => undefined
}

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.