`
flyPig
  • 浏览: 137568 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java分析工具

阅读更多
1、jps:类似unix系统里的ps命令,这个命令主要是用来显示当前系统的进程情况,有哪些进程,及其 id。 jps 也是一样,它的作用是显示当前系统的java进程情况,及其id号。我们可以通过它来查看我们到底启动了几个java进程和他们的进程号(为下面几个程序做准备),并可通过opt来查看这些进程的详细启动参数。
使用方法:在当前命令行下打 jps(需要JAVA_HOME,没有的话,到改程序的目录下打) 。

可惜没有linux下的ps好用,名称不好用。但是在第四个工具jconsole的界面里面会有具体JAR包的名称。
    
2、jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。
    jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。以下详细介绍各个参数的意义。
    jstat -class pid:显示加载class的数量,及所占空间等信息。

    [root@localhost bin]# jstat -class 25917

    Loaded  Bytes  Unloaded  Bytes     Time

   2629    2916.8       29   24.6     0.90

    jstat -compiler pid:显示VM实时编译的数量等信息。
[root@localhost bin]# jstat -compiler 25917

Compiled Failed Invalid   Time   FailedType FailedMethod

     768      0       0   0.70            0

    jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
    jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使 用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。
    jstat -gcnew pid:new对象的信息。
    jstat -gcnewcapacity pid:new对象的信息及其占用量。
    jstat -gcold pid:old对象的信息。
    jstat -gcoldcapacity pid:old对象的信息及其占用量。
    jstat -gcpermcapacity pid: perm对象的信息及其占用量。
    jstat -util pid:统计gc信息统计。
    jstat -printcompilation pid:当前VM执行的信息。
    除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题。
    
3、jmap 是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。使用方法 jmap -histo pid。如果连用 SHELL jmap -histo pid>a.log可以将其保存到文本中去(windows下也可以使用),在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。 jmap -dump:format=b,file=f1 3024可以将3024进程的内存heap输出出来到f1文件里。
    
4、jconsole 是一个用java写的GUI程序,用来监控VM,并可监控远程的VM,非常易用,而且功能非常强。由于是GUI程序,这里就不详细介绍了,不会的地方可以参考SUN的官方文档。
    使用方法:命令行里打 jconsole,选则进程就可以了。     
    提示:windows查看进程号,由于任务管理器默认的情况下是不显示进程id号的,所以可以通过如下方法加上。ctrl+alt+del打开任务管 理器,选择‘进程’选项卡,点‘查看’->''选择列''->加上''PID'',就可以了。当然还有其他很好的选项。

5、ThreadDump
在Windows中,是在JVM运行的控制台窗口中按下Ctrl-Break。对基于Linux和Unix的系统,则用kill命令将SIGQUIT发送到JVM。这可以通过命令kill – 3 完成,这里的pid是JVM的进程ID
提示:a.最好重定向到一个文件里。  
      b.为了避免关闭telnet的TERM信号量可以使用nohup

6、JProfilor
在监测端的Jprofile,其设置没有多大的改变,也是按照向导,选择更多不同的选项而已。
(远程)被监测端的配置:
(1) 将以下启动参数加入到Java应用的 "Java Runtime Parameters" 中
-Xrunjprofiler:port=8849 -Xbootclasspath/a:E:/PROGRA~1/JPROFI~1/bin/agent.jar

简单地说,就是在启动Java应用的命令行里面加上以上参数。
port=8849,这个端口就是Jprofile里面设置监听的远程端口, 其必须要与Jprofile里面的设置保持一致。另外,agent.jar这个文件应该是位于Jprofile安装目录的bin目录下(对应被监测端的路 径)。对于目录过长或者带空格的,要注意转换为8位长度的写法,不然可能会找不到路径(windows系统有此问题)。

(2) 将Jprofile安装路径下的bin\windows 增加到Path环境变量中
E:\Program Files\jprofiler5\bin\windows

注意,这个路径应该是Jprofile安装路径下的bin\windows(不同系统对应不用的目录,unix、linux对应的不一样。bin\unix或bin\linux。没用过这两个版本)

两边配置完成后,就可以启动被监测的Java应用和Jprofile,一会就可以在Jprofile上看到监测数据了。这就是使用Jprofile进行监测的大致步骤,不同的使用模式配置步骤没有区别。


Jprofile的几种监测模式
Jprofile提供3中监测模式,分别是等待模式,非等待模式,离线模式。

等待模式:在等待模式中,被监测的Java应用,需要等待Jprofile连接上,才会继续其启动过程,不然该启动过程会被挂起,处于等待Jprofile连接中。
使用该模式的方法是,在Jprofile配置session时,选择该模式,然后在被监测的Java应用启动参数中,加入:
-Xrunjprofiler:port=8849 -Xbootclasspath/a:E:/PROGRA~1/JPROFI~1/bin/agent.jar

非等待模式:被监测的Java应用不会等待Jprofile的连接而直接启动,Jprofile在需要时再启动。
使用该模式的方法是,在Jprofile配置session时,选择该模式,然后在被监测的Java应用启动参数中,加入:
-Xrunjprofiler:port=8849,nowait,id=116,config=E:/DOCUME~1/ADMINI~1/JPROFI~1/config.xml  -Xbootclasspath/a:E:/PROGRA~1/JPROFI~1/bin/agent.jar

离线模式:被监测的Java应用不会等待Jprofile的连接而直接启动,同时监测数据会在服务器端缓存,在Jprofile连接时,将其返回给Jprofile。
使用该模式的方法是,在Jprofile配置session时,选择该模式,然后在被监测的Java应用启动参数中,加入:
-Xrunjprofiler:offline,id=116,config=E:/DOCUME~1/ADMINI~1/JPROFI~1/config.xml  -Xbootclasspath/a:E:/PROGRA~1/JPROFI~1/bin/agent.jar

这里要注意的两个地方是:id=116,这个是Jprofile中设定的监测session的id,而config=E:/DOCUME~1/ADMINI~1/JPROFI~1/config.xml则 是包含该session的Jprofile配置文件(如果你的session是在监测端配置的,那么你必须将监测端的这个config文件同步到被监测端 上,否则被监测端将因为找不到你指定的sessionId而提示错误)。上面的启动参数的路径都应该是被监测端的路径。



WAS服务器的远程监测设置
1.配置Jprofile,创建一个监测远程服务器的session。如果使用向导,选择了WebSphere服务器的,可能需要提供该服务器的 server.xml文件和startServer.bat启动脚本文件。这时你去服务器那里,把这个两个文件,放到监测端的机器上,然后填入对应的路径 就好了。当session创建完成后,再将这两个文件复制回被监测端的服务器上。
其实Jprofile需要这两个文件的原因是因为它会自动帮你修 改这两个文件,使WAS server的启动环境符合Jprofile的设置,免了你手动设置的麻烦。如果你使用的WebSphere单服务器版还好,若是网络部署版,手动修改服 务器的config是很危险的。对于这种情况,我的做法是到被监测端的服务器拿这两个文件到监测端,但不将修该后的文件放回被监测端的服务器,而改用手动 配置WAS server。

2.设置WAS服务器的启动参数
在Application servers > server1 > Process Definition > Java Virtual Machine 的 Generic JVM arguments 中加入上面提到的Jprofile模式的参数。

3.设置WAS 所在的机器的Path环境变量
在被监测端的Path环境变量中,加入E:\Program Files\jprofiler5\bin\windows(注意修改为服务器上Jprofile对应的路径)

4.禁用WAS server对应的windows service,如果将WAS server注册为windows的话。(有时不禁用它也可以正常对server进行监测,如果禁用了,就不能再从DM Console上对它进行启动了。)

5.同步监测端和被监测端的Jprofile config.xml文件

6.重启该WAS server.(如果在DM Consol中启动失败。尝试在命令行,使用脚本启动)

7.启动Jprofile,打开设置好的session

8.这时你应该看到监测数据
分享到:
评论

相关推荐

    MAT内存 JAVA分析工具

    MAT(Memory Analyzer Tool) 内存 JAVA 分析工具 MAT(Memory Analyzer Tool) 是一个基于 Eclipse 的内存分析工具,是一个快速、功能丰富的 JAVA heap 分析工具。它可以帮助我们查找内存泄漏和减少内存消耗。使用内存...

    唯品会java分析工具vjtop

    唯品会java分析工具vjtop 用于分析java的堆栈信息,操作简便,快速定位问题 也可通过该工具获取java堆栈相关信息用于监控系统

    java内存分析工具dumpAnalyzer

    dumpAnalyzer图形化进行内存分析,可以很方便的知道系统里面什么地方存在性能瓶颈

    静态java分析工具PMD

    PMD正是这样一种工具,可以直接使用它自带的规则(当然也可以使用自己的规则)对Java源程序进行分析找出程序存在的问题,可以很大程度上的减轻代码检查工作的繁琐,为项目组今后的维护和开发工作起到指导的作用。...

    java 线程 dump 分析工具 2.3.3

    java 线程Dump 分析工具: Java的TDA线程转储分析器是一个用于分析Sun Java VM生成的线程转储和堆信息的小型Swing GUI(目前用1.4测试)。它从提供的日志文件中解析线程转储和类直方图。它提供关于发现的线程转储的...

    javacore和dump分析工具

    这个文件最重要的作用就是分析 Java 堆内存泄露问题,heap analyzer,MAT 等工具都可以分析这种文件。 Java core 文件保存的是 java 应用程序在崩溃时或任一时刻关于 Java 运行环境的各种信息。包括 Java 虚拟机的...

    java dump堆栈分析工具

    java dump 堆栈 dumpAnalyzer 分析,在日常工作中,经常会遇到,系统跑着跑着就会出现性能问题,CPU居高不下。这个时候我们就需要对系统的堆栈信息进行分析。这里就介绍如何使用IBM内存检测工具(dumpAnalyzer)。

    java线程分析工具TDA

    分析java线程日志的工具,使用jstack把java线程日志dump下来,然后上传到该工具,就可以查看线程阻塞情况等信息。

    jca javacore分析工具

    帮忙分析javacore和dump文件,查看内存泄漏,线程阻塞,个人觉得很实用,希望可以帮忙到需要的人

    javacore分析工具

    IBM Thread and Monitor Dump Analyzer for Java 2014年1月最新发布 可以分析weblogic或was当机生成的javacore和dump文件 使用方法在命令行输入 java -Xmx500m -jar jca452.jar

    IBM WebSphere JavaCore分析工具

    Websphere javacore文件分析工具.

    JAVA编码习惯和几款JAVA性能分析工具

    在软件开发中,尤其是使用Java语言时,遵循良好的编码...在选择性能分析工具时,需要考虑项目需求、团队熟悉度以及工具的特性和性能。正确使用这些工具,结合良好的编码习惯,能够显著提升Java应用程序的性能和稳定性。

    IBM JVM javaCore 分析工具

    IBM JVM 分析工具,JCA,javaCore查看工具

    Mac OS java内存分析工具MAT

    Mac OS java内存分析工具,Eclipse MAT(Memory analyse tool)

    Java 内存分析工具

    Java内存分析工具,解决内存泄漏问题

    java线程分析工具.zip

    java线程分析工具(工具+使用说明) 1、生成堆栈报告1.txt 参照:https://www.cnblogs.com/andy9468/p/11171206.html 2、运行分析工具 在windows中双击运行:java线程堆栈分析工具-jca463.jar 3、拖入报告 导出1....

    javacore分析工具jca36

    javacore分析工具,很好的一款图形界面分析工具

    JavaCore和HeapDump分析工具

    JavaCore和HeapDump分析工具

Global site tag (gtag.js) - Google Analytics