简述:
运维监控会用到JDK的小工具
说明:
1. jps
用来查看当前运行的Java进程
我在eclipse中起了一个web 应用
或者用jps -l 可以查看的更清楚一点
jps -v
看到10376之后用taskkill指令关闭
2. jstat
虚拟机统计信息监视工具
先用jps查看当前启动的应用
于是使用
[plain] view plaincopy
- cd C:\Users\Administrator\Desktop\jvm monitor
gcutil 监视Java堆状况,主要关注已使用空间占总空间的百分比,包括Eden区,2个survivor区,老年代、永久代,已用空间、GC时间合计
[plain] view plaincopy
- jstat -gcutil 8832 >>jstat_result.txt
查询结果表明
在新生代Eden区使用了37.15%的空间
S0, S1 , Survivor0, Survivor1
O : Old
P: Permanent
YGC: Young GC 程序运行以来总共发生16次GC, 共耗时YGCT 13.247秒
FGC: Full GC 2次 , 耗时GCT 1.1.02秒
GC总耗时: 14.349秒
3. jinfo
实时地查看和调整虚拟机各项参数
通过命令
[plain] view plaincopy
- java -XX:+PrintFlagsFinal > printFlagsFinal_result.txt
获取当前的jvm信息,
从中可以看到
下面是调用system.getProperties() 的命令
[plain] view plaincopy
- jinfo -sysprops 12408 > jinfo_result.txt
jinfo查看参数
试着修改 CMSInitiatingOccupancyFraction
(CMS, 一种以获取最短回收停顿时间为目标的收集器, 关于JVM内存管理 参看官方文档
http://www.oracle.com/technetwork/java/javase/memorymanagement-whitepaper-150215.pdf)
通过jinfo查询得到该参数
附(记录几个常用的参数):
-Xms 初始堆大小 默认物理内存的1/64(<1GB)
-Xmx 最大堆大小
-Xmn 年轻代大小 (Eden和两个Survivor区的合计大小)
-Xss 每个线程的堆栈大小
4. jmap
Java 内存映像工具
输入指令
[plain] view plaincopy
- jmap -dump:format=b,file=jmap_result.bin 12408
于是会生成jmap_result.txt文件
需要在eclipse中安装Memory Analyzer插件
http://download.eclipse.org/mat/1.4/update-site/
进入Memory Analysis perspective
而后
File -> Open Heap Dump
选内存泄露模式,于是生成一张 饼状图
(这里是引入,之后具体的检测会有新的文章做阐述)
5. jconsole
进入jdk目录,
运行
出现界面,