- 浏览: 201190 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
brenda:
...
技术选型(转) -
JavaScriptOMG:
写的真好,不知道如果是java.sql.date的话,怎么写呢 ...
Java得到下一天明天,明天时间 -
少女杀手:
和他的一摸一样,一个字都不差
http://anysky131 ...
弹出窗口代码大全 -
shipping:
字体好小啊,都没兴趣看下去了
测试网站性能的30款免费在线工具 -
ddd:
其实一切人活着的意义就在于他死前的心情是什么。
活着是多么美好
尽管 JVM 调整操作随 JVM 提供程序的不同而有所变化,但一般的调整概念适用于所有 JVM。这些一般的概念包括:
编译器调整。在服务器运行时期间,所有 JVM 都使用即时(JIT)编译器来将 Java 字节码编译为本机指令。
Java 内存或堆调整。JVM 内存管理功能(即垃圾回收)为提高 JVM 性能提供了其中一种最大的可能性。
类装入调整。
过程
优化启动性能和运行时性能
在某些环境中,优化 WebSphere Application Server 的启动性能比优化运行时性能更重要。在另一些环境中,优化运行时性能更为重要。缺省情况下,IBM JVM 是针对运行时性能进行优化的,而基于 HotSpot 的 JVM 是针对启动性能进行优化的。
Java JIT 编译器在很大程度上决定了是优化启动性能还是优化运行时性能。编译器使用的初始优化级别影响编译类方法所耗用的时间以及启动服务器所耗用的时间。为了提高启动速度,可以降低编译器所使用的初始优化级别。这意味着,由于现在使用较低的优化级别来编译类方法,所以应用程序的运行时性能可能会下降。
因为编译器在运行时执行阶段会根据自己的判断来重新编译类方法以提高性能,所以,很难提供一个有关特定的运行时性能影响的说明。最终,应用程序的持续时间是影响运行时性能下降程度的主要原因。运行时间较短的应用程序的方法被重新编译的可能性较高。运行时间较长的应用程序的方法被重新编译的可能性较低。IBM JVM 的缺省设置是使用高优化级别来执行初始编译。如果需要更改此行为,可以使用以下 IBM JVM 选项:
-Xquickstart
此设置影响 IBM JVM 使用较低优化级别来编译类方法的方式,这将提高服务器启动速度,但会使运行时性能下降。缺省情况下,如果未指定此参数,IBM JVM 最初将使用较高的初始优化级别来执行编译。此设置能够提高运行时性能,但会减慢服务器启动速度。
缺省值: 高初始编译器优化级别
建议值: 高初始编译器优化级别
用法: -Xquickstart 可以加快服务器启动速度。
基于 Sun 的 Hotspot 技术的 JVM 最初使用低优化级别来编译类方法。使用下列 JVM 选项来更改此行为:
-server
基于 Sun 的 Hotspot 技术的 JVM 最初使用低优化级别来编译类方法。这些 JVM 使用简单编译器和能够进行优化的 JIT 编译器。通常情况下,使用简单 JIT 编译器。然而,可以通过设置此选项来使用能够执行优化的编译器。此更改将显著提高服务器的性能,但使用能够执行优化的编译器时,服务器的预备时间将会较长。
缺省值: 简单编译器
建议值: 能够执行优化的编译器
用法: -server 启用能够执行优化的编译器。
设置堆大小 下列命令行参数对于设置堆大小来说很有用。
-Xms
此设置控制 Java 堆的初始大小。正确调整此参数有助于降低垃圾回收开销,从而缩短服务器响应时间并提高吞吐量。对于某些应用程序来说,此选项的缺省设置可能会太低,从而导致发生大量小型垃圾回收。
缺省值: 256 MB
建议值: 随工作负载的不同而有所变化,但高于缺省值。
用法: -Xms256m 将初始堆大小设置为 256 兆字节
-Xmx
此设置控制 Java 堆的最大大小。正确调整此参数有助于降低垃圾回收开销,从而缩短服务器响应时间并提高吞吐量。对于某些应用程序来说,此选项的缺省设置可能会太低,从而导致发生大量小型垃圾回收。
缺省值: 512 MB
建议值: 随工作负载的不同而有所变化,但高于缺省值。
用法: -Xmx512m 将最大堆大小设置为 512 兆字节
-Xlp
此设置可以与 IBM JVM 配合使用,以使用大页来分配堆。然而,如果使用此设置,那么必须将操作系统配置为支持大页。使用大页可以降低 CPU 跟踪堆内存时的开销,并且还允许创建较大的堆。
请参阅调整操作系统 以了解有关调整操作系统的更多信息。
应该指定的堆大小取决于不同时段的堆使用情况。在堆大小频繁更改的情况下,对 Xms 和 Xmx 参数指定相同的值可以提高性能。
调整 IBM JVM 的垃圾回收器。
使用 Java -X 选项来查看内存选项列表。
-Xgcpolicy
将 gcpolicy 设置为 optthruput 会禁用并发标记。如果没有暂停时间问题(表现为应用程序响应时间不规律),那么应该使用此选项来实现最大吞吐量。将 gcpolicy 设置为 optavgpause 会使用缺省值来启用并发标记。此设置将减少由正常垃圾回收所引起的应用程序响应时间不规律情况。然而,此选项可能会降低整体吞吐量。
缺省值: optthruput
建议值: optthruput
用法: Xgcpolicy:optthruput
-Xnoclassgc
缺省情况下,当一个类没有任何活动实例时,JVM 就会从内存中卸装该类,但是这样会使性能下降。如果关闭类垃圾回收,就可以消除由于多次装入和卸装同一个类而造成的开销。
如果不再需要某个类,那么该类在堆中所占用的空间通常将用于创建新对象。但是,如果应用程序通过创建类的新实例来处理请求,并且该应用程序的请求是随机出现的,那么可能会发生以下情况:先前请求者完成后,正常的类垃圾回收将通过释放这个类占用的堆空间来清除这个类,但当下一个请求出现时,又必须将这个类重新实例化。在这种情况下,您可能想使用此选项来禁用类垃圾回收。
缺省值: 启用类垃圾回收
建议值: 禁用类垃圾回收
用法: Xnoclassgc 禁用类垃圾回收
有关其他信息,请参阅下列 DeveloperWorks 文章:
http://www.ibm.com/developerworks/java/
调整 Sun JVM 的垃圾回收器
在 Solaris 平台上,WebSphere Application Server 在 Sun Hotspot JVM 上运行,而不是在 IBM JVM 上运行。对 Sun JVM 使用正确的调整参数以利用其性能优化功能十分重要。
Sun Hotspot JVM 依靠分代垃圾回收来实现最佳性能。下列命令行参数对于调整垃圾回收来说非常有用。
-XX:SurvivorRatio
将 Java 堆划分为旧对象(长生命周期对象)区域和新对象区域。新对象区域进一步细分为两部分,第一部分用于分配给新对象(初始区域),第二部分存放那些经过其前几次垃圾回收之后、但在被提升为旧对象之前仍在使用中的新对象(幸存者空间)。幸存者比率是堆的新对象区域中初始区域与幸存者空间的比率。增大此设置将针对需要创建大量对象但仅保留少量对象的应用程序优化 JVM。与其他应用程序相比,WebSphere Application Server 会生成更多中等生命周期对象和长生命周期对象,因此,应该将此设置设置为小于缺省值。
缺省值: 32
建议值: 16
用法: -XX:SurvivorRatio=16
-XX:PermSize
为永久生成对象保留的堆区域存储 JVM 的所有反射数据。对于动态地装入和卸装大量类的应用程序来说,应该增大此大小以优化它们的性能。通过将此参数设置为 128MB,可以消除增大此部分堆所需的开销。
建议值: 128 MB
用法: XX:PermSize=128m 将 perm 大小设置为 128 兆字节。
-Xmn
此设置控制允许新生成的对象在堆中耗用的空间量。正确调整此参数有助于降低垃圾回收开销,从而缩短服务器响应时间并提高吞吐量。此参数的缺省设置通常过低,这将导致执行大量的小型垃圾回收操作。如果将此参数设置得过高,可能会导致 JVM 仅执行大型(全面)垃圾回收。这些垃圾回收操作通常会耗时几秒钟,这将严重影响服务器的整体性能。您必须保持将此参数设置为小于整个堆大小的一半,以避免这种情况出现。
缺省值: 2228224 字节
建议值: 大约整个堆大小的 1/4
用法: -Xmn256m 将大小设置为 256 兆字节。
-Xnoclassgc
缺省情况下,当一个类没有任何活动实例时,JVM 就会从内存中卸装该类,但是这样会使性能下降。如果关闭类垃圾回收,就可以消除由于多次装入和卸装同一个类而造成的开销。
如果不再需要某个类,那么该类在堆中所占用的空间通常将用于创建新对象。但是,如果应用程序通过创建类的新实例来处理请求,并且该应用程序的请求是随机出现的,那么可能会发生以下情况:先前请求者完成后,正常的类垃圾回收将通过释放这个类占用的堆空间来清除这个类,但当下一个请求出现时,又必须将这个类重新实例化。在这种情况下,您可能想使用此选项来禁用类垃圾回收。
缺省值: 启用类垃圾回收
建议值: 禁用类垃圾回收
用法: Xnoclassgc 禁用类垃圾回收
有关调整 Sun JVM 的其他信息,请参阅 Java HotSpot VM 的性能文档。
调整 HP JVM 的垃圾回收器
HP JVM 依靠分代垃圾回收来实现最佳性能。下列命令行参数对于调整垃圾回收来说非常有用。
-Xoptgc
此设置针对包含许多短生命周期对象的应用程序优化 JVM。如果未指定此参数,那么 JVM 通常执行大型(全面)垃圾回收。全面垃圾回收会花费几秒钟时间,这将显著影响服务器性能。
缺省值: off
建议值: on
用法: -Xoptgc 启用优化的垃圾回收。
-XX:SurvivorRatio
将 Java 堆划分为旧对象(长生命周期对象)区域和新对象区域。新对象区域进一步细分为两部分,第一部分用于分配给新对象(初始区域),第二部分存放那些经过其前几次垃圾回收之后、但在被提升为旧对象之前仍在使用中的新对象(幸存者空间)。幸存者比率是堆的新对象区域中初始区域与幸存者空间的比率。增大此设置将针对需要创建大量对象但仅保留少量对象的应用程序优化 JVM。与其他应用程序相比,WebSphere Application Server 会生成更多中等生命周期对象和长生命周期对象,因此,应该将此设置设置为小于缺省值。
缺省值: 32
建议值: 16
用法: -XX:SurvivorRatio=16
-XX:PermSize
为永久生成对象保留的堆区域存储 JVM 的所有反射数据。对于动态地装入和卸装大量类的应用程序来说,应该增大此大小以优化它们的性能。通过将此参数指定为 128 兆字节,可以消除增大此部分堆所需的开销。
缺省值: 0
建议值: 128 兆字节
用法: -XX:PermSize=128m 将 PermSize 设置为 128 兆字节
-XX:+ForceMmapReserved
缺省情况下,Java 堆以“惰性交换”方式进行分配。在此方式下,将根据需要来分配内存页,这样可以节省交换空间,但是也将强制使用 4KB 页。在大型堆系统中,这种内存分配方式允许堆包含数以十万计的页。此命令禁用“惰性交换”并允许操作系统使用较大的内存页,从而优化对构成 Java 堆的内存的访问。
缺省值: off
建议值: on
用法: -XX:+ForceMmapReserved 将禁用“惰性交换”。
-Xmn
此设置控制允许新生成的对象在堆中耗用的空间量。正确调整此参数有助于降低垃圾回收开销,从而缩短服务器响应时间并提高吞吐量。此参数的缺省设置通常过低,这将导致执行大量的小型垃圾回收操作。
缺省值: 没有缺省值
建议值: 大约整个堆大小的 3/4
用法: -Xmn768m 将大小设置为 768 兆字节
虚拟页大小
通过将 Java 虚拟机的指令页大小和数据页大小设置为 64MB,可以提高性能。
缺省值: 4MB
建议值: 64MB
用法: 使用以下命令。命令输出提供了进程可执行文件的当前操作系统特征:
chatr +pi64M +pd64M /opt/WebSphere/
AppServer/java/bin/PA_RISC2.0/
native_threads/java
-Xnoclassgc
缺省情况下,当一个类没有任何活动实例时,JVM 就会从内存中卸装该类,但是这样会使性能下降。如果关闭类垃圾回收,就可以消除由于多次装入和卸装同一个类而造成的开销。
如果不再需要某个类,那么该类在堆中所占用的空间通常将用于创建新对象。但是,如果应用程序通过创建类的新实例来处理请求,并且该应用程序的请求是随机出现的,那么可能会发生以下情况:先前请求者完成后,正常的类垃圾回收将通过释放这个类占用的堆空间来清除这个类,但当下一个请求出现时,又必须将这个类重新实例化。在这种情况下,您可能想使用此选项来禁用类垃圾回收。
缺省值: 启用类垃圾回收
建议值: 禁用类垃圾回收
用法: Xnoclassgc 禁用类垃圾回收
有关调整 HP 虚拟机的其他信息,请参阅 Java 技术软件 HP-UX 11i。
调整 HP 的 JVM for HP-UX 设置下列选项以提高应用程序性能:
-XX:SchedulerPriorityRange=SCHED_NOAGE
-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.DevPollSelectorProvider
-XX:-ExtraPollBeforeRead
发表评论
-
技术选型(转)
2011-05-17 15:05 11242.1. 基础架构 ... -
分布式Java 应用(转)
2011-05-17 14:43 1343网络通信:协议TCP/IP,UDP/Ip,Multicas ... -
跨域访问session(转)
2011-04-22 16:14 2635大一些的网站,通常都 ... -
(转)分享一下,我常去的中文技术网站
2011-04-18 13:31 836先说一下大多数人都知 ... -
(转) request.getPathInfo() 方法的作用
2011-04-14 11:58 881request.getPathInfo(); 这个方法返回请 ... -
找到一篇性能测试的好文,简单实用,收藏之。
2011-04-10 21:59 761Java程序性能测试 1 概述 在 ... -
需要牢记的java编程规则(收藏)
2011-04-10 20:52 725(1) 类名首字母应该 ... -
一个计算机专业学生几年的编程经验汇总之二(收藏)
2011-04-10 19:48 867############################### ... -
一个计算机专业学生几年的编程经验汇总之一(收藏)
2011-04-10 18:05 851来学习Java也有两个年头了,永远不敢说多么精通,但也想谈谈自 ... -
(转)各种架构图汇总
2011-04-06 22:27 1391转载请保留出处,刘晓涛汇总!!! http://bl ... -
(转)java并发编程实践笔记
2011-04-05 22:23 7701, 保证线程安全的三种方法 : a, 不要跨线程访问共享变量 ... -
(转)构建可伸缩,高性能的互联网应用
2011-04-05 22:22 752间过得很快,来新公司已经两个月了,在这两个月的时间里,自己也感 ... -
(转)百万级访问量网站的技术准备工作
2011-04-05 22:20 885当今从纯网站技术上来说,因为开源模式的发展,现在建一个小网站已 ... -
测试数据库连接状态
2011-03-25 08:45 1359while (true) { long star ... -
(转)什么是Java里的OO思想?
2011-03-24 14:12 885OO就是面向对象 面向对象(Object Oriented,O ... -
(转)JAVA 检测网络是否为连通状态 ping
2011-03-23 14:34 2506要用java检测网络资源是否可用,我们可以采用以下两种方法: ... -
中文乱码问题的解决方法
2011-01-21 17:33 1153tomcat下中文的彻底解决[转] http://blo ... -
nginx 映射80端口
2009-08-04 09:13 3877配置一个resin, 为不用输入端 ... -
测试网站性能的30款免费在线工具
2009-06-28 02:12 2007你是否肯定你的网站完全兼容各大浏览器?是否知道多少秒可以打开你 ... -
Memcached-----memcached实现内存缓存
2009-06-27 15:38 2693Memcached是danga.com(运营LiveJourn ...
相关推荐
java虚拟机分析与优化PPT(演讲:李镭) 李镭——现任IBM中国有限公司软件部WebSphere高级工程师。 2002年加入IBM公司软件部,至今一直从事中间件产品家族的售前和售后工作。为IBM的重要合作伙伴提供软件的技术支持和...
《Java虚拟机规范(第二版)》将规范所描述内容的技术背景升级到了Java 2平台(JDK 1.2),它还包括了许多对原版的修正并且在不改变规范内容逻辑下,使描述变得更加清晰。我们也尝试调整了规范中的字体样式、勘误...
这本书的内容是帮你全面了解java虚拟机,本书第1版两年内印刷近10次,98%以上的评论全部为5星级的好评,是整个Java图书领域公认的经典著作和超级畅销书,繁体版在台湾也十分受欢迎。第2版在第1版的基础上做了很大的...
Java 内存或堆调整。JVM 内存管理功能(即垃圾回收)为提高 JVM 性能提供了其中一种最大的可能性。 类装入调整。 过程 优化启动性能和运行时性能 在某些环境中,优化 WebSphere Application Server 的启动性能比...
深入java虚拟机光盘资源datasink:大规模异构集成学习的管道 Datasink 是一个可定制的管道,用于生成异构分类器的不同集合,以及利用集合多样性来提高性能的集合学习方法所需的伴随元数据。 它还公平地评估了几种...
第2章 Java内存区域与内存溢出异常 / 24 2.1 概述 / 24 2.2 运行时数据区域 / 25 2.2.1 程序计数器 / 25 2.2.2 Java虚拟机栈 / 26 2.2.3 本地方法栈 / 27 2.2.4 Java堆 / 27 2.2.5 方法区 / 28 2.2.6 运行...
安装路径,通过这些参数可对虚拟机的运行状态进行调整,掌握参数的含义可对虚拟机的运 行模式有更深入理解。 文章出处:http://www.diybl.com/course/3_program/java/javashl/2008520/117161.html
部分章节如下,内容在附件里面大家随意下载,欢迎讨论交流。...2.3、JVM内存参数调整及监控 1、JVM之内存调整 2、JVM监控工具之Jconsole 3、JVM监控工具之JProfile 加群:113035529 共同交流学习
看不到源码Java虚拟机 OpenNMS 配置以使用 Java 管理扩展 (JMX) 从 Java 虚拟机监控性能指标。 此配置已通过以下测试: CentOS 7 与 OpenJDK 运行时环境 (1.8.0_181-b13) 带有 OpenNMS Helm 2.0.0 的 Grafana 5.3.1 ...
java se项目源码 欢迎使用 Eclipse OpenJ9 存储库 我们不确定您在来这里的路上可能走哪条路线,但我们很高兴见到您! 如果您直接来自我们的网站,那么您可能...针对占用空间、性能和可靠性进行了调整,非常适合云部署。
编程框架的核心是一个扩展后的Java虚拟机将谓词测试融入到Java虚拟机来实现程序对上下文的感知,将对象组合与代理融入到Java虚拟机来实现层的动态激活,利用虚拟机自身提供的功能实现动态层添加。实验结果表明,基于...
我们可以通过调整Java虚拟机的启动参数来增加Tomcat可使用的内存。 下面就是众所周知的两个参数 -Xms<size> JVM初始化堆的大小 -Xmx<size> JVM堆的最大值 比如,我想设置初始内存大小为128M,最多占用1G,...
提出一种基于类SRM(Scalable Reliable Multicast)抑制机制的EEA(Energy-Efficient Adaptive)分发协议,通过动态调整发射频率,抑制不必要的数据重复发送,根据制定的规则来关闭无线射频通信来达到节约节点能耗的...
“独立实现”表示它是使用Java虚拟机规范构建的,而不使用任何其他Java虚拟机的任何代码。 OpenJ9 JVM与OpenJDK的Java类库相结合,创建了一个针对占位面积,性能和可靠性进行了调整的完整JDK,非常适合云部署。 对...
Java是通过java虚拟机来装载和执行编译文件(class文件)的,java虚拟机通过命令java option 来启动,-option为虚拟机参数,通过这些参数可对虚拟机的运行状态进行调整.
该文档由JAVA官方文档翻译而来,介绍了什么是垃圾收集器、JVM 主要的垃圾收集器、怎么去调优JVM的垃圾收集器性能及问题排查
是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOME"bin"java –option 来启动,-option为虚拟机参数,JAVA_HOME为JDK安装路径,通过这些参数可对虚拟机的运行状态进行调整,掌握参数的含义可对...