使用此页面来查看和更改应用程序服务器进程的 Java 虚拟机 (JVM) 配置设置。
要查看此管理控制台页面,请连接到管理控制台,然后浏览至“Java 虚拟机”面板。
![[AIX Solaris HP-UX Linux Windows]](../dist.gif)
对于 IBM® i 和分布式平台,单击server_name。然后,在“服务器基础结构”部分中,单击
对于 z/OS® 平台,请遵循下列其中一种途径。| 信息 | 值 |
|---|---|
| 应用程序服务器 | 单击server_name。然后,在“服务器基础结构”部分中,单击 |
| Deployment Manager | 单击系统管理 > Deployment Manager。然后,在“服务器基础结构”部分中,单击 |
| Node Agent | 单击系统管理 > Node Agent > node_agent。然后,在“服务器基础结构”部分中,单击 |
![[AIX Solaris HP-UX Linux Windows]](../dist.gif)
对于 IBM i 和分布式平台,请遵循下列其中一个途径。| 信息 | 值 |
|---|---|
| 应用程序服务器 | 单击server_name。然后,在“服务器基础结构”部分中,单击 |
| Deployment Manager | 单击系统管理 > Deployment Manager。然后,在“服务器基础结构”部分中,单击 |
| Node Agent | 系统管理 > Node Agent > node_agent。然后,在“服务器基础结构”部分中,单击 |
指定 Java 虚拟机代码用来查找类的标准类路径。
如果需要将一个类路径添加至此字段,那么请将每个类路径条目输入到一个单独的表行中。您不必在每个条目的末尾添加冒号或分号。
| 信息 | 值 |
|---|---|
| 数据类型 | 字符串 |
指定 JVM 代码的引导程序类和资源。只有支持引导程序类和资源的 JVM 指令才能使用该选项。
如果需要将一个类路径添加至此字段,那么请将每个类路径条目输入到一个表行中。您不需要在每个条目的结尾处添加冒号或分号。
如果需要将多个类路径添加至此字段,那么根据 JVM 所在的操作系统不同,可以使用冒号 (:) 或分号(;)将这些类路径分隔开。
如果需要将多个类路径添加至此字段,那么根据节点所在的操作系统不同,可以使用冒号 (:) 或分号(;)将这些类路径分隔开。
指定是否对类装入使用详细调试输出。缺省情况为不启用详细类装入。
如果启用了详细类装入,那么调试输出将被发送至其中一个本机进程日志。
| 信息 | 值 |
|---|---|
| 数据类型 | 布尔型 |
| 缺省值 | false |
指定是否对垃圾回收使用详细调试输出。缺省情况为不启用详细垃圾回收。
如果启用了详细垃圾回收,那么调试输出将被发送至其中一个本机进程日志。
| 信息 | 值 |
|---|---|
| 数据类型 | 布尔型 |
| 缺省值 | false |
在启用此字段的情况下,每当垃圾回收器运行时报告会写至输出流。此报告应让您知道 Java 垃圾回收进程的运行状况。
83.29/3724.32 * 100 = 2.236 percent
如果您进行垃圾回收所花的时间超过 5%,并且频繁进行垃圾回收,那么可能需要增加 Java 堆大小。
要确定已分配的堆是否在增大,在完成每个垃圾回收周期之后就查看仍未分配的堆所占的百分比,并验证此百分比是否未继续下降。如果可用空间所占的百分比继续下降,那么说明从一次垃圾回收到下一次垃圾回收之后,堆大小在逐渐增大。这种情况表示应用程序可能存在内存泄漏。
对于转换用户: V7.0 和先前版本使用 optthruput 垃圾回收算法。在 V8.0 和更高版本中,缺省值设置为分代垃圾回收器。此垃圾回收算法可以提高性能。已将以下
JVM 选项添加至 WebSphere Application Server 启动命令:-Xgcpolicy:gencon。如果您喜欢使用 optthruput 垃圾回收算法,那么可以除去
-Xgcpolicy:gencon,使用
optthruput 垃圾
回收算法。trns
在 z/OS 平台上,还可以发出 MVS 控制台命令 modify display, jvmheap 来显示 JVM 堆信息。另外,您可检查服务器活动和时间间隔 SMF 记录。JVM 堆大小还可用于 PMI 并可使用 Tivoli® Performance Viewer 来监视。
指定是否对本机方法调用使用详细调试输出。缺省情况为不启用详细 JAVA 本机接口 (JNI) 活动。
| 信息 | 值 |
|---|---|
| 数据类型 | 布尔型 |
| 缺省值 | false |
指定 JVM 代码可使用的初始堆大小(以兆字节计)。如果此字段保留为空白,那么将使用缺省值。
对于 z/OS 来说,控制器的缺省初始堆大小为 48 MB,而服务方的缺省初始堆大小为 128 MB。这些缺省值同时适用于 32 位和 64 位配置。
![[AIX Solaris HP-UX Linux Windows]](../dist.gif)
对于 IBM i 和分布式平台,缺省初始堆大小为 50 MB。
最佳实践: 对于大多数应用程序来说,使用这些缺省值就足够了。bprac
避免故障: 对于 IBM i 来说,初始堆大小必须始终小于最大堆大小。不要将初始堆大小和最大堆大小属性设置为同一个值。gotcha增大此设置可改进启动性能。减少了进行垃圾回收的次数,并且性能提高了 10%。
继续增大 Java 堆大小以提高吞吐量,直到此堆变得太大以致物理内存无法容纳它为止。如果堆大小超过了可用物理内存量,并且发生了页面调度,那么性能将显著下降。
指定 JVM 代码可使用的最大堆大小(以兆字节计)。如果此字段保留为空白,那么将使用缺省值。
缺省最大堆大小为 256 MB。此缺省值同时适用于 32 位和 64 位配置。
增大最大堆大小设置可提高启动性能。当您增大最大堆大小时,减少进行垃圾回收的次数,并且性能还将提高 10%。
通常,增大此设置将提高吞吐量,直到此堆变得太大以致于物理内存中无法容纳它为止。如果堆大小超过了可用物理内存量,并且发生了页面调度,那么性能将显著下降。因此,您为此属性指定的值允许堆包含在物理内存中十分重要。
为了防止发生页面调度,为此属性指定的值应能保证每个处理器至少有 256 MB 物理内存,而每个应用程序服务器至少有 512 MB 物理内存。如果因为页面调度导致处理器占用率很低,那么在可能的情况下,请增加可用内存而非最大堆大小。增大最大堆大小可能会降低性能而不是提高性能。
最佳实践: 这些缺省值可适用于大多数应用程序。如果您认为垃圾回收进行得太频繁,那么可启用详细垃圾回收属性。如果垃圾回收进行得太频繁,那么请增大 JVM 堆的最大大小。bprac![[AIX Solaris HP-UX Linux Windows]](../dist.gif)
指定是否使用 HProf 概要分析程序支持。要使用另一个概要分析程序,请使用 HProf 参数设置指定定制概要分析程序设置。缺省情况为不启用 HProf 概要分析程序支持。
如果您将运行 HProf 属性设置为 true,那么必须将命令行概要分析程序参数指定为 HProf 参数属性的值。
| 信息 | 值 |
|---|---|
| 数据类型 | 布尔型 |
| 缺省值 | false |
![[AIX Solaris HP-UX Linux Windows]](../dist.gif)
指定要传递给启动应用程序服务器进程的 JVM 代码的命令行概要分析程序参数。当 HProf 概要分析程序支持处于启用状态时,可以指定这些参数。
仅当“运行 HProf”属性设置为 true 时才需要 HProf 参数。
指定是否以调试方式运行 JVM。缺省情况是不启用调试方式支持。
如果您将调试方式属性设置为 true,那么必须将命令行调试参数指定为调试参数属性的值。
| 信息 | 值 |
|---|---|
| 数据类型 | 布尔型 |
| 缺省值 | false |
指定传递到启动应用程序服务器进程的 JVM 代码的命令行调试参数。当调试方式属性设置为 true 时,就可以指定这些参数。
如果对同一个节点上的多个应用程序服务器启用调试,那么请验证为地址参数指定的值不相同。地址参数定义用于调试的端口。如果将两个都启用了调试的服务器配置为使用同一个调试端口,那么这两个服务器可能无法正常启动。例如,可能使用调试参数 address=7777(这是调试地址参数的缺省值)同时配置了这两个服务器。
如果对多个应用程序服务器启用调试,那么请验证为地址参数指定的值不相同。地址参数定义用于调试的端口。如果将两个都启用了调试的服务器配置为使用同一个调试端口,那么这两个服务器可能无法正常启动。例如,可能使用调试参数 address=7777(这是调试地址参数的缺省值)同时配置了这两个服务器。
| 信息 | 值 |
|---|---|
| 数据类型 | 字符串 |
| 单位 | Java 命令行参数 |
指定要传递给用于启动应用程序服务器进程的 Java 虚拟机代码的命令行参数。
避免故障: 如果该参数指出它仅适用于 IBM Developer Kit,那么就不能将该参数用于另一个供应商(例如,Microsoft 或
Hewlett-Packard)提供的 JVM。gotcha![[z/OS]](../ngzos.gif)
-DhotRestartSync:如果要启用同步服务的热重新启动同步功能,请指定 -DhotRestartSync。此功能对同步服务指示安装运行于当 Deployment Manager 不处于活动状态时未进行配置更新的环境中。因此,当 Deployment Manager 或 Node Agent 服务器重新启动时,该服务不必执行完整存储库比较。启用此功能可以提高在 Deployment Manager 或 Node Agent 重新启动之后执行第一个同步操作的效率,对于包括混合发布单元、使用多个节点以及运行多个应用程序的安装来说更是如此。
-Dcom.ibm.crypto.provider.doAESInHardware: 如果要启用随 IBM SDK and Runtime Environment for AIX®, Java Technology Edition V7 提供的高级加密标准 (AES) 功能,请将此选项设置为 true。AES 是用于在多个循环中加密和解密数据的对称块密码。启用此功能可在 WebSphere Application Server SSL 处理时改善性能。
![[AIX Solaris HP-UX Linux Windows]](../dist.gif)
-Xquickstart
最佳实践: 适合于早期的平均速度比长期运行吞吐量更为重要的应用程序 -Xquickstart。在某些调试方案、测试装置和短时间运行的工具中,可以将启动时间缩短 15% 到 20%。bprac
避免故障: IBM i 不支持此参数。gotcha![[AIX Solaris HP-UX Linux Windows]](../dist.gif)
-Xverify:none 如果您希望在装入类期间不验证类,那么可指定 -Xverify:none。使用 -Xverify:none 时将禁用 Java 类验证,从而可使启动时间缩短 10% 到 15%。但是,如果指定了此参数,那么将检测不到已损坏或无效的类数据。如果装入了已损坏的类数据,那么 JVM 的行为可能会发生异常,或者 JVM 可能会失败。
避免故障:
IBM i 不支持此参数。![[AIX Solaris HP-UX Linux Windows]](../dist.gif)
-Xnoclassgc 如果您想禁用对类进行垃圾回收,那么请指定 -Xnoclassgc。此参数会导致重用类的情况更多,还可使性能稍微有所提高。但是,仍在使用这些类所拥有的资源,即使未调用这些类也是如此。
避免故障: 类垃圾回收的性能影响通常很小,在基于 Java Platform, Enterprise
Edition (Java EE) 的系统(在该系统大量使用应用程序类装入器的情况下)中关闭类垃圾回收可能会在事实上造成类数据的内存泄露并导致 JVM 抛出内存不足异常。gotcha如果想要监视垃圾回收,那么可以使用 verbose:gc 配置设置。可以使用最终获得的输出来确定回收这些资源对性能造成的影响。
如果指定 -Xnoclassgc 参数,那么每当重新部署应用程序时,应该总是重新启动应用程序服务器以清除应用程序先前版本的类和静态数据。
避免故障: IBM i 不支持此参数。在此平台上,必须使用 -noclassgc 参数来禁止对类进行垃圾回收。gotcha![[AIX Solaris HP-UX Linux Windows]](../dist.gif)
-Xgcthreads 如果希望一次使用多个垃圾回收线程,那么请指定 -Xgcthreads。这种垃圾回收技术称为并行垃圾回收。此参数仅对于 IBM Developer Kit 是有效的。
在通用 JVM 参数字段中输入此值时,还要输入正在您的机器上运行的处理器数目。
-Xgcthreads<number of processors>
避免故障: --Xgcthreads 和处理器数值 n 之间不要添加空格。
-Xgcthreads5 是指定有 5 个处理器的 -Xgcthreads 的示例。
gotcha
最佳实践: 如果您的机器上有多个处理器,那么应该使用并行垃圾回收。bprac
避免故障: IBM i 不支持此参数。gotcha![[AIX Solaris HP-UX Linux Windows]](../dist.gif)
-Xnocompactgc 如果您想禁用堆压缩,那么请指定 -Xnocompactgc。堆压缩是成本最高的垃圾回收操作。如果您正在使用 IBM Developer Kit,那么应避免进行堆压缩。如果您禁用堆压缩,就消除了所有相关的开销。
避免故障: IBM i 不支持此参数。gotcha![[AIX Solaris HP-UX Linux Windows]](../dist.gif)
-Xgcpolicy 指定 -Xgcpolicy 以设置垃圾回收策略。此参数仅对于 IBM Developer Kit 是有效的。
如果您想优化吞吐量,并且如果长时间暂停进行垃圾回收也不会产生问题,那么请将此参数设置为 optthruput
。![[2013 年 9 月更新]](../images/deltaend.gif)
如果正在使用分代垃圾回收器,那么将此参数设置为 gencon。分代模式尝试实现高吞吐量并同时缩短垃圾回收暂停时间。为了实现此目标,将堆分为新区域和旧区域。长生命周期对象将被提升到旧空间,而短生命周期对象将在新空间中被迅速地作为垃圾回收。gencon 策略能使许多应用程序受益匪浅。然而,它并不适合所有应用程序,并且通常较难调整。
如果您想使用并发标记来跟踪在堆变满之前从堆栈中启动的应用程序线程,那么请将此参数设置为 optavgpause。指定了此参数之后,垃圾回收器的暂停将变得统一,并且长时间的暂停也不再明显。但是,使用此策略将使吞吐量降低,这是因为线程可能必须执行额外的操作。
如果要提高多处理器系统(通常使用八个以上处理器)的性能,那么将此参数设置为 subpool。此策略仅适用于 IBM System i®、System p® 和 System z® 处理器。除了将堆划分为子池以提高对象分配可伸缩性以外,subpool 策略与 optthruput 策略类似。
避免故障: IBM i 不支持此参数。gotcha![[AIX Solaris HP-UX Linux Windows]](../dist.gif)
-XXJava Platform, Standard Edition 6 (Java SE 6) 有生成垃圾回收功能,这允许分隔内存池以包含具有不同时效的对象。垃圾回收周期根据时效收集与其他对象彼此独立的对象。使用其他参数,您可以单独设置内存池的大小。为了获得更高性能,对于包含具有较短生命周期的对象的池,请设置该池的大小,以使该池中的对象的保留时间不超过一个垃圾回收周期。使用 NewSize 和 MaxNewSize 参数来指定新生成池的大小。
-XX:NewSize=lower_bound -XX:MaxNewSize=upper_bound -XX:SurvivorRatio=new_ratio_size
最佳实践: 然而,如果 JVM 的堆大小大于 1 GB,那么您应该使用下列值:或者,您可以将总的堆大小的 50% 至 60% 设置为新的生成池。
避免故障: IBM i 不支持此参数。gotcha![[AIX Solaris HP-UX Linux Windows]](../dist.gif)
-Xminf 如果您想更改最小可用堆大小所占的百分比,那么请指定 -Xminf。如果可用空间低于指定量,那么堆增长。在启用了复位的方式下,此参数指定中间件和瞬态堆的可用空间所占的最小百分比。为此参数指定的值是一个在 0 到 1 之间的浮点数。缺省值为 .3 (30%)。
避免故障: IBM i 不支持此参数。gotcha![[AIX Solaris HP-UX Linux Windows]](../dist.gif)
-server | -clientJava SE 6 中的 Java 热点技术使用了一种自适应 JVM,该 JVM 中包含一些能够随着时间推移而优化字节码的执行方式的算法。JVM 以两种方式运行,分别为 -server 和 -client。在大多数情况下,应该使用 -server 方式,可使运行时性能在更长时间内保持更高。
如果您使用缺省值 -client 方式,那么服务器启动时间更短,并且内存占用量更少。但是,使用这种方式时,其他方面的性能将更低。除非服务器的启动时间与性能比较起来更重要,否则就应使用 -server 方式,这种方式可提高性能。您可以监视进程大小和服务器启动时间,以检查使用 -client 和 -server 这两种方式时的性能差异。
避免故障: IBM i 不支持此参数。gotcha指定 -Dcom.ibm.CORBA.RequestTimeout= timeout_interval 参数,以设置对从客户机发送的请求作出响应时应遵循的超时时间段。此自变量使用 -D 选项。timeout_interval 是超时时间段(以秒计)。如果网络遇到极端等待时间,指定大的值,以防止超时。如果您指定过小的值,参与工作负载管理的应用程序服务器会在接收响应前超时。
仅当应用程序遇到超时问题时才指定此参数。没有为此参数提供建议值。
-Dcom.ibm.server.allow.sigkill=true 参数允许 Node Agent 在 stop 方法未在为 Ping 时间间隔指定的时间间隔内完成时,使用进程的 terminate 方法。当 Node Agent 正在监视应用程序服务器并与该应用程序服务器失去联系时,此设置非常有用。
当由于已针对应用程序服务器启用自动重新启动,应用程序服务器的监视策略允许 Node Agent 重新启动应用程序服务器时,Node Agent 会针对应用程序服务器进程执行 stop 方法。在 stop 进行期间,Node Agent 会监视应用程序服务器,如果应用程序服务器未在为 Ping 时间间隔指定的时间内停止,并且此参数设置为 true(缺省值),那么 Node Agent 会针对应用程序服务器进程执行 terminate 方法,以停止应用程序服务器进程。
如果将此参数设置为 false,那么 Node Agent 会继续监视 stop 进程,但不会尝试重新启动应用程序服务器。
要使用管理控制台来禁用此参数,请单击系统管理 > Node Agent > nodeagent_name > Java & 进程管理 > 进程定义 > Java 虚拟机 > 通用 JVM 参数。
-Dcom.ibm.websphere.alarmthreadmonitor.hung_alarm_mute=此参数指定警报在系统日志中的挂起线程消息中报告其完整堆栈跟踪的最大次数。
当系统警报线程处于活动状态的时间超过警报线程监视器阈值时,应用程序服务器将记录一条挂起线程消息,此消息中包含警报线程的名称、该警报线程已处于活动状态的时间以及完整异常堆栈跟踪。完整堆栈跟踪对于调试造成延迟的原因很有用,但是,如果频繁触发挂起线程消息,那么重复的长消息可能会导致难以查找系统日志中的其他信息。将此参数设置为一个大于 0 的证书,以指定任何单个警报报告其完整堆栈跟踪的最大次数。达到此阈值之后,后续的每个挂起线程消息将仅包括挂起警报处理程序的条目。
缺省值 0 表明警报的所有挂起线程消息都包括完整堆栈跟踪。
-Dcom.ibm.websphere.native.logging.timestamp=true指定此参数以在所有输出到 native_stdout 和 native_stderr 日志文件的服务器调试消息前面添加时间戳记和线程标识。可以使用时间戳记和线程标识使应用程序服务器引导组件的行为与其他服务器机制(在 SystemOut 和 SystemErr 日志文件中进行了指示)互相关联。缺省情况下,此行为处于禁用状态。
使用 JVM 通用参数 -Dws.ext.debug=true 来配置服务器时,服务器会在其引导序列中将调试消息发送至 native_stdout.log 和 native_stderr.log。如果 -Dcom.ibm.websphere.native.logging.timestamp 也设为 true,那么服务器将输出附带时间戳记和线程标识的调试消息,如以下示例中所示:
[6/18/12 16:24:31:453 CDT] 00000000
ws.ext.mains.args[0]=-nosplash
[6/18/12 16:24:31:453 CDT] 00000000
ws.ext.mains.args[1]=-application
[6/18/12 16:24:31:453 CDT] 00000000
ws.ext.mains.args[2]=com.ibm.ws.bootstrap.WSLauncher
[6/18/12 16:24:31:453 CDT] 00000000
ws.ext.mains.args[3]=com.ibm.ws.runtime.WsServer
-Dcom.ibm.websphere.wlm.unusable.interval=interval
此参数仅适用于 z/OS。当刷新客户机的工作负载管理状态的时间间隔太短或太长时,指定 -Dcom.ibm.websphere.wlm.unusable.interval= timeout_interval 参数以更改 com.ibm.websphere.wlm.unusable.interval 属性的值。此属性指定工作负载管理客户机运行时在将服务器标记为不可用之后,在再次尝试与该服务器联系之前所等待的时间(以秒计)。此参数使用 -D 选项。缺省值为 300 秒。如果属性设为大的值,那么一段很长的时间内服务器都标记为不可用。这防止工作负载管理刷新协议刷新客户机的工作负载管理状态,直到这段时间结束后。
-Dcom.ibm.ws.buffermgmt.impl.WsByteBufferPoolManagerImpl=此参数仅适用于 z/OS。指定 -Dcom.ibm.ws.buffermgmt.impl.WsByteBufferPoolManagerImpl=参数,以指示一旦不再需要缓冲区,就应该释放用于各个直接字节缓冲区的存储器。此参数的唯一受支持的值为 com.ibm.ws.buffermgmt.impl.ZOSWsByteBufferPoolManagerImpl。
-Dcom.ibm.ws.buffermgmt.impl.WsByteBufferPoolManagerImpl=com.ibm.ws.buffermgmt.impl.ZOSWsByteBufferPoolManagerImpl
在 z/OS 平台上,如果您为 TCP 通道指定 zaioFreeInitialBuffers 定制属性,以便只要不再需要将新连接上所使用的初始读取缓冲区用于连接,该通道就会释放这些缓冲区,那么还需要指定此参数。
-DisSipComplianceEnabled=true|false指定是否在 SIP 代理服务器上启用 SIP 一致性检查。SIP 一致性检查确保 SIP 消息符合会话初始化协议标准。此属性设为 true 时,启用 SIP 一致性检查。
避免故障: 如果正在 z/OS WebSphere Application Server Network Deployment 环境中运行代理服务器,并且代理服务器不是集群的一部分,那么可以使用 isSipComplianceEnabled SIP
代理服务器定制属性来对该 SIP 代理服务器启用或禁用 SIP 一致性检查。然而,如果正在运行独立应用程序服务器或代理服务器是集群的一部分,那么必须使用此通用 JVM 参数来启用或禁用 SIP 一致性检查。gotcha![[AIX Solaris HP-UX Linux Windows]](../dist.gif)
-Xshareclasses:none指定 -Xshareclasses:none 参数来对进程禁用共享类选项。Java SE 6 中提供的共享类选项允许在高速缓存中共享类。通过在高速缓存中共享类,可以缩短启动时间并减少内存使用量。进程(例如应用程序服务器、Node Agent 和 Deployment Manager)可以使用共享类选项。
如果使用此选项,那么应该在进程不在使用中时清除高速缓存。要清除高速缓存,请调用 app_server_root/bin/clearClassCache.bat/sh 实用程序,或者停止该进程,然后重新启动它。
避免故障: ![[Solaris]](../solaris.gif)
![[IBM i]](../iseries.gif)
用于 J2SE 5 的 IBM JVM 在 Solaris、HP 和 IBM i 上不受支持。使用 -XXallowvmshutdown:false 参数来恢复为 JVM 的先前不正确行为。Java 5.0 SR10 和 Java 6 SR5 更正了 Java 虚拟机 (JVM) 不能正确关闭的问题。如果您有依赖于旧行为的应用程序,那么可以通过将此参数添加至“通用 JVM 参数”部分来恢复为先前行为。
| 信息 | 值 |
|---|---|
| 数据类型 | 字符串 |
| 单位 | Java 命令行参数 |
指定 JVM 代码使用的可执行 JAR 文件的完整路径名。
| 信息 | 值 |
|---|---|
| 数据类型 | 字符串 |
| 单位 | 路径名 |
指定是否禁用 JVM 代码的即时 (JIT) 编译器选项。
如果您禁用 JIT 编译器,吞吐量会显著地减少。因此,出于性能原因,始终启用 JIT。
| 信息 | 值 |
|---|---|
| 数据类型 | 布尔型 |
| 缺省值 | false(启用 JIT) |
| 建议 | 启用 JIT |
指定给定操作系统的 JVM 设置。
当进程启动时,该进程会将为服务器指定的 JVM 设置用作操作系统的 JVM 设置。
当进程启动时,该进程会将为节点指定的 JVM 设置用作操作系统的 JVM 设置。