Java性能分析工具&&JProfiler

程序性能分析的起点其实与Java无关,它是一组操作系统自带的基本监控工具。

Unix系统中:

vmstata、iostat、prstat、top等



Window系统中:

typeperf等

typeperf -si 1 "\System\Processor Queue Length 显示CPU队列当前长度


系统本身的监控,有很多方法和工具,不多说。

====================================

JProfile可以在window和unix使用,其安装都非常方便,但需要注意的是被监控的应用要修改其启动的JAVA_OPTS参数,其中核心的两个参数分别是:

angent.jar 与 config.xml及id指向


config.xml默认可以在系统用户目录中找到
agent.jar默认可在jprofile的安装bin目录中找到(可以拷到单独目录)
id要与config.xml配置session id的保持一致


set JAVA_OPTS=%JAVA_OPTS%
-agentlib:jprofilerti=port=8849,nowait,id=80,config=D:\usr\config.xml -Xbootclasspath/a:D:\usr\agent.jar


在Unix下程序运行的配置:

#DEFAULT_JAVA_DEBUG_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$JAVA_DEBUG_PORT -agentpath:/opt/jprofiler/bin/linux-x64/libjprofilerti.so=port=8849"


下面以主流的开发工具Intelligent为例,介绍下工具的使用:

1.在IDE中进行代码编写,在运行时加入上面的配置,如图:


程序启动


打印以上信息,则配置基本正确。


2.打开Jprofier工具开始进行性能分析


选中程序test2,开始监控




下面通过程序简单介绍性能分担问题:


下图中,可以看到gc线程一直在频繁运行当中。说明垃圾回收一直在执行。

查看代码:

 private int a;
    private double b;
    private String abc="acbsfdsfdaaaaaaaaaaaaaaaaaaa";
    private BigInteger bigInteger=new BigInteger("3232342222222222");
    private int a1;
    private double b1;
    private String abc1="acbsfdsfdaaaaaaaaaaaaaaaaaaa";
    private BigInteger bigInteger1=new BigInteger("3232342222222222");

    public static List list = new ArrayList();

    public static void main(String[] args) {
        while (true) {
            for (int i = 0; i < 10000; i++) {
                list.add(new ZooKeeperTest());
            }
            try {
                TimeUnit.MILLISECONDS.sleep(5);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

是由于list集合在频繁的写入数据导致的



该工具还有许多其它的标签,如hot spots,来做性能分析,屡试不爽的。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值