使用jprofiiler远程监控tomcat【入门使用篇】

本文通过一个简单示例介绍如何使用JProfiler监控Java应用程序的对象分配与垃圾回收过程,并详细展示了设置及观察结果的方法。
使用JProfiler剖析Java Application中对象的分配和回收(gc)
2008年09月02日 星期二 13:01

JProfiler是一款Java的性能监控工具。可以查看当前应用的对象、对象引用、内存、CPU使用情况、线程、线程运行情况(阻塞、等待等),同时可以查找应用内存使用得热点,即:哪个对象占用的内存比较多;或者CPU热点,即:哪儿方法占用的较大的CPU资源。

下面结合一个简单的例子说明Jprofiler如何使用

package my;

import java.io.IOException;
import java.util.ArrayList;

public class Test {

    public static void main(String[] args) throws IOException {
       char ch=' ';
        while(ch!='n')
            ch=(char)System.in.read();

        for(int i=0;i<1000;i++)
            test();
        ch=' ';
        while(ch!='n')
            ch=(char)System.in.read();

    }

    public static void test(){
        ArrayList<Integer> arr=new ArrayList<Integer>();
        for(int i=0;i<10000;i++)
            arr.add(new Integer((int)(Math.random()*100)));
        //arr.clear();
        //arr=null;

    }
}

代码中红色的部分是为了停下来对JProfiler进行操作和观察结果而设置的。

经过实验,发现蓝色部分加上和不加结果是一样的。因为arr是局部变量,test()运行结束时其生命周期也结束了,arr所引用的对象也被回收。因此也没必要设置为null。

1、启动JProfiler,选择local application

1

2、进入下一步,设置参数

2

3、确认,在下面的对话框中也点OK确认

3

Profiling Setting

5

系统中已存在的对象

4、设置要记录的数据

6

记录对象分配情况

7

记录对类的跟踪数据

8

9

在类跟踪选项中添加要跟踪的类

5、开始测试

10

在Concole窗口中按n(代码里边要求的),进入下一步对象的分配和释放阶段

6、测试程序段结束,观察结果

11

运行结束时,有42470个Integer对象尚未回收

12

所关注的类的实例数量变化情况,下降的地方是gc起作用了

13

GC在运行过程中,每一时刻回收的对象数量。(GC不是一直运行的,要在JVM的内存不够时才运行)

14

所记录的对象的数量变化情况

15

堆内存分配变化情况

7、按F4执行gc,观察结果

在第6步看到,运行结束时,有42470个Integer对象尚未回收。现在按F4执行gc

16

Integer对象全部被回收

17

18

19

20

图中的小的尖峰就是对之前未回收的Integer对象进行回收时产生的数据。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值