JProfiler入门

2023-10-12 10:48
文章标签 入门 jprofiler

本文主要是介绍JProfiler入门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!




JProfiler是一款Java的性能监控工具。可以查看当前应用的对象、对象引用、内存、CPU使用情况、线程、线程运行情况(阻塞、等待等),同时可以查找应用内存使用得热点,这里提供有几篇文章供参考:获取、介绍,简单入门,使用JProfiler解决实际问题。这几篇文章基本介绍了常见东西了,下面说点心得。

AD:

所谓“工欲善其事,必先利其器”,好的工具确能起到事半工倍的作用。我用到的最多的就两个JConsole 和JProfiler 。JConsole监控系统内存变化情况,如果有内存溢出的话,垃圾回收将会呈现锯齿状。发现问题以后,使用JProfiler,在小压力(或无压力)的情况下监控对象变化,定位内存溢出原因。

JProfiler是一款Java的性能监控工具。可以查看当前应用的对象、对象引用、内存、CPU使用情况、线程、线程运行情况(阻塞、等待等),同时可以查找应用内存使用得热点,即:哪个对象占用的内存比较多;或者CPU热点,即:哪儿方法占用的较大得CPU资源。我使用的是4.3.2版本,以前试用过3**版本,不过那个bug比较多,容易死,4**版本稳定多了。

有了上面那些信息对于系统的调优会有很大帮助。这里提供有几篇文章供参考:获取、介绍,简单入门,使用JProfiler解决实际问题。这几篇文章基本介绍了常见东西了,下面说点心得。

  1. JProfiler监控是要消耗系统资源的,所以一般情况下不要用于性能测试时候的监控。
  2. 如果要用于相对大压力情况下,可以有选择的打开监控项,不用所有都打开。主要有两个,一个是内存监控,打开的情况下可以查找内存分配热点。一个是CPU监控,打开的情况下可以查看CPU使用热点。

 

如图所示,红笔标注部分。如果两个都关闭的话,还是可以跑一定压力的,同时还可以监控对象数量。

  1. 个人认为最好用的(也是用的最多的)是查询当前的对象的数量。数量监控很重要,如果你使用了单例,那么你只会看到有一个对象存在,如果多了就说明程序有问题了。同样,如果应用进行一系列操作,检查一下该销毁的对象是否还继续存在,如果没有释放,就得考虑是否存在内存溢出了。
  2. JProfiler还提供了一个比较好的检查内存溢出得工具。他可以查找某个对象的引用情况,即:当你发现某个该释放掉的对象没有释放,就可以看一下哪个实例在引用它,找到了根即找到了溢出点。
  3. 具体操作如下:在 “Memory Views”界面中右键选择你要监控的对象,选择第一项“Take Heap Snapshot for Selection”,选择完成后会进入“Heap Walker”界面,界面下面提供几个功能,选择“References”即可 。如图:

  4. JProfiler提供不同的观察粒度,提供对类的监控、对包的监控、对J2EE组件的监控,同时过滤器也比较好用,直接定位你关注的包或类即可。
  5. JProfiler的监控可能与应用之间存在一定时间差,所以有些时候需要等待刷新,才能显示正确系统情况。

Windows客户端的JProfiler远程监控Linux上的Tomcat

1.测试环境

服务器:RedHat Linux 3.4.3-9.EL4(内核版本 2.6.9-5.EL),Tomcat5.5.20,Sun JDK 1.5.0_09,JProfiler 4.3.2 for linux(安装包:jprofiler_linux_4_3_2.sh)

客户端:Windows XP,JProfiler 4.3.2 for windows(安装包:jprofiler_windows_4_3_2.exe)

2.JProfiler软件下载地址 http://www.ej-technologies.com/

3.客户端 JProfiler 安装 略

4.服务器端 JProfiler 安装:

把 jprofiler_linux_4.3.2.sh 上传到到服务器,假设路径为 /opt/jprofiler

   
  1. # cd /opt/jprofiler  
  2. # chmod +x *.sh   
  3. # ./jprofiler_linux_4.3.2.sh -c 

按照提示来安装,提示都很简单,不在多说。安装路径选择 /opt/jprofiler4

注意,这里的 -c 意思是用字符方式来安装,如果机器上没有 X 则加上该参数.

5.客户端连接配置

1). 运行 JProfiler 。第一次打开会有向导,忽略它。

2). 选择 Session->Integration Wizard->New Remote Integratation

3). 选择 On a remote computer;Platform of remote computer 选择 Linux x86/AMD 64;Next

4). 输入服务器 IP ;Next

5). 输入服务器上的 jprofiler 的安装路径,如 /opt/jprofiler4 ;next

6). 选择服务器的 JDK 环境,这里是:Sun,1.5.0,hotspot;next

7). 输入端口:这里是默认值 8849;next

8). 选择启动模式:这里选第一种 wait for a connection from the jprofiler GUI;next

9). 这里会列出需要在服务器端做的配置:

   
  1. Integration type: [Generic application]  
  2. Selected JVM: Sun 1.5.0 (hotspot)  
  3. Startup mode: Wait for JProfiler GUI 

(1) Please insert

-agentlib:jprofilerti=port=8849  -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar

into the start command of your remote application right after the java command.

(2) Please add

/opt/jprofiler4/bin/linux-x86

to the environment variable LD_LIBRARY_PATH.

A remote session named Remote application on 192.168.40.15 will be created that connects to a running instance of the remote application that is started with the modified start command.

6.服务器端的配置

(1)修改系统环境配置文件 /etc/profile ,增加

   
  1. JPROFILER_HOME=/opt/jprofiler4/bin/linux-x86  
  2. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JPROFILER_HOME 

(2)修改TOMCAT启动文件catalina.sh,添加-agentlib:jprofilerti=port=8849 -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar 内容到CATALINA_OPTS中;

“-agentlib:jprofilerti=port=8849 -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar ” 此内容由客户端软件生成

CATALINA_OPTS="$CATALINA_OPTS -Xms128m -Xmx128m $JPDA_OPTS -agentlib:jprofilerti=port=8849   -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar"

7.Reboot Linux and startup Tomcat using startup.sh;

The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:

   
  1. JProfiler> Protocol version 23  
  2. JProfiler> Using JVMTI  
  3. JProfiler> 32-bit library  
  4. JProfiler> Listening on port: 8849.  
  5. JProfiler> Native library initialized  
  6. JProfiler> Waiting for a connection from the   JProfiler GUI  

8.启动客户端软件

点击jprofiler菜单 session>start center>Open Session

Available session configurations中列出了刚才配置的连接,选中使用就OK了!!

9.The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:

   
  1. JProfiler> Using dynamic instrumentation  
  2. JProfiler> Time measurement: elapsed time  
  3. JProfiler> CPU profiling enabled  
  4. JProfiler> Hotspot compiler enabled  
  5. JProfiler> Starting org/apache/catalina/startup/Bootstrap  

10.当中断JProfiler连接时

The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:

   
  1. JProfiler> Disconnected. Waiting for reconnection.  
  2. JProfiler> Listening on port: 8849. 

原文链接:http://hi.baidu.com/xuwanbest/blog/item/605f9f3335f05e46ac4b5f07.html

这篇关于JProfiler入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/195320

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非

MySQL入门到精通

一、创建数据库 CREATE DATABASE 数据库名称; 如果数据库存在,则会提示报错。 二、选择数据库 USE 数据库名称; 三、创建数据表 CREATE TABLE 数据表名称; 四、MySQL数据类型 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串类型 4.1 数值类型 数值类型 类型大小用途INT4Bytes整数值FLOAT4By

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是