zoukankan      html  css  js  c++  java
  • java应用故障排查

    对于在线运行的程序来说
    常常会因为流量过高 程序bug 依赖故障 线程死锁 配置错误等一些列原因导致系统不可用或者部分不可用
    如果能善加利用JDK提供的工具,往往会方便问题的解决
     
    JPS
    检查当前所有java进程pid
     
    JSTAT
    分析JVM内存状态 检查各代大小

    Jstat用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计,使用jstat我们可以对指定的JVM做如下监控:

    - 类的加载及卸载情况

    - 查看新生代、老生代及持久代的容量及使用情况

    - 查看新生代、老生代及持久代的垃圾收集情况,包括垃圾回收的次数及垃圾回收所占用的时间

    - 查看新生代中Eden区及Survior区中容量及分配情况等

    jstat工具特别强大,它有众多的可选项,通过提供多种不同的监控维度,使我们可以从不同的维度来了解到当前JVM堆的使用情况。详细查看堆内各个部分的使用量,使用的时候必须加上待统计的Java进程号,可选的不同维度参数以及可选的统计频率参数。

     

    JSTACK
    线程快照 检查线程死锁等
    jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息
    如果现在运行的java程序呈现hung的状态,jstack是非常有用的
     
    JMAP
    堆的信息 检查内存泄露 打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。

    可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。使用方法 jmap -histo pid。如果连用SHELL jmap -histo pid>a.log可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。jmap -dump:format=b,file=outfile 3024可以将3024进程的内存heap输出出来到outfile文件里,再配合MAT(内存分析工具(Memory Analysis Tool),使用参见:http://blog.csdn.net/fenglibing/archive/2011/04/02/6298326.aspx)或与jhat (Java Heap Analysis Tool)一起使用,能够以图像的形式直观的展示当前内存是否有问题。

     

     

  • 相关阅读:
    期待Eclipse3.4
    Winforms中使用系统托盘图标
    Eclipse下的Struts2开发插件
    彩色 夺冠
    网络&系统
    A Famous Music Composer
    Quick Brown Fox
    解密QQ号——队列
    谁先倒
    bootstrap Table从零开始
  • 原文地址:https://www.cnblogs.com/lnas01/p/5261926.html
Copyright © 2011-2022 走看看