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.这时你应该看到监测数据
分享到:
相关推荐
**唯品会Java分析工具VJTop** VJTop是一款由唯品会开发的高效、易用的Java分析工具,专门用于实时监控和诊断Java应用程序的运行状态。它提供了丰富的功能,帮助开发者快速定位和解决性能问题,确保系统的稳定运行。...
Java内存分析是优化应用程序性能的关键环节,特别是在处理大型或资源密集型应用时。"dumpAnalyzer"是一个专门用于此目的的工具,它提供了图形化的界面,帮助开发者深入理解系统的内存状况,找出潜在的性能瓶颈。本文...
JavaCore分析工具是一种在Java应用程序出现问题时,如CPU占用过高或出现Out Of Memory (OOT)错误时,用于诊断和分析的利器。它主要用于Java虚拟机(JVM)的故障排查,尤其是在使用像Websphere或Weblogic这样的企业级...
PMD正是这样一种工具,可以直接使用它自带的规则(当然也可以使用自己的规则)对Java源程序进行分析找出程序存在的问题,可以很大程度上的减轻代码检查工作的繁琐,为项目组今后的维护和开发工作起到指导的作用。...
- **分析heapdump**:接着,使用heapdump分析工具查找内存占用大的对象,分析其生命周期,找出可能导致内存泄漏的嫌疑对象。 - **排查与修复**:定位到问题后,分析代码逻辑,找出导致问题的原因,如无用对象未被...
java 线程Dump 分析工具: Java的TDA线程转储分析器是一个用于分析Sun Java VM生成的线程转储和堆信息的小型Swing GUI(目前用1.4测试)。它从提供的日志文件中解析线程转储和类直方图。它提供关于发现的线程转储的...
这个文件最重要的作用就是分析 Java 堆内存泄露问题,heap analyzer,MAT 等工具都可以分析这种文件。 Java core 文件保存的是 java 应用程序在崩溃时或任一时刻关于 Java 运行环境的各种信息。包括 Java 虚拟机的...
IBM WebSphere JavaCore分析工具是针对IBM WebSphere应用服务器中出现的问题进行诊断的重要工具。JavaCore文件是由IBM WebSphere生成的一种日志文件,它记录了JVM(Java虚拟机)在遇到严重错误或异常时的堆栈跟踪和...
java dump 堆栈 dumpAnalyzer 分析,在日常工作中,经常会遇到,系统跑着跑着就会出现性能问题,CPU居高不下。这个时候我们就需要对系统的堆栈信息进行分析。这里就介绍如何使用IBM内存检测工具(dumpAnalyzer)。
TDA(Thread Dump Analyzer)是一款强大的Java线程分析工具,它能够帮助开发者深入理解应用在运行时的线程状态,包括线程的阻塞情况、等待资源、死锁等问题。下面将详细介绍TDA的使用方法、功能以及它如何帮助我们...
标题中的“一个Java写的日志分析工具”表明这是一个利用Java编程语言开发的软件工具,其主要功能是解析和分析日志文件。日志文件通常记录了应用程序运行过程中的各种事件和异常信息,对于调试、性能优化和问题排查...
总结起来,MAT作为一款强大的Java内存分析工具,具备了深度分析、自动化检测内存泄漏、直观的内存结构展示等功能,是Java开发者必备的调试利器。无论是排查生产环境的内存问题,还是在开发阶段优化代码,MAT都能提供...
在软件开发中,尤其是使用Java语言时,遵循良好的编码...在选择性能分析工具时,需要考虑项目需求、团队熟悉度以及工具的特性和性能。正确使用这些工具,结合良好的编码习惯,能够显著提升Java应用程序的性能和稳定性。
IBM JVM 分析工具,JCA,javaCore查看工具
**Mac OS上的Java内存分析工具MAT** 在Java应用程序开发中,内存管理是至关重要的,特别是对于大型、长期运行的应用程序,内存泄漏可能导致性能下降甚至系统崩溃。为了有效地诊断和解决这些问题,开发人员需要借助...
JavaCore分析工具JCA36是一款专为Java开发者设计的强大性能分析工具,它提供了一个直观的图形用户界面(GUI),帮助开发者深入理解Java应用程序的运行状况。通过使用JCA36,用户可以轻松地捕获和分析Java虚拟机(JVM...