首页 > 代码库 > JDK 自带工具试用(一)

JDK 自带工具试用(一)

简述:

运维监控会用到JDK的小工具

说明:

1. jps 

用来查看当前运行的Java进程

我在eclipse中起了一个web 应用

 

或者用jps -l 可以查看的更清楚一点

 

jps -v

 

看到10376之后用taskkill指令关闭

 

 

2. jstat 

虚拟机统计信息监视工具

先用jps查看当前启动的应用

 

于是使用

 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. cd C:\Users\Administrator\Desktop\jvm monitor  

 

gcutil 监视Java堆状况,主要关注已使用空间占总空间的百分比,包括Eden区,2个survivor区,老年代、永久代,已用空间、GC时间合计

 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. 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在CODE上查看代码片派生到我的代码片
 
  1. java -XX:+PrintFlagsFinal  > printFlagsFinal_result.txt  

获取当前的jvm信息

 

从中可以看到

下面是调用system.getProperties() 的命令

 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. 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在CODE上查看代码片派生到我的代码片
 
  1. 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目录,

运行  

 

出现界面,

JDK 自带工具试用(一)