java虚拟机性能参数调优指导书

java虚拟机性能参数调优指导书

ID:14706156

大小:150.50 KB

页数:15页

时间:2018-07-30

java虚拟机性能参数调优指导书_第1页
java虚拟机性能参数调优指导书_第2页
java虚拟机性能参数调优指导书_第3页
java虚拟机性能参数调优指导书_第4页
java虚拟机性能参数调优指导书_第5页
资源描述:

《java虚拟机性能参数调优指导书》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Java虚拟机性能参数调优指导书(仅供内部使用)目录1概述62JAVA虚拟机运行机制概览62.1运行时分析62.2垃圾收集和线程同步83JAVA虚拟机参数分类说明93.1Java虚拟机标准参数93.2Java虚拟机扩展参数114JAVA应用性能测试调优经验总结144.1GC调优参数的使用144.2JIT调优参数的使用154.3Java线程调优参数的使用155结束语166参考文献16表目录表1JVM标准参数集11表2JVM扩展参数集11表3JVMGC/Hotspot相关参数集13表4JVM性能统计参数集14

2、Error!Referencesourcenotfound.关键词:Java、垃圾收集、虚拟机、即时编译摘要:随着JAVA在应用系统级的项目开发中的使用越来越广泛,虚拟机、垃圾收集、热点编译、J2EE等新技术层出不穷,JAVA作为系统级开发的一个选择的优势也越来越明显,在此同时其不能完全编译、垃圾收集等与生俱有的特征也使得JAVA备受争议的“慢”得到更多的关注。本文通过对JAVA虚拟机的运行机理的分析,以及JAVA虚拟机参数使用说明等描述,试图使读者能够更好的运行他的基于JAVA的应用系统,以最小的代价换

3、取最大的收益。缩略语清单:缩略语英文全名中文解释JAVASUN公司发明的一种语言JVMJavaVirtualMachineJAVA虚拟机GCGarbageCollection垃圾收集HotSpotJava虚拟机内部的一种热点编译技术JITJust-In-Time即时编译技术1概述Java在大行其道的同时也在为自己与生俱来的缺陷不断的努力着,我们有理由相信Java的开发设计者们真是一群天才。构成Java技术的基石就是JVM的虚拟机技术,这时的Java已经不再是一门简单的语言,而是语言、开发包JDK与虚拟机的

4、完美结合,而这里面的虚拟机则是融合了编译技术、CPU技术的Java存在的基础所在。既然那么多的优秀的人为提升虚拟机性能做了那么多的工作,我们有什么理由不去充分利用这些宝贵的资源呢?本文就是试图从原理分析到参数应用上来帮助读者更大的发挥Java虚拟机的性能极限,使这样一个优秀的产品更好地为我们服务。2JAVA虚拟机运行机制概览2.1运行时分析首先让我们来看看所谓的Java虚拟机在运行起来后是什么样子的,从外面来看一个Java虚拟机的运行实例就是一个运行着的Java进程,Java进程在启动过程中做了如下工作,

5、一、根据环境变量的设置或者Java进程的命令行参数将JavaClass字节码加载到内存中,这样的Java字节码是Java虚拟机所能够识别的虚拟机指令的集合,Java虚拟机在解释执行字节指令的同时,根据某些代码的使用频率,将其中一部分字节码翻译成机器能够识别的二进制指令保存在内存中,在以后对这部分代码的调用,则由Java虚拟机的代码控制CPU直接执行内存中的这部分二进制指令,这个就是Java虚拟机的热点编译技术。而在早期的Java虚拟机实现中是采用全部字节程序解释执行的方式,后来发展了Java静态编译技术,

6、这种技术是在Java程序编译成字节码后,由一个本地编译器将这些字节码编译成二进制可执行文件,这种编译技术不利于程序的移植。再后来发展的Java的动态编译技术,这时的编译过程是在Java装载字节码文件时进行的,而此时的问题是Java在启动时需要花费很长的时间来编译这些字节码。直到最后流行的Hotspot技术的出现,此时编译仅仅运行于少部分代码。按照80/20的原则,程序的百分之80的时间仅仅运行其百分之20的代码,这样一个能够平衡启动时间、移植性的中间方法解决了人们的大部分问题。之后,让我们看看Java虚拟

7、机的内部体系结构,从下面的体系机构图来看,Java的Class字节码文件经由类加载子系统加载到内存中时,虚拟机根据文件内容将类的方法和数据加载到称为方法区的地方,堆是用来为运行时类实例提供存放场所的地方,这样的堆也称之为对象堆空间。而Java栈和PC计数器则是为了Java线程而设计的,每一个Java线程一旦创建,它都将得到一个属于他自己的PC计数器(程序计数器指针,类似于CPU中的IP指令指针计数器)以及一个线程栈,在新版本JavaHotspotVM中是没有本地方法栈和线程栈之分的,只有一个线程栈的模块。

8、这样每个线程的运行都是在属于自己栈空间内的,而所有的线程则共享着一个堆空间。当然在线程实现上不同的Java虚拟机的内部实现可能各有不同,有的自是直接将Java线程和操作系统内核线程绑定起来的,在虚拟机进程内部创建一个Java线程虚拟机就会请求操作系统为该一个进程创建一个内核线程,将线程之间的调度交给了操作系统内核来完成。而在早期的Java虚拟机一些实现中,Java线程对于操作系统来说是不可见,而是由应用层来完成线程调度,对于操

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。