Borland Optimizeit Suite 是Borland 提供的一个Java 代码优化工具包,包括:
1、Profiler:内存、Java 虚拟机、CPU 使用情况跟踪
2、Thread Debugger:Thread 跟踪工具
3、Code Coverage:代码运行覆盖跟踪工具,可以提供代码的覆盖率
以下是详细的介绍:
【1、Profiler:】
首先介绍一下什么是JAVA的内存泄漏
Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为Java也存在内存泄露,但它的表现与C++不同。
随着越来越多的服务器程序采用Java技术,例如JSP,Servlet, EJB等,服务器程序往往长期运行。另外,在很多嵌入式系统中,内存的总量非常有限。内存泄露问题也就变得十分关键,即使每次运行少量泄漏,长期运行之后,系统也是面临崩溃的危险。
Java存在内存泄露问题,其原因主要是一些对象虽然不再被使用,但它们仍然被引用。为了解决这些问题,我们可以通过软件工具来检查内存泄露,检查的主要原理就是暴露出所有堆中的对象,让程序员寻找那些无用但仍被引用的对象。
Profiler 主要用于观察当前的内存及Java 虚拟机、CPU 使用情况。
可以查看的内容:
在图标栏中间的3个按钮从左到右依次代表查看Java 虚拟机、CPU、内存情况。
查看内存情况可以按照以下几种方式查看:
1、Heap:堆,缺省模式
2、Allocation Backtrace:显示Heap 中某一Class 的被调用情况
3、Instance Display:显示某一实例的引用(Reference)情况
4、Reference from roots:以类继承关系显示各个类占用内存的情况
后两种模式下可以通过双击Allocated at 列表来查看源代码,当然源代码路径必须事先设定。
【2、Thread Debugger】
Thread Debugger 用于线程的调试,可以观察线程的运行、死锁及线程调用方法。
Thread Debugger 可以使用的功能:
1、查看线程情况
2、查看Monitor 信息:主要是看线程的Block。
3、启动Moniter 分析
查看线程情况可以按照
1、Acitvate 模式:查看线程的活动情况
2、Contention 模式:显示Contention,所谓Contention 指两个或两个以上的Thread 试图同时进入同一个Monitor
3、Waiting 和I/O Waiting 模式
4、Moniter Enter 模式:显示线程进入Moniter 及在Moniter 运行的情况。
【3、Code Coverage:】
主要功能:用来检测哪些代码执行了,哪些代码没有执行,执行过的代码占总代码的比例。
使用步骤:
1、设置(FILE->SETTINGS)要执行的类,要包含的包,源代码路径。
2、开始执行
3、Class Coverage(类代码覆盖率)视图可以看到系统引用的所有类的代码的覆盖率。
4、双击Class Coverage中一个类可以跳转到这个类的方法覆盖率视图(Method Coverage)
图标栏右上角的三个按钮分别是
1、Class Coverage(类代码覆盖率)视图
2、方法覆盖率视图(Method Coverage)
3、控制台视图,可以看到程序的输出结果。注意:不支持中文显示。
安装问题:
在windows2003上的安装方法:
Borland Optimizeit Suite 6.0 for Windows在windows 2003上安装过程中提示内存溢出的错误。解决办法是,在安装出现错误确定退出安装或者杀死安装进程,然后在临时目录中找到解压缩后的安装目录(一般是%sysdrive%/Documents and Settings/Administrator/Local Settings/Temp/I*******)拷贝JDK1.4的jre目录下的bin和lib文件夹到该目录的Windows/resource/jre目录下覆盖原来的jre,然后运行临时目录windows目录下的OptItSuite60.exe文件就可以正常安装了,使用也正常。原安装包造成不能正常安装的原因可能是安装包自带的jre与windows2003不兼容。
与Eclipse集成使用方法:
打开Optimizeit Profiler,从菜单tool中选择IDE Intergration,再单击子菜单Eclipse 2.0,2.1 and 3.0...,接着按照向导进行,在第二步中选择Eclipse的安装目录(保证Eclipse安装目录下有workspace文件夹,如果没有请手工创建),然后单击下一步。这样向导就会自动把相关的插件拷贝到Eclipse的plugin目录下,并自动拷贝类库oinative.dll文件到Eclipse根目录下。
集成中容易出现的问题:
在向导第二步选择了Eclipse的安装目录后next按钮始终为置灰状态,不可进行下一步操作。原因:Optimizeit是根据安装目录下是否有几个特定的目录来判断是否是Eclipse安装目录的,除了Eclipse原有的目录外还要检查有没有工作区workspace目录,如果没有的话请手工新建一个,否则这一步不会通过的。
参考:1,http://www.javatang.com/archives/2006/10/10/160171.html
2,http://www.51testing.com/html/31/483.html
3,http://blog.csdn.net/topcn/archive/2004/11/03/165350.aspx
4,http://blog.csdn.net/wyingquan/archive/2005/04/28/366369.aspx
5,http://www.ibm.com/developerworks/cn/java/l-JavaMemoryLeak/index.html