我们在日常的开发过程中,难免遇到程序写得有漏洞的时候,比如数据库连接未释放啊,基于JMX,JMS的操作连接未释放啊,过多的对象创建啊,程序的性能 瓶颈啊等等,到了项目开发后期,常常会因为很早之前写得不太好得代码段而造成整个系统得运行效率下降,严重的则会造成系统崩溃。如何很好的解决这些隐藏得 问题呢?对了那就是使用profile工具对我们的系统进行从cpu,memory,thread方面的分析了。本篇文章,就是利用当前几个比较流行得 profile工具来讲解,如何利用这些工具对我们的基于OSGI系统进行profile。
这里我选取两个proflie工具来讲解,第一个是jprofiler,官网(http://www.ej- technologies.com/products/jprofiler/overview.html)上提供了两个非常详细的Demo来教大家 jprofiler的一些常用features,以及简单的使用方法,这里我就着重讲如何用jprofiler来profile我们的OSGI系统吧。
最简单的,jprofiler提供对某个可执行的jar,或者一段main程序来进行profile咯,对于我们的OSGI系统我们则要把它当作一个本地得application server来进行监控,操作都还简单,如下图进行选择。
注意,到了第6步Perform modifications这里得时候,要做重要的两步,第一将它给你得一段参数添加到我们利用命令行去启动我们的OSGI环境的“java”命令,一般 的我们以命令行去启动一个OSGI环境是利用命令"java -jar *.jar"的形式,这里我就只需要把jprofiler提供给你的那段命令添加到"java"命令后就可以了。
其次我们还需要将jprofiler\bin\windows加入环境变量。然后Next,这样就一个profile得配置就配好了。
一切准备就绪后,就启动我们的OSGI应用,如下图:
这样我们就可以看到jprofiler对我们的OSGI应用进行的实时的监控了,一般的最常用的要算是Memory View 和Thread View,其中都可以进行进行filter,这样,如果你看到某些对象一直在上升并得不到释放,或者某些线程在直线上升,你就应该大致的知道问题出在哪里 了吧。
在实际应用中,我们也发现了jprofiler对OSGI应用进行profiler时的一些小bug,不过大致说来还是不错的(因为有破解:))此外还要 注意一点,就是jprofiler好像不能识别空格,也就是说在以这种方式进行profile的时候,jprofiler要用到一个系统用户目录下的. jprofiler4文件夹下的一个xml,以及jprofiler4\bin下的agent,jar如果这些目录中有空格存在的话,jprofiler 是要报错的,大家留意一下.
接下来我再介绍一款profile工具:yourkit java profiler(http://www.yourkit.com/overview/index.jsp),这款工具我比较喜欢,目前为之也没有出现在 jprofiler中出现的一些bug,而且可以为很多IDE提供插件来直接在IDE中对我们的应用进行profile(当然jprofiler也可以) 唯一的不足就是7.0的版本还没有破解,不过6.0已经有了,大家可以去google一下。
使用起来yourkit也与jprofiler大致相同,接下来我就简单演示下如何用yourkit来对我们的OSGI应用进行profile。
先把YourKit Java Profiler 7.0.6\bin\win32加入你的path环境变量中。
然后写一个bat来以命令行的方式执行我们的OSGI应用,具体的写法你可以参照yourkit的安装目录下的samples目录中给你提供的一些 sample来写。我这里写了一个,其实我就copy了sample目录下得一个bat来改了改,这里要注意一点,如果你的应用是运行在jdk1.4或者 1.3之下的请使用-Xrunyjpagent这条命令,如果是在1.5以上则用-agentlib:yjpagent,我这里用后者
@echo off
bat 代码
- :: PATH should contain path to yjpagent.dll
- set OLD_PATH=%PATH%
- set PATH=..\..\bin\win32;%PATH%
-
- :: The following line is added to use JVMTI version of profiler agent in Java 5 or newer
- set JAVA_TOOL_OPTIONS=-agentlib:yjpagent
-
- java -agentlib:yjpagent -jar startup.jar -console -clean -noExit
-
- :: restore PATH
- set PATH=%OLD_PATH%
- echo Press any key...
- pause >nul
然后把这个bat放至你的应用所在根目录,用这个bat去启动你的OSGI应用。
看,应用启起来了
然后到yourkit中去进行应用程序的搜索,yourkit会自动将当前注册了其监控agent的应用都搜索出来
OK,到这里,我们就可以开始用yourkit进行对我们的OSGI应用的profile了,和jprofiler相似的,它也可以从CPU,Memory,Tread几个方面对应用进行监控。
其中得Monitor Usage是我比较喜欢使用的,从这里可以看到当前具体线程的详细情况,来帮助我进行系统性能分析。
好了,到此就简单将几个profile工具如何对我们的OSGI应用进行profile的做法给大家介绍一下,其实在netbeans上面的 profile工具也是非常好用的,以后我还将深入的推出如何对利用这些profile工具对我们的OSGI应用进行一步步的性能调优工作,有感兴趣的同 学可以和我一起讨论。总之个人认为学会如何利用profile工具来优化或者debug我们的系统是非常有必要的,对提高系统的稳定性,健壮性帮助非常 大,也应该引起我们程序开发人员的注意。
分享到:
- 2007-10-28 21:09
- 浏览 3857
- 评论(3)
- 论坛回复 / 浏览 (2 / 10360)
- 查看更多
相关推荐
利用R-OSGi实现分布式OSGi应用 本文通过介绍传统 OSGi 应用程序及 R-OSGi 的实现方式入手,阐述了 R-OSGi 对于 OSGi 规范的实现方式。然后通过一个简单的功能实现由浅入深地讲述传统 OSGi 和 R-OSGi 上的两种不同...
Equinox开发OSGi应用程序
osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍
讲OSGI应用的讲OSGI应用的讲OSGI应用的讲OSGI应用的讲OSGI应用的
扩展Tomcat支持OSGi应用服务项目文件。其项目为eclipse工程。项目说明请参见我的blog《扩展Tomcat支持OSGi应用服务》:http://blog.163.com/haizai219@126/blog/static/44412555200971223629869/
深入理解OSGi:Equinox原理、应用与最佳实践.pdfOSGi应用开发
基于OSGi和Spring开发Web应用教程 教程
基于OSGi和Spring开发Web应用
基于OSGi和Spring开发Web应用
osgi+vs2010+qt5.11 谢了几个 常用的 插件之间的 通信实例,内有源代码
开发一个简单的 OSGi Web 应用实例,如何进行OSGI开发的 实例有利于入门着进行使用
本教程就将演示如何在 Eclipse 环境下利用 Equinox 框架进行 OSGi 应用开发。首先解释了实现上述应用程序所必需了解的基本概念和基础知识,并结合示例代码演示 OSGi 开发的一些重要技术,最后探讨了基于 OSGi 应用...
基于OSGi和Spring开发Web应用的博文对应的代码
《Java应用架构设计 模块化模式与OSGi》PDF版本下载
OSGI企业应用开发(十五)基于Spring、Mybatis、Spring MVC实现一个登录应用博文源码
通过学习了解 Servlet Container 中嵌入 OSGI, 我们也可以将这种技术用到其它的已有的系统中来部署 OSGI 应用。 OSGI 在 J2EE 环境下的应用越来越广泛,目前在 Servlet 应用中使用 OSGI 有两种方式:Servlet ...
OSGI企业应用开发(十四)整合Spring、Mybatis、Spring MVC博文源码
Java应用架构设计模块化模式与OSGi
资源名称:OSGI原理与最佳实践内容简介:国内第一本...其后进入OSGi实战,结合实例讲解如何基于OSGi框架编写模块化、动态化的各种Java应用;最后对OSGi知 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
Java应用架构设计 模块化模式与OSGi