jvm问题排查和调优:
jps主要用来输出JVM中运行的进程状态信息。
jstat命令可以用于持续观察虚拟机内存和各个分区的使用率以及GC的统计数据
jmap可以用来查看队内存的使用详情。
jstack 可以用来查看Java进程内的线程堆栈信息。jstack是个非常好用的工具,结合应用日志可以迅速定位到问题线程。
Java性能分析工具:
Jdk还会自带JMC工具。可以分析本地应用以及连接远程ip使用。提供了实时分析线程、内存,CPU、GC等信息的可视化界面。
JVM内存调优:
对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。过多的GC和Full GC会占用很多的系统资源(主要是CPU),影响系统的吞吐量。使用JDK提供的内存查看工具,比如JConsole和Java VisualVM。
- 监控GC的状态,使用各种JVM工具,查看当前日志,并且分析当前堆内存快照和gc日志,根据实际的情况看是否需要优化。
- 通过JMX的MBean或者Java的jmap生成当前的Heap信息,并使⽤Visual VM或者 Eclipse⾃带的Mat分析dump⽂件
3)如果参数设置合理,没有超时⽇志,GC频率GC耗时都不⾼则没有GC优化的必要,如果GC时间超过1秒或者频繁GC,则必须优化
4)调整GC类型和内存分配,使⽤1台和多台机器进⾏测试,进⾏性能的对⽐。再做修改,最后通过不断的试验和试错,分析并找到最合适的参数
调优命令:
Sun JDK监控和故障处理命令有jps jstat jmap jhat jstack jinfo
• jps,JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。
• jstat,JVM statistics Monitoring是⽤于监视虚拟机运⾏时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运⾏数据。
• jmap,JVM Memory Map命令⽤于⽣成heap dump⽂件
• jhat,JVM Heap Analysis Tool命令是与jmap搭配使⽤,⽤来分析jmap⽣成的dump,jhat内置了⼀个微型的HTTP/HTML服务器,⽣成dump的分析结果后,可以在浏览器中查看
• jstack,⽤于⽣成java虚拟机当前时刻的线程快照。
• jinfo,JVM Configuration info 这个命令作⽤是实时查看和调整虚拟机运⾏参数。
调优⼯具:
常⽤调优⼯具分为两类, jdk⾃带监控⼯具:jconsole 和 jvisualvm,第三⽅有:
MAT(Memory Analyzer Tool)、GChisto。
• jconsole,Java Monitoring and Management Console是从java5开始,在JDK中⾃带的java监控和管理控制台,⽤于对JVM中内存,线程和类等的监控