美文网首页
jvm 调试

jvm 调试

作者: dongweima | 来源:发表于2017-10-02 20:41 被阅读0次

    javac

    javap

    http://www.hollischuang.com/archives/1107

    javap可以用于反编译和查看编译器编译后的字节码。平时一般用javap -c比较多,该命令用于列出每个方法所执行的JVM指令,并显示每个方法的字节码的实际作用。可以通过字节码和源代码的对比,深入分析java的编译原理,了解和解决各种Java原理级别的问题。

    -help 帮助
    -l 输出行和变量的表
    -public 只输出public方法和域
    -protected 只输出public和protected类和成员
    -package 只输出包,public和protected类和成员,这是默认的
    -p -private 输出所有类和成员
    -s 输出内部类型签名
    -c 输出分解后的代码,例如,类中每一个方法内,包含java字节码的指令,
    -verbose 输出栈大小,方法参数的个数
    -constants 输出静态final常量
    

    Jps 显示当前系统的java进程情况,及其id号

    jps位于jdk的bin目录下,其作用是显示当前系统的java进程情况,及其id号。 jps相当于Solaris进程工具ps。不象”pgrep java”或”ps -ef grep java”,jps并不使用应用程序名来查找JVM实例。因此,它查找所有的Java应用程序,包括即使没有使用java执行体的那种(例如,定制的启动 器)。另外,jps仅查找当前用户的Java进程,而不是当前系统中的所有进程。

    jstack 用于生成java虚拟机当前时刻的线程快照 http://www.hollischuang.com/archives/110

    hollis@hos:~$ jstack -help
    Usage:
        jstack [-l] <pid>
            (to connect to running process)
        jstack -F [-m] [-l] <pid>
            (to connect to a hung process)
        jstack [-m] [-l] <executable> <core>
            (to connect to a core file)
        jstack [-m] [-l] [server_id@]<remote server IP or hostname>
            (to connect to a remote debug server)
    
    Options:
        -F  to force a thread dump. Use when jstack <pid> does not respond (process is hung)
        -m  to print both java and native frames (mixed mode)
        -l  long listing. Prints additional information about locks
        -h or -help to print this help message
    
    -F当’jstack [-l] pid’没有相应的时候强制打印栈信息 
    -l长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表. -m打印java和native c/c++框架的所有栈信息. 
    -h | -help打印帮助信息 pid 需要被打印配置信息的java进程id,可以用jps查询.
    

    jstack是java虚拟机自带的一种堆栈跟踪工具。
    jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

    So,jstack命令主要用来查看Java线程的调用堆栈的,可以用来分析线程问题(如死锁)。

    相关文章

      网友评论

          本文标题: jvm 调试

          本文链接:https://www.haomeiwen.com/subject/bmityxtx.html