• 作业7:常用java命令(一)


    一、Javac(java compiler)

    1、功能:javac是一种前端编译器,负责将源代码转换为字节码。

    2、例子

    (1)代码

    public class TestJavac {
        static class Person{
            private String name;
            private Integer age;
            public Person() {
            }
    
            public Person(String name, Integer age) {
                this.name = name;
                this.age = age;
            }
    
            public String getName() {
                return name;
            }
    
            public void setName(String name) {
                this.name = name;
            }
    
            public Integer getAge() {
                return age;
            }
    
            public void setAge(Integer age) {
                this.age = age;
            }
        }
    
        public static void main(String[] args) {
            System.out.println("Test Javac");
            Person javac = new Person("Javac", 14);
            System.out.println(javac.getName());
            System.out.println(javac.getAge());
        }
    }
    

    (2)执行javac命令

    C:UsersHBKJDesktopTestJavac>javac TestJavac.java
    C:UsersHBKJDesktopTestJavac>dir
        C:UsersHBKJDesktopTestJavac 的目录
        2018/07/21  12:30    <DIR>          .
        2018/07/21  12:30    <DIR>          ..
        2018/07/21  12:26               774 TestJavac$Person.class // 内部类
        2018/07/21  12:26               783 TestJavac.class
        2018/07/21  12:26               842 TestJavac.java
                       3 个文件          2,399 字节
                       2 个目录 13,931,593,728 可用字节
    

    二、javap

    1、功能:javap是Java字节码文件分解器,能够反编译javac生成的字节码;也能够查看java编译器生成的字节码,用于分解class文件。

    2、例子

    (1)命令:javap -p

    C:UsersHBKJDesktopTestJavac>javap -p TestJavac.class
    Compiled from "TestJavac.java"
    public class TestJavac {
      public TestJavac();
      public static void main(java.lang.String[]);
    }
    

    (2)命令:javap -c

    C:UsersHBKJDesktopTestJavac>javap -c TestJavac.class
    Compiled from "TestJavac.java"
    public class TestJavac {
      public TestJavac(); // 构造器
        Code:
           0: aload_0
           1: invokespecial #1                  // Method java/lang/Object."<init>":()V
           4: return
    
      public static void main(java.lang.String[]);
        Code:
           0: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
           3: ldc           #3                  // String Test Javac
           5: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
           8: new           #5                  // class TestJavac$Person
          11: dup
          12: ldc           #6                  // String Javac
          14: bipush        14
          16: invokestatic  #7                  // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
          19: invokespecial #8                  // Method TestJavac$Person."<init>":(Ljava/lang/String;Ljava/lang/Integer;)V
          22: astore_1
          23: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
          26: aload_1
          27: invokevirtual #9                  // Method TestJavac$Person.getName:()Ljava/lang/String;
          30: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
          33: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
          36: aload_1
          37: invokevirtual #10                 // Method TestJavac$Person.getAge:()Ljava/lang/Integer;
          40: invokevirtual #11                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
          43: return
    }
    

    三、jps(JVM Process Status Tool)

    1、功能:列出正在运行的虚拟机进程,并显示虚拟机执行主类的名称和这些进程的唯一ID。

    2、主要选项

    选项 作用
    -q 省略主类名称(java8默认参数)
    -l 输出主类名称(java10默认参数)
    -v 输出虚拟机进程启动时JVM参数

    3、例子(Idea IDE进程)

    PS C:Windowssystem32> jps
    9024 Jps
    9796 Launcher
    9860
    
    PS C:Windowssystem32> jps -l
    9796 org.jetbrains.jps.cmdline.Launcher
    9860
    8540 jdk.jcmd/sun.tools.jps.Jps
    
    PS C:Windowssystem32> jps -v
    8404 Jps -Dapplication.home=E:developsoftwarejava10jdk -Xms8m -Djdk.module.main=jdk.jcmd
    9796 Launcher -Xmx700m -Djava.awt.headless=true -Djdt.compiler.useSingleThread=true -Dpreload.project.path=E:/develop/project/AlgorithmsLearning -Dpreload.config.path=C:/Users/HBKJ/.IntelliJIdea2018.1/config/options -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Djava.net.preferIPv4Stack=true -Dio.netty.initialSeedUniquifier=7903075717686063478 -Dfile.encoding=GBK -Duser.language=zh -Duser.country=CN -Didea.paths.selector=IntelliJIdea2018.1 -Didea.home.path=D:softwareIntelliJ IDEA 2018.1.1 -Didea.config.path=C:UsersHBKJ.IntelliJIdea2018.1config -Didea.plugins.path=C:UsersHBKJ.IntelliJIdea2018.1configplugins -Djps.log.dir=C:/Users/HBKJ/.IntelliJIdea2018.1/system/log/build-log -Djps.fallback.jdk.home=D:/software/IntelliJ IDEA 2018.1.1/jre64 -Djps.fallback.jdk.version=1.8.0_152-release -Dio.netty.noUnsafe=true -Djava.io.tmpdir=C:/Users/HBKJ/.IntelliJIdea2018.1/system/compile-server/algorithmslearning_af8be974/_temp_ -Djps.backward.ref.index.builder=true -Dkotlin.incremental.compilation=true -Dkotlin.
    9860  -Xms128m -Xmx750m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -javaagent:D:/software/IntelliJ IDEA 2018.1.1/bin/JetbrainsCrack-2.7-release-str.jar -Djb.vmOptionsFile=D:softwareIntelliJ IDEA 2018.1.1inidea64.exe.vmoptions -Didea.jre.check=true -Dide.native.launcher=true -Didea.paths.selector=IntelliJIdea2018.1 -XX:ErrorFile=C:UsersHBKJjava_error_in_idea_%p.log -XX:HeapDumpPath=C:UsersHBKJjava_error_in_idea.hprof
    

    四、jstack(Stack Trace for java)

    1、功能:生成JVM当前时间的线程快照(threaddump或javacore文件)。

    • 线程快照:当前JVM内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是为了定位线程长时间停顿的原因。
    • 线程长时间停顿情况:死锁、死循环、请求外部资源等

    2、主要选项

    选项 作用
    -l 同时显示锁的附加信息

    3、例子(Idea IDE进程)

    PS C:UsersHBKJ> jstack 9796
    2018-07-14 14:33:38
    Full thread dump Java HotSpot(TM) 64-Bit Server VM (10.0.1+10 mixed mode):
    
    Threads class SMR info:
    _java_thread_list=0x000001a3b0b585f0, length=14, elements={
    0x000001a3aea36000, 0x000001a3aea37000, 0x000001a3aea3d800, 0x000001a3aea3e000,
    0x000001a3af2c8800, 0x000001a3af2d1000, 0x000001a3af2d4000, 0x000001a3af2d8000,
    0x000001a3af2e8800, 0x000001a3af47f800, 0x000001a3af484000, 0x000001a3afb2f000,
    0x000001a38ff10000, 0x000001a3b0cb0800
    }
    
    "Reference Handler" #2 daemon prio=10 os_prio=2 tid=0x000001a3aea36000 nid=0x1e44 waiting on condition  [0x0000008ea28ff000]
       java.lang.Thread.State: RUNNABLE
            at java.lang.ref.Reference.waitForReferencePendingList(java.base@10.0.1/Native Method)
            at java.lang.ref.Reference.processPendingReferences(java.base@10.0.1/Reference.java:174)
            at java.lang.ref.Reference.access$000(java.base@10.0.1/Reference.java:44)
            at java.lang.ref.Reference$ReferenceHandler.run(java.base@10.0.1/Reference.java:138)
    
    "Finalizer" #3 daemon prio=8 os_prio=1 tid=0x000001a3aea37000 nid=0x1308 in Object.wait()  [0x0000008ea29fe000]
       java.lang.Thread.State: WAITING (on object monitor)
            at java.lang.Object.wait(java.base@10.0.1/Native Method)
            - waiting on <0x00000000d4e5e9c0> (a java.lang.ref.ReferenceQueue$Lock)
            at java.lang.ref.ReferenceQueue.remove(java.base@10.0.1/ReferenceQueue.java:151)
            - waiting to re-lock in wait() <0x00000000d4e5e9c0> (a java.lang.ref.ReferenceQueue$Lock)
            at java.lang.ref.ReferenceQueue.remove(java.base@10.0.1/ReferenceQueue.java:172)
            at java.lang.ref.Finalizer$FinalizerThread.run(java.base@10.0.1/Finalizer.java:216)
    
    "Signal Dispatcher" #4 daemon prio=9 os_prio=2 tid=0x000001a3aea3d800 nid=0x196c runnable  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
    "Attach Listener" #5 daemon prio=5 os_prio=2 tid=0x000001a3aea3e000 nid=0x3210 waiting on condition  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
    "C2 CompilerThread0" #6 daemon prio=9 os_prio=2 tid=0x000001a3af2c8800 nid=0xe08 waiting on condition  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
       No compile task
    
    "C2 CompilerThread1" #7 daemon prio=9 os_prio=2 tid=0x000001a3af2d1000 nid=0x2a94 waiting on condition  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
       No compile task
    
    "C2 CompilerThread2" #8 daemon prio=9 os_prio=2 tid=0x000001a3af2d4000 nid=0x724 waiting on condition  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
       No compile task
    
    "C1 CompilerThread3" #9 daemon prio=9 os_prio=2 tid=0x000001a3af2d8000 nid=0x20 waiting on condition  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
       No compile task
    
    "Sweeper thread" #10 daemon prio=9 os_prio=2 tid=0x000001a3af2e8800 nid=0x2810 runnable  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
    "Service Thread" #11 daemon prio=9 os_prio=0 tid=0x000001a3af47f800 nid=0x23a8 runnable  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
    "Common-Cleaner" #12 daemon prio=8 os_prio=1 tid=0x000001a3af484000 nid=0x29b0 in Object.wait()  [0x0000008ea33ff000]
       java.lang.Thread.State: TIMED_WAITING (on object monitor)
            at java.lang.Object.wait(java.base@10.0.1/Native Method)
            - waiting on <0x00000000d4e213d8> (a java.lang.ref.ReferenceQueue$Lock)
            at java.lang.ref.ReferenceQueue.remove(java.base@10.0.1/ReferenceQueue.java:151)
            - waiting to re-lock in wait() <0x00000000d4e213d8> (a java.lang.ref.ReferenceQueue$Lock)
            at jdk.internal.ref.CleanerImpl.run(java.base@10.0.1/CleanerImpl.java:148)
            at java.lang.Thread.run(java.base@10.0.1/Thread.java:844)
            at jdk.internal.misc.InnocuousThread.run(java.base@10.0.1/InnocuousThread.java:134)
    
    "JPS event loop" #13 prio=5 os_prio=0 tid=0x000001a3afb2f000 nid=0x1674 runnable  [0x0000008ea45fe000]
       java.lang.Thread.State: RUNNABLE
            at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(java.base@10.0.1/Native Method)
            at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(java.base@10.0.1/WindowsSelectorImpl.java:296)
            at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(java.base@10.0.1/WindowsSelectorImpl.java:278)
            at sun.nio.ch.WindowsSelectorImpl.doSelect(java.base@10.0.1/WindowsSelectorImpl.java:159)
            at sun.nio.ch.SelectorImpl.lockAndDoSelect(java.base@10.0.1/SelectorImpl.java:89)
            - locked <0x00000000d4e620c8> (a io.netty.channel.nio.SelectedSelectionKeySet)
            - locked <0x00000000d4e620e0> (a java.util.Collections$UnmodifiableSet)
            - locked <0x00000000d4e62048> (a sun.nio.ch.WindowsSelectorImpl)
            at sun.nio.ch.SelectorImpl.select(java.base@10.0.1/SelectorImpl.java:100)
            at io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
            at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:752)
            at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:408)
            at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
            at java.lang.Thread.run(java.base@10.0.1/Thread.java:844)
    
    "DestroyJavaVM" #15 prio=5 os_prio=0 tid=0x000001a38ff10000 nid=0x2278 waiting on condition  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
    "NettythreadDeathWatcher-2-1" #17 daemon prio=1 os_prio=-2 tid=0x000001a3b0cb0800 nid=0x2740 waiting on condition  [0x0000008ea48fe000]
       java.lang.Thread.State: TIMED_WAITING (sleeping)
            at java.lang.Thread.sleep(java.base@10.0.1/Native Method)
            at io.netty.util.ThreadDeathWatcher$Watcher.run(ThreadDeathWatcher.java:152)
            at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
            at java.lang.Thread.run(java.base@10.0.1/Thread.java:844)
    
    "VM Thread" os_prio=2 tid=0x000001a3aea31800 nid=0x1de0 runnable
    
    "GC Thread#0" os_prio=2 tid=0x000001a38ff2c000 nid=0x9c8 runnable
    
    "GC Thread#1" os_prio=2 tid=0x000001a38ff2d800 nid=0x410 runnable
    
    "GC Thread#2" os_prio=2 tid=0x000001a38ff30000 nid=0x28e4 runnable
    
    "GC Thread#3" os_prio=2 tid=0x000001a38ff33800 nid=0x22a0 runnable
    
    "GC Thread#4" os_prio=2 tid=0x000001a38ff35800 nid=0x16e4 runnable
    
    "GC Thread#5" os_prio=2 tid=0x000001a38ff3a800 nid=0xfd8 runnable
    
    "GC Thread#6" os_prio=2 tid=0x000001a38ff3e000 nid=0x21a0 runnable
    
    "GC Thread#7" os_prio=2 tid=0x000001a38ff3f000 nid=0x1b88 runnable
    
    "G1 Main Marker" os_prio=2 tid=0x000001a38ff7e800 nid=0x2cd4 runnable
    
    "G1 Conc#0" os_prio=2 tid=0x000001a38ff81800 nid=0xe1c runnable
    
    "G1 Conc#1" os_prio=2 tid=0x000001a38ff82800 nid=0x91c runnable
    
    "G1 Refine#0" os_prio=2 tid=0x000001a38ffde800 nid=0x3350 runnable
    
    "G1 Refine#1" os_prio=2 tid=0x000001a3ae8ce000 nid=0x2d74 runnable
    
    "G1 Refine#2" os_prio=2 tid=0x000001a3ae8d0000 nid=0x59c runnable
    
    "G1 Refine#3" os_prio=2 tid=0x000001a3ae8d0800 nid=0x2f50 runnable
    
    "G1 Refine#4" os_prio=2 tid=0x000001a3ae8d5800 nid=0x2750 runnable
    
    "G1 Refine#5" os_prio=2 tid=0x000001a3ae8d8800 nid=0xa18 runnable
    
    "G1 Refine#6" os_prio=2 tid=0x000001a3ae8db000 nid=0x1c04 runnable
    
    "G1 Refine#7" os_prio=2 tid=0x000001a3ae8ec000 nid=0x3220 runnable
    
    "G1 Young RemSet Sampling" os_prio=2 tid=0x000001a3ae8ec800 nid=0x23cc runnable
    "VM Periodic Task Thread" os_prio=2 tid=0x000001a3af485000 nid=0x1540 waiting on condition
    
    JNI global references: 14
    
    #################################################
    # 使用-l选项将输出Locked ownable synchronizers 内容
    #################################################
    PS C:UsersHBKJ> jstack -l  9796
    2018-07-14 14:41:41
    Full thread dump Java HotSpot(TM) 64-Bit Server VM (10.0.1+10 mixed mode):
    
    Threads class SMR info:
    _java_thread_list=0x000001a3b0b585f0, length=14, elements={
    0x000001a3aea36000, 0x000001a3aea37000, 0x000001a3aea3d800, 0x000001a3aea3e000,
    0x000001a3af2c8800, 0x000001a3af2d1000, 0x000001a3af2d4000, 0x000001a3af2d8000,
    0x000001a3af2e8800, 0x000001a3af47f800, 0x000001a3af484000, 0x000001a3afb2f000,
    0x000001a38ff10000, 0x000001a3b0cb0800
    }
    
    "Reference Handler" #2 daemon prio=10 os_prio=2 tid=0x000001a3aea36000 nid=0x1e44 waiting on condition  [0x0000008ea28ff000]
       java.lang.Thread.State: RUNNABLE
            at java.lang.ref.Reference.waitForReferencePendingList(java.base@10.0.1/Native Method)
            at java.lang.ref.Reference.processPendingReferences(java.base@10.0.1/Reference.java:174)
            at java.lang.ref.Reference.access$000(java.base@10.0.1/Reference.java:44)
            at java.lang.ref.Reference$ReferenceHandler.run(java.base@10.0.1/Reference.java:138)
    
       Locked ownable synchronizers:
            - None
    
    "Finalizer" #3 daemon prio=8 os_prio=1 tid=0x000001a3aea37000 nid=0x1308 in Object.wait()  [0x0000008ea29fe000]
       java.lang.Thread.State: WAITING (on object monitor)
            at java.lang.Object.wait(java.base@10.0.1/Native Method)
            - waiting on <0x00000000d4e5e9c0> (a java.lang.ref.ReferenceQueue$Lock)
            at java.lang.ref.ReferenceQueue.remove(java.base@10.0.1/ReferenceQueue.java:151)
            - waiting to re-lock in wait() <0x00000000d4e5e9c0> (a java.lang.ref.ReferenceQueue$Lock)
            at java.lang.ref.ReferenceQueue.remove(java.base@10.0.1/ReferenceQueue.java:172)
            at java.lang.ref.Finalizer$FinalizerThread.run(java.base@10.0.1/Finalizer.java:216)
    
       Locked ownable synchronizers:
            - None
    
    "Signal Dispatcher" #4 daemon prio=9 os_prio=2 tid=0x000001a3aea3d800 nid=0x196c runnable  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
       Locked ownable synchronizers:
            - None
    
    "Attach Listener" #5 daemon prio=5 os_prio=2 tid=0x000001a3aea3e000 nid=0x3210 waiting on condition  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
       Locked ownable synchronizers:
            - None
    
    "C2 CompilerThread0" #6 daemon prio=9 os_prio=2 tid=0x000001a3af2c8800 nid=0xe08 waiting on condition  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
       No compile task
    
       Locked ownable synchronizers:
            - None
    
    "C2 CompilerThread1" #7 daemon prio=9 os_prio=2 tid=0x000001a3af2d1000 nid=0x2a94 waiting on condition  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
       No compile task
    
       Locked ownable synchronizers:
            - None
    
    "C2 CompilerThread2" #8 daemon prio=9 os_prio=2 tid=0x000001a3af2d4000 nid=0x724 waiting on condition  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
       No compile task
    
       Locked ownable synchronizers:
            - None
    
    "C1 CompilerThread3" #9 daemon prio=9 os_prio=2 tid=0x000001a3af2d8000 nid=0x20 waiting on condition  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
       No compile task
    
       Locked ownable synchronizers:
            - None
    
    "Sweeper thread" #10 daemon prio=9 os_prio=2 tid=0x000001a3af2e8800 nid=0x2810 runnable  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
       Locked ownable synchronizers:
            - None
    
    "Service Thread" #11 daemon prio=9 os_prio=0 tid=0x000001a3af47f800 nid=0x23a8 runnable  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
       Locked ownable synchronizers:
            - None
    
    "Common-Cleaner" #12 daemon prio=8 os_prio=1 tid=0x000001a3af484000 nid=0x29b0 in Object.wait()  [0x0000008ea33ff000]
       java.lang.Thread.State: TIMED_WAITING (on object monitor)
            at java.lang.Object.wait(java.base@10.0.1/Native Method)
            - waiting on <0x00000000d4e213d8> (a java.lang.ref.ReferenceQueue$Lock)
            at java.lang.ref.ReferenceQueue.remove(java.base@10.0.1/ReferenceQueue.java:151)
            - waiting to re-lock in wait() <0x00000000d4e213d8> (a java.lang.ref.ReferenceQueue$Lock)
            at jdk.internal.ref.CleanerImpl.run(java.base@10.0.1/CleanerImpl.java:148)
            at java.lang.Thread.run(java.base@10.0.1/Thread.java:844)
            at jdk.internal.misc.InnocuousThread.run(java.base@10.0.1/InnocuousThread.java:134)
    
       Locked ownable synchronizers:
            - None
    
    "JPS event loop" #13 prio=5 os_prio=0 tid=0x000001a3afb2f000 nid=0x1674 runnable  [0x0000008ea45fe000]
       java.lang.Thread.State: RUNNABLE
            at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(java.base@10.0.1/Native Method)
            at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(java.base@10.0.1/WindowsSelectorImpl.java:296)
            at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(java.base@10.0.1/WindowsSelectorImpl.java:278)
            at sun.nio.ch.WindowsSelectorImpl.doSelect(java.base@10.0.1/WindowsSelectorImpl.java:159)
            at sun.nio.ch.SelectorImpl.lockAndDoSelect(java.base@10.0.1/SelectorImpl.java:89)
            - locked <0x00000000d4e620c8> (a io.netty.channel.nio.SelectedSelectionKeySet)
            - locked <0x00000000d4e620e0> (a java.util.Collections$UnmodifiableSet)
            - locked <0x00000000d4e62048> (a sun.nio.ch.WindowsSelectorImpl)
            at sun.nio.ch.SelectorImpl.select(java.base@10.0.1/SelectorImpl.java:100)
            at io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
            at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:752)
            at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:408)
            at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
            at java.lang.Thread.run(java.base@10.0.1/Thread.java:844)
    
       Locked ownable synchronizers:
            - None
    
    "DestroyJavaVM" #15 prio=5 os_prio=0 tid=0x000001a38ff10000 nid=0x2278 waiting on condition  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
       Locked ownable synchronizers:
            - None
    
    "NettythreadDeathWatcher-2-1" #17 daemon prio=1 os_prio=-2 tid=0x000001a3b0cb0800 nid=0x2740 waiting on condition  [0x0000008ea48fe000]
       java.lang.Thread.State: TIMED_WAITING (sleeping)
            at java.lang.Thread.sleep(java.base@10.0.1/Native Method)
            at io.netty.util.ThreadDeathWatcher$Watcher.run(ThreadDeathWatcher.java:152)
            at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
            at java.lang.Thread.run(java.base@10.0.1/Thread.java:844)
    
       Locked ownable synchronizers:
            - None
    "VM Thread" os_prio=2 tid=0x000001a3aea31800 nid=0x1de0 runnable
    
    "GC Thread#0" os_prio=2 tid=0x000001a38ff2c000 nid=0x9c8 runnable
    
    "GC Thread#1" os_prio=2 tid=0x000001a38ff2d800 nid=0x410 runnable
    
    "GC Thread#2" os_prio=2 tid=0x000001a38ff30000 nid=0x28e4 runnable
    
    "GC Thread#3" os_prio=2 tid=0x000001a38ff33800 nid=0x22a0 runnable
    
    "GC Thread#4" os_prio=2 tid=0x000001a38ff35800 nid=0x16e4 runnable
    
    "GC Thread#5" os_prio=2 tid=0x000001a38ff3a800 nid=0xfd8 runnable
    
    "GC Thread#6" os_prio=2 tid=0x000001a38ff3e000 nid=0x21a0 runnable
    
    "GC Thread#7" os_prio=2 tid=0x000001a38ff3f000 nid=0x1b88 runnable
    
    "G1 Main Marker" os_prio=2 tid=0x000001a38ff7e800 nid=0x2cd4 runnable
    
    "G1 Conc#0" os_prio=2 tid=0x000001a38ff81800 nid=0xe1c runnable
    
    "G1 Conc#1" os_prio=2 tid=0x000001a38ff82800 nid=0x91c runnable
    
    "G1 Refine#0" os_prio=2 tid=0x000001a38ffde800 nid=0x3350 runnable
    
    "G1 Refine#1" os_prio=2 tid=0x000001a3ae8ce000 nid=0x2d74 runnable
    
    "G1 Refine#2" os_prio=2 tid=0x000001a3ae8d0000 nid=0x59c runnable
    
    "G1 Refine#3" os_prio=2 tid=0x000001a3ae8d0800 nid=0x2f50 runnable
    
    "G1 Refine#4" os_prio=2 tid=0x000001a3ae8d5800 nid=0x2750 runnable
    
    "G1 Refine#5" os_prio=2 tid=0x000001a3ae8d8800 nid=0xa18 runnable
    
    "G1 Refine#6" os_prio=2 tid=0x000001a3ae8db000 nid=0x1c04 runnable
    
    "G1 Refine#7" os_prio=2 tid=0x000001a3ae8ec000 nid=0x3220 runnable
    
    "G1 Young RemSet Sampling" os_prio=2 tid=0x000001a3ae8ec800 nid=0x23cc runnable
    "VM Periodic Task Thread" os_prio=2 tid=0x000001a3af485000 nid=0x1540 waiting on condition
    
    JNI global references: 14
    

    四、在线分析工具

    Java Thread Dump Analyzer

    简单Java线程状态介绍

  • 相关阅读:
    扩展运算符(Spread operator)
    增强的对象字面量,解构赋值
    ES6 模板字符串(template string)
    let和const
    svg实现放大效果
    svg制作风车旋转
    jquery实现某宝放大点击切换
    jQuery之文档处理
    jQuery之属性操作
    jQuery css操作
  • 原文地址:https://www.cnblogs.com/linzhanfly/p/9346275.html
Copyright © 2020-2023  润新知