...
常用的工具有:jvisualvm, threadanalyzer。
常用命令行
1.JMAP
Jmap命令用于生成堆转储快照,有时候也成为heapdump或者dump文件。
...
jmap -dump:live,format=b,file=进程号.bin 进程号 ,这个命令导出的文件大小和java进程占用的内存大小一样大,其中不知道进程号的,可以使用jps查看对应的进程号,以上例子都可以对应上图的命令行使用说明。
2.jstack
用于打印堆栈信息, 一般应用于服务器繁忙或是无响应时,我们需要看一下线程的状态和详细信息。下图含使用说明及一个使用例子。
例子:jstack 进程号 >进程号.txt
3.javah
直接命令行输入javah,会有以下使用帮助信息:
...
可以看到 C:\test 生成了test_Test.h 。
...
附:JNI原理
4.jps
用来查看基于HotSpot的JVM里面中,所有具有访问权限的Java进程的具体状态, 包括进程ID,进程启动的路径及启动参数等等,与unix上的ps类似和windows中的tasklist类似,只不过jps是用来显示java进程,可以把jps理解为ps的一个子集。
...
例子:cmd中直接输入jps 可以查看所有java进程,或者jps -help获取使用帮助
5.jstat
Jstat用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计,使用jstat我们可以对指定的JVM做如下监控:
...
jstat -gcutil 进程号 获取某个维度的统计信息
6.jinfo
可以查看vm参数或者修改vm参数,直接输入jinfo可以看到使用帮助信息。
例如
C:\Documents and Settings\Administrator>jinfo -flag MaxPermSize 3176-XX:MaxPermSize=67108864
C:\Documents and Settings\Administrator>jinfo -flag CompileThreshold 3176
-XX:CompileThreshold=1500
C:\Documents and Settings\Administrator>jinfo -flag ThreadStackSize 3176-XX:ThreadStackSize=0
附:jvm参数列表
原文地址:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html。
...
-XX:+PrintGC |
|
| 输出形式: |
-XX:+PrintGCDetails |
|
| 输出形式:[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs][GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs] |
-XX:+PrintGCTimeStamps |
|
|
|
-XX:+PrintGC:PrintGCTimeStamps |
|
| 可与-XX:+PrintGC XX:+PrintGCDetails混合使用输出形式:11.851: [GC 98328K>93620K(130112K), 0.0082960 secs] |
-XX:+PrintGCApplicationStoppedTime | 打印垃圾回收期间程序暂停的时间.可与上面混合使用 |
| 输出形式:Total time for which application threads were stopped: 0.0468229 seconds |
-XX:+PrintGCApplicationConcurrentTime | 打印每次垃圾回收前,程序未中断的执行时间.可与上面混合使用 |
| 输出形式:Application time: 0.5291524 seconds |
-XX:+PrintHeapAtGC | 打印GC前后的详细堆栈信息 |
|
|
-Xloggc:filename | 把相关日志信息记录到文件以便分析.与上面几个配合使用 |
|
|
-XX:+PrintClassHistogram | garbage collects before printing the histogram. |
|
|
-XX:+PrintTLAB | 查看TLAB空间的使用情况 |
|
|
XX:+PrintTenuringDistribution | 查看每次minor GC后新的存活周期的阈值 |
| Desired survivor size 1048576 bytes, new threshold 7 (max 15)new threshold 7即标识新的存活周期的阈值为7。 |
...
常用工具
JVisualVM
JVisualVM是集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览Heap Dump、Thread Dump、内存对象实例情况、GC执行情况、CPU消耗以及类的装载情况。详细请见:JVisualVM。
...