在JDK的安用装目录bin下,有一些有非常实用的小工具,可用于分析JVM初始配置、内存溢出、内存泄漏、硬件资源异常等问题

我们在jdk目录下会看到bin目录,一般这些工具就放在这儿。

java visualvm分析 dump 内存泄露 jvm内存泄露查看工具_java

1、jps

大家都应该用过jps这个命令吧,通过jps工具我们可以知道当前正在运行的Java进程,以及这些进程初始化的参数配置。

他可以有很多参数

-q:仅输出VM标识符,不包括classname,jar name,arguments in main method

-m:输出main method的参数

-l:输出完全的包名,应用主类名,jar的完全路径名

-v:输出jvm参数

-V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件

-Joption:传递参数到vm,例如:-J-Xms512m

java visualvm分析 dump 内存泄露 jvm内存泄露查看工具_垃圾回收_02

2、jstart

1、使用jstat可以看到GC的统计信息。命令如下:jstat -gcutil
也可以使用:jstat -gc

java visualvm分析 dump 内存泄露 jvm内存泄露查看工具_jvm_03

java visualvm分析 dump 内存泄露 jvm内存泄露查看工具_java_04

参数表示有:

S0C:第一个幸存区的大小

S1C:第二个幸存区的大小

S0U:第一个幸存区的使用大小

S1U:第二个幸存区的使用大小

EC:伊甸园区的大小

EU:伊甸园区的使用大小

OC:老年代大小

OU:老年代使用大小

MC:方法区大小

MU:方法区使用大小

CCSC:压缩类空间大小

CCSU:压缩类空间使用大小

YGC:年轻代垃圾回收次数

YGCT:年轻代垃圾回收消耗时间

FGC:老年代垃圾回收次数

FGCT:老年代垃圾回收消耗时间

GCT:垃圾回收消耗总时间2、类加载数量统计

命令如下:jstat -class

java visualvm分析 dump 内存泄露 jvm内存泄露查看工具_老年代_05

2、编译数量统计

命令如下:jstat -compiler

java visualvm分析 dump 内存泄露 jvm内存泄露查看工具_java_06

3、jmap

jmap客户查看当前进程堆内存的初始化时的大小,分配比率。命令如下:./jmap -heap

java visualvm分析 dump 内存泄露 jvm内存泄露查看工具_老年代_07

图形化虚拟机监控工具JConsole

Console是JDK自带的图形化性能监控工具,通过它可以监控堆信息、永久区信息、类加载信息、线程信息、JVM信息等。

连接JAVA程序

JConsole在JAVA_HOME/bin目录下,启动后,会出现新建连接对话框,可以连接本地应用程序,也可以连接远程程序。针对远程程序,需要远程程序在启动时,增加如下参数:

java visualvm分析 dump 内存泄露 jvm内存泄露查看工具_jvm_08


java visualvm分析 dump 内存泄露 jvm内存泄露查看工具_老年代_09

写代码不能为了完成任务而完成任务的。