JVM性能监控工具使用

原创 2015年11月19日 13:30:45

一.基础知识

JVM:java虚拟机

栈:解决程序的运行,如何执行,如何处理数据,负责处理java程序运行中的进程和程序处理逻辑,只能存储基本的数据类型和对堆中对象的引用。

堆:解决数据存储,怎么放,放在哪里

 

在java中,栈的理解:

 

栈内存私有,不能被其他线程访问,大小通过-Xss设置,空间不足时会出现Java.lang.StackOverflowError异常

堆内存所有线程共享

 

 

 

二。JVM堆内存结构

 

初始分配的内存-Xms和最大分配的内存-Xmx相等:

堆内存剩余<40%,JVM自动增大堆内存,直到最大

堆内存剩余>70%,JVM自动减少堆内存,直到最小

 

以避免每次GC后调整堆的大小,设置-Xms和-Xmx相等

 

1.堆内存划分

young:年轻代,Eden +S0 +S1,-Xmn

eden:伊甸园区,属于young,存放新生的对象

survivor space:属于young,存放区,有两个,存放每次eden区GC后存活的对象

old:老年代,存放生命周期长的存活对象

2.非堆内存

permannent:永久区,存放静态数据,代码

 

 

3.JVM内存申请

 

 

 三。垃圾回收器


1.功能

分配内存

内存不被错误回收

回收垃圾对象


2.串行,并行收集器


串行收集器:适用单/多处理器机器,只处理单线程

并行收集器:适用多处理器机器



四。JVM性能监控分析调优


1.jps

类似于Linux下的ps,列出正在运行的虚拟机进程。

 -m:输出传入main方法的参数


- l:输出main类或Jar的全限名


2.jmap

生成堆转储快照,查询finalize执行队列,Java堆,永久代的信息,属于时时数据


jmap -heap 进程ID


jmap -histo 进程ID

查看堆内存中的对象数量,大小,如果发生内存泄露,用这个方法可以快速定位


可以清楚的看到<constMethodKlass>占用率最大,调用次数最多



jmap -dump 进程ID


将内存的详细使用情况输出到文件,可以用MAT或者jhat查看

live:表示只dump堆中存活的对象

format=b:表示默认

file:文件名



jhat

分析java堆复制文件,启动一个允许堆中的对象在Web浏览器中进行分析的Web服务器



-J-Xmx:指定堆的大小,防止使用jhat命令是产生内存溢出

-port:端口号


当Server is ready 时,通过访问http://IP地址:Port来查看





jstat:

监控基于HotSpot的JVM,查看新生代,老生代,持久代的容量和使用情况,垃圾收集情况,垃圾回收次数,占用的时间



-gcutil:查看垃圾收集情况

9237:进程ID

3000:3S

每个3s打印一次,共打印6次堆内存的使用情况


jstack:

打印出给定的java进程ID,core file或远程调试服务的java栈信息。

此命令至少用三次,如果每次都指向同一个问题,才能确定问题。


jstack -l 进程ID

-l:打印关于锁的附加信息,显示进程中的所有的线程的信息。


java.lang.Thread.State表示此线程的状态,线程常见的状态如下:

死锁,Deadlock(重点关注)
等待资源,Waiting on condition(重点关注)
等待获取监视器,Waiting on monitor entry(重点关注)
阻塞,Blocked(重点关注)
执行中,Runnable
暂停,Suspended
对象等待中,Object.wait() 或 TIMED_WAITING
停止,Parked


jconsole:

图形化的性能的监控工具,监控内容:桟内存,线程,CPU,类,VM信息

linux下配置jconsole监控tomcat

第一:在tomcat的bin目录下的catalina.sh,用vi编辑,在“Execute The Requested Command”前面粘上下面的内容 

CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=210.51.165.172

-Dcom.sun.management.jmxremote 

-Dcom.sun.management.jmxremote.port=9999 

-Dcom.sun.management.jmxremote.ssl=false  

-Dcom.sun.management.jmxremote.authenticate=false"  

第二步:在/etc/sysconfig的iptables中加入下面的内容 

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 9999 -j ACCEPT 

第三步:在/etc下面的hosts将127.0.0.1改为210.51.165.172

第四部:重启tomcat



下面说说如何分析,如何使用这六个标签

概述: Displays overview information about the Java VM and monitored values.

内存: 显示内存使用信息

线程: 显示线程使用信息

类: 显示类装载信息

*VM摘要:*显示java VM信息

MBeans: 显示 MBeans.


概述:

概述很简单没啥说的,自己看看吧,不过值得一提的是对着图点击右键可以保存数据到CSV文件,以后可以使用其他工具来分析这些数据。



内存:

这个比较有价值,参看堆内存,非堆内存,内存池的状况总体内存的分配和使用情况以及不同的GC进行垃圾回收的次数和时间。可以手动进行GC查看内存变化。

在分析JAVA内存问题进行调优时候非常有用,你要学习JVM内存模型,之后会发现这里的每个值都具有意义。

 GC的算法和参数对性能有显著的影响,注意垃圾回收次数、时间、以及partial GC和full GC,调整你所使用的不同GC和以及各个GC下的参数,然后在这个视图下观察,以得到好的性能。





线程:

左下角显示所有的活动线程(如果线程过多,可以在下面的过滤栏中输入字符串过滤出你想要观察的线程)。点击某个显示会显示这个线程的名称、状态、阻塞和等待的次数、堆栈的信息。

统计图显示的是线程数目的峰值(红色)和当前活动的线程(蓝色)。

另外下面有个按钮“检测到死锁”,有时候会有用处。







类:



VM概要:




MBean:





Visual VM:
启动Visual VM并连接应用程序,启动jvisualvm.exe,远程JMX连接,配置方式和Jconsle相同。






相关文章推荐

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

https://my.oschina.net/feichexia/blog/196575 摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole...

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

原文地址:http://www.open-open.com/lib/view/open1390916852007.html JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的Visu...

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

https://my.oschina.net/feichexia/blog/196575 摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,...
  • bluetjs
  • bluetjs
  • 2016年11月03日 14:47
  • 845

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

JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解 - 实例分析 原文  http://josh-persistence.iteye.com/blog/2...

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

JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具,本博客希望能起抛砖引玉之用,让...

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

jps 查看所有的jvm进程,包括进程ID,进程启动的路径等等。 我自己也用PS,即:ps -ef | grep java jstack 观察jvm中当前所有线程的运行情况和线程当前状态。 ...

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

转自:  https://my.oschina.net/feichexia/blog/196575 摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jCo...

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

摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望...

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

JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖...
  • rock912
  • rock912
  • 2014年02月12日 09:11
  • 33949

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

JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具,本博客希望能起抛砖引玉之用,让...
  • wanglha
  • wanglha
  • 2015年06月26日 06:43
  • 404
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JVM性能监控工具使用
举报原因:
原因补充:

(最多只允许输入30个字)