JMAP

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

Why is my Java heap dump size much smaller than used memory?

北城余情 提交于 2019-11-27 15:09:56
问题 Problem We are trying to find the culprit of a big memory leak in our web application. We have pretty limited experience with finding a memory leak, but we found out how to make a java heap dump using jmap and analyze it in Eclipse MAT. However, with our application using 56/60GB memory, the heap dump is only 16GB in size and is even less in Eclipse MAT. Context Our server uses Wildfly 8.2.0 on Ubuntu 14.04 for our java application, whose process uses 95% of the available memory. When making

Core dump taken with gcore, jmap conversion to hprof file format fails with Error message

白昼怎懂夜的黑 提交于 2019-11-27 14:04:41
We recently had one of our JVM's crash, leaving behind a core dump file produced by the gcore command. We want to have a look at the contents of the file and find out exactly what caused the crash. Using the jmap command you are supposed to be able to turn core dump files into files in the hprof file format, which you can then analyse using VisualVM and a number of other tools. I've tried this and get an error message. This was the command that I ran (on the same box that the crash took place, using the same JVM): jmap -dump:format=b,file=dump.hprof /usr/java/jdk1.6.0_16/bin/java core.dump

JVM调优前戏之JDK命令行工具---jhat

妖精的绣舞 提交于 2019-11-27 12:26:25
在JDK的命令行中,一般开发人员最耳熟能详的肯定就是java,javac,javap等常用命令,不过在jdk/bin下还有许多其他的命令行工具,它们被用来监测JVM运行时的状态,下面我们来详细解读一下几个常用的工具以及如何使用。 jhat jhat(JVM Heap Analysis Tool)命令是与jmap搭配使用,用来分析jmap生成的dump,jhat内置了一个微型的HTTP/HTML服务器,生成dump的分析结果后,可以在浏览器中查看。在此要注意,一般不会直接在服务器上进行分析,因为jhat是一个耗时并且耗费硬件资源的过程,一般把服务器生成的dump文件复制到本地或其他机器上进行分析。 命令格式 jhat [dumpfile] 示例 $ jhat -J-Xmx512m dump.hprof eading from dump.hprof... Dump file created Fri Mar 11 17:13:42 CST 2016 Snapshot read, resolving... Resolving 271678 objects... Chasing references, expect 54 dots...................................................... Eliminating duplicate

How to analyse the heap dump using jmap in java

耗尽温柔 提交于 2019-11-27 11:32:30
I am creating heap dump using below command: jmap -dump:file=DumpFile.txt <process-id> I have opened the generated file - DumpFile.txt but it is not in readable format. So please let me know how to analyze the data in the generated file. You should use jmap -heap:format=b <process-id> without any paths. So it creates a *.bin file which you can open with jvisualvm.exe (same path as jmap). It's a great tool to open such dump files. You can use jhat (Java Heap Analysis Tool) to read the generated file: jhat [ options ] <heap-dump-file> The jhat command parses a java heap dump file and launches a

What do those strange class names in a java heap dump mean?

ε祈祈猫儿з 提交于 2019-11-27 10:16:49
问题 I'm trying to track down a memory leak in a java process, using jmap and jhat. Every time I do this I see those weird notation for specific object types, like [S for string arrays and [C for Character arrays. I never remember what means what, and it's very hard to google this stuff. ( EDIT : to prove my point, it turns out that [S is array of short and [C is array of char.) Anyone care to make a table listing all the different class names and what they mean? Or point me to such table?

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

这一生的挚爱 提交于 2019-11-27 01:37:08
现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是 Java 程序员进阶的必备要求。本文将对一些常用的 JVM 性能调优监控工具进行介绍,希望能起抛砖引玉之用。本文参考了网上很多资料,难以一一列举,在此对这些资料的作者表示感谢!关于 JVM 性能调优相关的资料,请参考文末。 A 、 jps(Java Virtual Machine Process Status Tool) jps 主要用来输出 JVM 中运行的进程状态信息。语法格式如下: jps [options] [hostid]   如果不指定 hostid 就默认为当前主机或服务器。 命令行参数选项说明如下: 1 - q 不输出类名、Jar名和传入main方法的参数 2 - m 输出传入main方法的参数 3 - l 输出main类或Jar的全限名 4 -v 输出传入JVM的参数 比如下面: root@ubuntu:/# jps -m -l 2458 org.artifactory.standalone.main.Main /usr