JVM学习笔记--虚拟机性能监控与故障处理工具

来源:互联网 发布:编程软件下载 编辑:程序博客网 时间:2024/05/21 17:59
1. jps(JVM Process Status Tool)
功能:列出正在运行的虚拟机进程、并显示虚拟机执行主类名称(Main Class,main()函数所在的类)、这些进程的本地虚拟机唯一ID(Local Virtual Machine Identifier,LVMID,对本地虚拟机进程来说,LVMID=PID(Process Identifier,操作系统进程ID))
命令格式:jps [参数] 
参数:

2. jstat(JVM Statistics Monitoring Tool)
功能:类装载内存垃圾收集JIT编译
命令格式:jstat [参数] vmid [查询间隔] [查询次数]
参数:


3. jinfo(Configuration Info for Java):
功能:查看和调整虚拟机各项参数(-flag [+|-]name或-flag name=value)
命令格式:jinfo [参数] pid
参数:-v 虚拟机启动时显式指定的参数列表;-flag XXX,虚拟机参数XXX的值;-sysprops,System.getProperties()

4. jmap(Memory Map for Java):
功能:生成堆转储快照(heapdump)、查询finalize执行队列Java堆和永久代的详细信息
命令格式:jmap [参数] vmid
参数:

5. jhat(JVM Heap Analusis Tool):
功能:分析jmap生成的堆转储快照
命令格式:jhat [heapdump文件名]
参数:

6. jstack(Stack Trace for Java):
功能:生成虚拟机当前时刻线程快照(threaddump),即当前虚拟机内每一条线程正在执行的方法堆栈的集合
命令格式:jstack [参数] vmid
参数:

线程长时间停顿主要原因:
  • 等待外部资源(数据库连接、网络资源、设备资源等)
  • 死循环
  • 锁等待(活锁和死锁)










高性能硬件上部署程序,主要2种方式:
  • 通过64位JDK来使用大内存
可以给Java虚拟机分配超大堆的前提是有把握把应用程序的Full GC频率控制的足够低,关键是看应用中绝大多数对象能否符合"朝生夕灭"的原则
  • 使用若干个32位虚拟机建立逻辑集群来利用硬件资源
在一台物理机器上启动多个应用服务器进程,每个进程分配不同端口,然后在前端搭建一个负载均衡器,以反向代理的方式来分配访问请求

0 0
原创粉丝点击