jStat

JVM内存监控:visualVM jconsole jstatd jmap

*爱你&永不变心* 提交于 2019-11-29 00:32:29
转载的一篇文章,但是对文章做了一些补充,以便看到这篇文章的同学能配置成功。 本文是亲自测试的详细配置过程, 不是转载而且linux下不需修改/etc/hosts文件 由于在建项目的需要,监控tomcat的内存使用,检查内存泄漏的情况。其实JDK自身已经提供了很多工具,都在J AVA_HOME/bin/ 目录下:jvisualvm、jconsole、jstatd、jmap等等,以下为试验的环境配置: client: vista、jdk1.6.0_18 server: linux、jdk1.6.0_02、tomcat6、IP:192.168.8.7 主要从下面三个方面描述: jmap (Memory Map) JVM内存对象打印工具 jstatd配置 Tomcat配置JMX 一、用jmap获取数据 JAVA_HOME/bin/jmap -histo PID JAVA_HOME/bin/jmap -histo PID >hismem.txt 显示信息包括Java类、类实例对象数量、在内存中占有量的大小以及类的完整包名。 //将JVM内存堆的信息dump成为一个二进制文件,可供jstat、Eclipse MAT内存分析工具来使用 JAVA_HOME/bin/jmap -dump:format=b,file=heap.bin PID Eclipse MAT的分析工具: http://www

Analyze GC logs for Sun Hotspots, JVM 6

守給你的承諾、 提交于 2019-11-28 17:19:26
I'm trying to analyze GC behaviour for our application (running in Tomcat , under Sun's Hotspots , JVM 1.6 ). So far I've Instructed the JVM to emit GC logs to a separate file using... -Xloggc:gc.log -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGC -XX:+PrintGCTimeStamps -XX:+PrintGCDetails ...and used jstat to output logs using... jstat -gc -t 29045 5s > jstat.gc I am seeing interesting information, but haven't found a tool to help me analyze/visualize these logs. I was pointed to GCViewer by this question , but it only parses a few log lines from gc.log

Seeking a statistical javascript function to return p-value from a z-score

冷暖自知 提交于 2019-11-28 00:02:10
I need to convert z-scores to percentile. I found reference to a function in the jStat library that I could use (jstat.ztest), but the jStat documentation seems to be ahead of the available library because there is no such function in the currently available version of the library . I think there is a more recent version of the library on GitHub , which may include the ztest function, but I am a linux novice and could not figure out how to build the library from the instructions. I spent most of a day learning about git bash and cygwin trying to build the library; I finally decided I'd be

面试官问:平时碰到系统CPU飙高和频繁GC,你会怎么排查?

限于喜欢 提交于 2019-11-27 21:06:53
处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而定位出问题的代码点,进而提供解决该问题的思路。 对于线上系统突然产生的运行缓慢问题,如果该问题导致线上系统不可用,那么首先需要做的就是,导出jstack和内存信息,然后重启系统,尽快保证系统的可用性。这种情况可能的原因主要有两种: 代码中某个位置读取数据量较大,导致系统内存耗尽,从而导致Full GC次数过多,系统缓慢; 代码中有比较耗CPU的操作,导致CPU过高,系统运行缓慢; 相对来说,这是出现频率最高的两种线上问题,而且它们会直接导致系统不可用。另外有几种情况也会导致某个功能运行缓慢,但是不至于导致系统不可用: 代码某个位置有阻塞性的操作,导致该功能调用整体比较耗时,但出现是比较随机的; 某个线程由于某种原因而进入WAITING状态,此时该功能整体不可用,但是无法复现; 由于锁使用不当,导致多个线程进入死锁状态,从而导致系统整体比较缓慢。 对于这三种情况,通过查看CPU和系统内存情况是无法查看出具体问题的,因为它们相对来说都是具有一定阻塞性操作,CPU和系统内存使用情况都不高,但是功能却很慢。下面我们就通过查看系统日志来一步一步甄别上述几种问题。

JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, js...

时光总嘲笑我的痴心妄想 提交于 2019-11-27 17:11:33
jstack -- 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。目前只有在Solaris和Linux的JDK版本里面才有。 jconsole – jconsole是基于 Java Management Extensions (JMX)的实时图形化监测工具,这个工具利用了内建到JVM里面的JMX指令来提供实时的性能和资源的监控,包括了 Java 程序的内存使用,Heap size, 线程的状态,类的分配状态和空间使用等等。 jinfo – jinfo可以从core文件里面知道崩溃的Java应用程序的配置信息,目前只有在Solaris和Linux的JDK版本里面才有。 jmap – jmap 可以从core文件或进程中获得内存的具体匹配情况,包括Heap size, Perm size等等,目前只有在Solaris和Linux的JDK版本里面才有。 jdb – jdb 用来对core文件和正在运行的Java进程进行实时地调试

JVM性能调优监控工具jps、jstack、jstat、jmap、jinfo使用详解

六眼飞鱼酱① 提交于 2019-11-27 17:11:18
是什么 jps 查看所有的 jvm 进程,包括进程 ID ,进程启动的路径等等。 我自己也用 PS ,即: ps -ef | grep java jstack 观察 jvm 中当前所有线程的运行情况和线程当前状态。 系统崩溃了?如果 java 程序崩溃生成 core 文件, jstack 工具可以用来获得 core 文件的 java stack 和 native stack 的信息,从而可以轻松地知道 java 程序是如何崩溃和在程序何处发生问题。 系统 hung 住了? jstack 工具还可以附属到正在运行的 java 程序中,看到当时运行的 java 程序的 java stack 和 native stack 的信息 , 如果现在运行的 java 程序呈现 hung 的状态, jstack 是非常有用的。 jstat jstat 利用 JVM 内建的指令对 Java 应用程序的资源和性能进行实时的命令行的监控,包括了对进程的 classloader , compiler , gc 情况; 特别的,一个极强的监视内存的工具,可以用来监视 VM 内存内的各种堆和非堆的大小及其内存使用量,以及加载类的数量。 jmap 监视进程运行中的 jvm 物理内存的占用情况,该进程内存内,所有对象的情况,例如产生了哪些对象,对象数量; 系统崩溃了? jmap 可以从 core

虚拟机学习之三:虚拟机性能监控与故障处理工具

烂漫一生 提交于 2019-11-27 17:11:07
1.JDK的命令行工具 jvm在jdk的bin目录下试下了很多监控分析jvm运行情况的命令行工具,这些工具都很小,大多数都是jdk/lib/tools.jar类库的薄封装。 1.1 jps -> 虚拟机进程状况工具 jps:虚拟机进程状态工具( JVM Process Status Tool) jps命令格式:jps [options] [hostid] jps执行样例: jps -q 只输出本地虚拟机线程ID C:\Users\Administrator>jps -q 5268 6052 1452 jps -m 输出虚拟机进程启动时传递给主类main()函数的参数。 C:\Users\Administrator>jps -m 5268 PretenureSizeThresholdTest 6052 3404 Jps -m jps -l 输出主类的全名,如果进程执行的是jar包,输出jar包路径 C:\Users\Administrator>jps -l 5268 com.sean.esapi.client.PretenureSizeThresholdTest 6052 6476 sun.tools.jps.Jps jps -v 输出虚拟机启动时jvm参数 C:\Users\Administrator>jps -v 6928 Jps -Denv.class.path=.;C:

高级 Java 必须掌握:JVM 分析工具和查看命令,超详细

被刻印的时光 ゝ 提交于 2019-11-27 17:10:52
jinfo 可以输出并修改运行时的java 进程的opts。 jps 与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。 jstat 一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。 jmap 打印出某个java进程(使用pid)内存内的所有'对象'的情况(如:产生那些对象,及其数量)。 jconsole 一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。 详细:在使用这些工具前,先用JPS命令获取当前的每个JVM进程号,然后选择要查看的JVM。 jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。 以下详细介绍各个参数的意义。 jstat -class pid:显示加载class的数量,及所占空间等信息。 jstat -compiler pid:显示VM实时编译的数量等信息。 jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。 jstat -gccapacity:可以显示,VM内存中三代(young,old

Analyze GC logs for Sun Hotspots, JVM 6

馋奶兔 提交于 2019-11-27 10:36:57
问题 I'm trying to analyze GC behaviour for our application (running in Tomcat , under Sun's Hotspots , JVM 1.6 ). So far I've Instructed the JVM to emit GC logs to a separate file using... -Xloggc:gc.log -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGC -XX:+PrintGCTimeStamps -XX:+PrintGCDetails ...and used jstat to output logs using... jstat -gc -t 29045 5s > jstat.gc I am seeing interesting information, but haven't found a tool to help me analyze/visualize

Seeking a statistical javascript function to return p-value from a z-score

ぃ、小莉子 提交于 2019-11-27 04:38:04
问题 I need to convert z-scores to percentile. I found reference to a function in the jStat library that I could use (jstat.ztest), but the jStat documentation seems to be ahead of the available library because there is no such function in the currently available version of the library. I think there is a more recent version of the library on GitHub, which may include the ztest function, but I am a linux novice and could not figure out how to build the library from the instructions. I spent most