论文部分内容阅读
随着Java软件平台技术的不断发展,Java软件的应用已经从桌面的应用延伸到企业平台,大型信息系统,控制系统,嵌入式系统等各个方面。但由于Java软件体系结构的特点决定了Java软件执行效率不如C/C++软件,因此对Java软件性能进行剖析是非常有必要的。当今的许多Java应用程序都依赖于一组复杂的分布式依赖关系和移动部件。很多外部因素都可能对应用程序的性能和可用性造成影响。这些影响基本上都无法完全消除或解决,且难以在预生成环境中准确模拟。因此,有效地对Java应用程序性能执行低级粒度的剖析是明智的。剖析得到的数据可以很好的反映Java应用程序的内在状态,并揭示影响环境稳定性及性能的约束和因素。JVMTI(Java Virtual Machine Tool Interface)是一套由Java虚拟机提供的,为Java虚拟机相关工具提供的本地编程接口集合。JVMTI提供了一套“代理”程序机制,可以支持第三方工具程序以代理的方式连接和访问Java虚拟机,并利用JVMTI提供的丰富的编程接口,完成许多与Java虚拟机相关的功能。本文研究了JVMTI的代理程序机制,并在研究的基础上,设计与实现了一套性能剖析接口,即JVMTIJava接口。该接口提供给开发人员一个更高层次的Java虚拟机剖析编程接口,可以提高开发的效率。本文介绍了JVMTIJava接口中使用的JNI技术、剖析代理本地库的设计与实现和JVMTIJava接口的各功能子模块的划分,并详细介绍了JVMTIJava接口中内存快照子模块的具体实现。最后本文从实际的企业需求出发设计并实现了一个实时性能剖析系统。该系统采用B/S架构,客户可以通过Web浏览器查看Java应用程序的运行状况。其中,系统利用JVMTIJava接口实现了对监视的Java应用程序的虚拟机实例的性能剖析。另外,系统利用了反向Aiax的Comet策略和FusionCharts控件实现了在客户端中实时地显示剖析得到的数据。最后进行了系统功能测试。