一、理解JVM虚拟机
二、监控和故障处理工具
1、
进程状态工具 jps
-l 显示主类的全类名 ; -v 进程启动时候的参数 ; -m 传递给main函数的参数
2.
jstat 监视虚拟机各种运行状态,以文本的形式显示 类装载,内存,垃圾收集,JIT编译情况等信息
常用参数 gcutil 已使用空间占用总空间的百分比,gcnew 监视新生代的状况,gcold 监视老年的的状况
3.
jmap 内存镜像工具,用于生成堆转储快照
-histo : 显示堆中对象统计信息,包括类,实例数量,合计数量
-heap :Java 堆详细信息,使用哪种回收器、参数配置、分带状况等 (只有在 Linux 平台下有效)
jmap -dump:format=b,file=test.bin 7152 生成虚拟机堆转储快照文件
jhat C:\Users\wb-gaojiangtao\test.bin 用来分析快照工具
4.
jstack Java堆栈跟踪工具 ,生成虚拟机当前时刻的线程快照; 统计出当前时刻每一个线程正在执行的方法堆栈集合,由此可以定位出 线程长时间停顿的原因,如线程间死锁、死循环、请求外部资源的长时间等待 ;
Thread 类的 getAllStackTraces() 可以获取虚拟机中所有线程的 StatckTraceElement 对象,在实际项目中可以通过该api完成对服务器虚拟机线程的监控。
jstack -l pid
5.
jdk 可视化工具 jconsole
6
. VisualVM 虚拟机监控工具
VisualVM是一个集成多个JDK命令行工具的可视化工具。可以作为Java应用程序性能分析和运行监控的工具。开发人员可以利用它来监控、分析线程信息,浏览内存堆数据。系统管理员可以利用它来监测、控制Java应用程序横跨整个网络的情况。Java应用程序使用人员可以利用它来创建包含所有必要信息的Bug 报告。