一、Javac(java compiler)

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

2、例子

(1)代码

  1. public class TestJavac {
  2. static class Person{
  3. private String name;
  4. private Integer age;
  5. public Person() {
  6. }
  7. public Person(String name, Integer age) {
  8. this.name = name;
  9. this.age = age;
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. public Integer getAge() {
  18. return age;
  19. }
  20. public void setAge(Integer age) {
  21. this.age = age;
  22. }
  23. }
  24. public static void main(String[] args) {
  25. System.out.println("Test Javac");
  26. Person javac = new Person("Javac", 14);
  27. System.out.println(javac.getName());
  28. System.out.println(javac.getAge());
  29. }
  30. }

(2)执行javac命令

  1. C:\Users\HBKJ\Desktop\TestJavac>javac TestJavac.java
  2. C:\Users\HBKJ\Desktop\TestJavac>dir
  3. C:\Users\HBKJ\Desktop\TestJavac 的目录
  4. 2018/07/21 12:30 <DIR> .
  5. 2018/07/21 12:30 <DIR> ..
  6. 2018/07/21 12:26 774 TestJavac$Person.class // 内部类
  7. 2018/07/21 12:26 783 TestJavac.class
  8. 2018/07/21 12:26 842 TestJavac.java
  9. 3 个文件 2,399 字节
  10. 2 个目录 13,931,593,728 可用字节

二、javap

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

2、例子

(1)命令:javap -p

  1. C:\Users\HBKJ\Desktop\TestJavac>javap -p TestJavac.class
  2. Compiled from "TestJavac.java"
  3. public class TestJavac {
  4. public TestJavac();
  5. public static void main(java.lang.String[]);
  6. }

(2)命令:javap -c

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

三、jps(JVM Process Status Tool)

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

2、主要选项

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

3、例子(Idea IDE进程)

  1. PS C:\Windows\system32> jps
  2. 9024 Jps
  3. 9796 Launcher
  4. 9860
  5. PS C:\Windows\system32> jps -l
  6. 9796 org.jetbrains.jps.cmdline.Launcher
  7. 9860
  8. 8540 jdk.jcmd/sun.tools.jps.Jps
  9. PS C:\Windows\system32> jps -v
  10. 8404 Jps -Dapplication.home=E:\develop\software\java10\jdk -Xms8m -Djdk.module.main=jdk.jcmd
  11. 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:\software\IntelliJ IDEA 2018.1.1 -Didea.config.path=C:\Users\HBKJ\.IntelliJIdea2018.1\config -Didea.plugins.path=C:\Users\HBKJ\.IntelliJIdea2018.1\config\plugins -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.
  12. 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:\software\IntelliJ IDEA 2018.1.1\bin\idea64.exe.vmoptions -Didea.jre.check=true -Dide.native.launcher=true -Didea.paths.selector=IntelliJIdea2018.1 -XX:ErrorFile=C:\Users\HBKJ\java_error_in_idea_%p.log -XX:HeapDumpPath=C:\Users\HBKJ\java_error_in_idea.hprof

四、jstack(Stack Trace for java)

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

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

2、主要选项

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

3、例子(Idea IDE进程)

  1. PS C:\Users\HBKJ> jstack 9796
  2. 2018-07-14 14:33:38
  3. Full thread dump Java HotSpot(TM) 64-Bit Server VM (10.0.1+10 mixed mode):
  4. Threads class SMR info:
  5. _java_thread_list=0x000001a3b0b585f0, length=14, elements={
  6. 0x000001a3aea36000, 0x000001a3aea37000, 0x000001a3aea3d800, 0x000001a3aea3e000,
  7. 0x000001a3af2c8800, 0x000001a3af2d1000, 0x000001a3af2d4000, 0x000001a3af2d8000,
  8. 0x000001a3af2e8800, 0x000001a3af47f800, 0x000001a3af484000, 0x000001a3afb2f000,
  9. 0x000001a38ff10000, 0x000001a3b0cb0800
  10. }
  11. "Reference Handler" #2 daemon prio=10 os_prio=2 tid=0x000001a3aea36000 nid=0x1e44 waiting on condition [0x0000008ea28ff000]
  12. java.lang.Thread.State: RUNNABLE
  13. at java.lang.ref.Reference.waitForReferencePendingList(java.base@10.0.1/Native Method)
  14. at java.lang.ref.Reference.processPendingReferences(java.base@10.0.1/Reference.java:174)
  15. at java.lang.ref.Reference.access$000(java.base@10.0.1/Reference.java:44)
  16. at java.lang.ref.Reference$ReferenceHandler.run(java.base@10.0.1/Reference.java:138)
  17. "Finalizer" #3 daemon prio=8 os_prio=1 tid=0x000001a3aea37000 nid=0x1308 in Object.wait() [0x0000008ea29fe000]
  18. java.lang.Thread.State: WAITING (on object monitor)
  19. at java.lang.Object.wait(java.base@10.0.1/Native Method)
  20. - waiting on <0x00000000d4e5e9c0> (a java.lang.ref.ReferenceQueue$Lock)
  21. at java.lang.ref.ReferenceQueue.remove(java.base@10.0.1/ReferenceQueue.java:151)
  22. - waiting to re-lock in wait() <0x00000000d4e5e9c0> (a java.lang.ref.ReferenceQueue$Lock)
  23. at java.lang.ref.ReferenceQueue.remove(java.base@10.0.1/ReferenceQueue.java:172)
  24. at java.lang.ref.Finalizer$FinalizerThread.run(java.base@10.0.1/Finalizer.java:216)
  25. "Signal Dispatcher" #4 daemon prio=9 os_prio=2 tid=0x000001a3aea3d800 nid=0x196c runnable [0x0000000000000000]
  26. java.lang.Thread.State: RUNNABLE
  27. "Attach Listener" #5 daemon prio=5 os_prio=2 tid=0x000001a3aea3e000 nid=0x3210 waiting on condition [0x0000000000000000]
  28. java.lang.Thread.State: RUNNABLE
  29. "C2 CompilerThread0" #6 daemon prio=9 os_prio=2 tid=0x000001a3af2c8800 nid=0xe08 waiting on condition [0x0000000000000000]
  30. java.lang.Thread.State: RUNNABLE
  31. No compile task
  32. "C2 CompilerThread1" #7 daemon prio=9 os_prio=2 tid=0x000001a3af2d1000 nid=0x2a94 waiting on condition [0x0000000000000000]
  33. java.lang.Thread.State: RUNNABLE
  34. No compile task
  35. "C2 CompilerThread2" #8 daemon prio=9 os_prio=2 tid=0x000001a3af2d4000 nid=0x724 waiting on condition [0x0000000000000000]
  36. java.lang.Thread.State: RUNNABLE
  37. No compile task
  38. "C1 CompilerThread3" #9 daemon prio=9 os_prio=2 tid=0x000001a3af2d8000 nid=0x20 waiting on condition [0x0000000000000000]
  39. java.lang.Thread.State: RUNNABLE
  40. No compile task
  41. "Sweeper thread" #10 daemon prio=9 os_prio=2 tid=0x000001a3af2e8800 nid=0x2810 runnable [0x0000000000000000]
  42. java.lang.Thread.State: RUNNABLE
  43. "Service Thread" #11 daemon prio=9 os_prio=0 tid=0x000001a3af47f800 nid=0x23a8 runnable [0x0000000000000000]
  44. java.lang.Thread.State: RUNNABLE
  45. "Common-Cleaner" #12 daemon prio=8 os_prio=1 tid=0x000001a3af484000 nid=0x29b0 in Object.wait() [0x0000008ea33ff000]
  46. java.lang.Thread.State: TIMED_WAITING (on object monitor)
  47. at java.lang.Object.wait(java.base@10.0.1/Native Method)
  48. - waiting on <0x00000000d4e213d8> (a java.lang.ref.ReferenceQueue$Lock)
  49. at java.lang.ref.ReferenceQueue.remove(java.base@10.0.1/ReferenceQueue.java:151)
  50. - waiting to re-lock in wait() <0x00000000d4e213d8> (a java.lang.ref.ReferenceQueue$Lock)
  51. at jdk.internal.ref.CleanerImpl.run(java.base@10.0.1/CleanerImpl.java:148)
  52. at java.lang.Thread.run(java.base@10.0.1/Thread.java:844)
  53. at jdk.internal.misc.InnocuousThread.run(java.base@10.0.1/InnocuousThread.java:134)
  54. "JPS event loop" #13 prio=5 os_prio=0 tid=0x000001a3afb2f000 nid=0x1674 runnable [0x0000008ea45fe000]
  55. java.lang.Thread.State: RUNNABLE
  56. at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(java.base@10.0.1/Native Method)
  57. at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(java.base@10.0.1/WindowsSelectorImpl.java:296)
  58. at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(java.base@10.0.1/WindowsSelectorImpl.java:278)
  59. at sun.nio.ch.WindowsSelectorImpl.doSelect(java.base@10.0.1/WindowsSelectorImpl.java:159)
  60. at sun.nio.ch.SelectorImpl.lockAndDoSelect(java.base@10.0.1/SelectorImpl.java:89)
  61. - locked <0x00000000d4e620c8> (a io.netty.channel.nio.SelectedSelectionKeySet)
  62. - locked <0x00000000d4e620e0> (a java.util.Collections$UnmodifiableSet)
  63. - locked <0x00000000d4e62048> (a sun.nio.ch.WindowsSelectorImpl)
  64. at sun.nio.ch.SelectorImpl.select(java.base@10.0.1/SelectorImpl.java:100)
  65. at io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
  66. at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:752)
  67. at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:408)
  68. at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
  69. at java.lang.Thread.run(java.base@10.0.1/Thread.java:844)
  70. "DestroyJavaVM" #15 prio=5 os_prio=0 tid=0x000001a38ff10000 nid=0x2278 waiting on condition [0x0000000000000000]
  71. java.lang.Thread.State: RUNNABLE
  72. "NettythreadDeathWatcher-2-1" #17 daemon prio=1 os_prio=-2 tid=0x000001a3b0cb0800 nid=0x2740 waiting on condition [0x0000008ea48fe000]
  73. java.lang.Thread.State: TIMED_WAITING (sleeping)
  74. at java.lang.Thread.sleep(java.base@10.0.1/Native Method)
  75. at io.netty.util.ThreadDeathWatcher$Watcher.run(ThreadDeathWatcher.java:152)
  76. at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
  77. at java.lang.Thread.run(java.base@10.0.1/Thread.java:844)
  78. "VM Thread" os_prio=2 tid=0x000001a3aea31800 nid=0x1de0 runnable
  79. "GC Thread#0" os_prio=2 tid=0x000001a38ff2c000 nid=0x9c8 runnable
  80. "GC Thread#1" os_prio=2 tid=0x000001a38ff2d800 nid=0x410 runnable
  81. "GC Thread#2" os_prio=2 tid=0x000001a38ff30000 nid=0x28e4 runnable
  82. "GC Thread#3" os_prio=2 tid=0x000001a38ff33800 nid=0x22a0 runnable
  83. "GC Thread#4" os_prio=2 tid=0x000001a38ff35800 nid=0x16e4 runnable
  84. "GC Thread#5" os_prio=2 tid=0x000001a38ff3a800 nid=0xfd8 runnable
  85. "GC Thread#6" os_prio=2 tid=0x000001a38ff3e000 nid=0x21a0 runnable
  86. "GC Thread#7" os_prio=2 tid=0x000001a38ff3f000 nid=0x1b88 runnable
  87. "G1 Main Marker" os_prio=2 tid=0x000001a38ff7e800 nid=0x2cd4 runnable
  88. "G1 Conc#0" os_prio=2 tid=0x000001a38ff81800 nid=0xe1c runnable
  89. "G1 Conc#1" os_prio=2 tid=0x000001a38ff82800 nid=0x91c runnable
  90. "G1 Refine#0" os_prio=2 tid=0x000001a38ffde800 nid=0x3350 runnable
  91. "G1 Refine#1" os_prio=2 tid=0x000001a3ae8ce000 nid=0x2d74 runnable
  92. "G1 Refine#2" os_prio=2 tid=0x000001a3ae8d0000 nid=0x59c runnable
  93. "G1 Refine#3" os_prio=2 tid=0x000001a3ae8d0800 nid=0x2f50 runnable
  94. "G1 Refine#4" os_prio=2 tid=0x000001a3ae8d5800 nid=0x2750 runnable
  95. "G1 Refine#5" os_prio=2 tid=0x000001a3ae8d8800 nid=0xa18 runnable
  96. "G1 Refine#6" os_prio=2 tid=0x000001a3ae8db000 nid=0x1c04 runnable
  97. "G1 Refine#7" os_prio=2 tid=0x000001a3ae8ec000 nid=0x3220 runnable
  98. "G1 Young RemSet Sampling" os_prio=2 tid=0x000001a3ae8ec800 nid=0x23cc runnable
  99. "VM Periodic Task Thread" os_prio=2 tid=0x000001a3af485000 nid=0x1540 waiting on condition
  100. JNI global references: 14
  101. #################################################
  102. # 使用-l选项将输出Locked ownable synchronizers 内容
  103. #################################################
  104. PS C:\Users\HBKJ> jstack -l 9796
  105. 2018-07-14 14:41:41
  106. Full thread dump Java HotSpot(TM) 64-Bit Server VM (10.0.1+10 mixed mode):
  107. Threads class SMR info:
  108. _java_thread_list=0x000001a3b0b585f0, length=14, elements={
  109. 0x000001a3aea36000, 0x000001a3aea37000, 0x000001a3aea3d800, 0x000001a3aea3e000,
  110. 0x000001a3af2c8800, 0x000001a3af2d1000, 0x000001a3af2d4000, 0x000001a3af2d8000,
  111. 0x000001a3af2e8800, 0x000001a3af47f800, 0x000001a3af484000, 0x000001a3afb2f000,
  112. 0x000001a38ff10000, 0x000001a3b0cb0800
  113. }
  114. "Reference Handler" #2 daemon prio=10 os_prio=2 tid=0x000001a3aea36000 nid=0x1e44 waiting on condition [0x0000008ea28ff000]
  115. java.lang.Thread.State: RUNNABLE
  116. at java.lang.ref.Reference.waitForReferencePendingList(java.base@10.0.1/Native Method)
  117. at java.lang.ref.Reference.processPendingReferences(java.base@10.0.1/Reference.java:174)
  118. at java.lang.ref.Reference.access$000(java.base@10.0.1/Reference.java:44)
  119. at java.lang.ref.Reference$ReferenceHandler.run(java.base@10.0.1/Reference.java:138)
  120. Locked ownable synchronizers:
  121. - None
  122. "Finalizer" #3 daemon prio=8 os_prio=1 tid=0x000001a3aea37000 nid=0x1308 in Object.wait() [0x0000008ea29fe000]
  123. java.lang.Thread.State: WAITING (on object monitor)
  124. at java.lang.Object.wait(java.base@10.0.1/Native Method)
  125. - waiting on <0x00000000d4e5e9c0> (a java.lang.ref.ReferenceQueue$Lock)
  126. at java.lang.ref.ReferenceQueue.remove(java.base@10.0.1/ReferenceQueue.java:151)
  127. - waiting to re-lock in wait() <0x00000000d4e5e9c0> (a java.lang.ref.ReferenceQueue$Lock)
  128. at java.lang.ref.ReferenceQueue.remove(java.base@10.0.1/ReferenceQueue.java:172)
  129. at java.lang.ref.Finalizer$FinalizerThread.run(java.base@10.0.1/Finalizer.java:216)
  130. Locked ownable synchronizers:
  131. - None
  132. "Signal Dispatcher" #4 daemon prio=9 os_prio=2 tid=0x000001a3aea3d800 nid=0x196c runnable [0x0000000000000000]
  133. java.lang.Thread.State: RUNNABLE
  134. Locked ownable synchronizers:
  135. - None
  136. "Attach Listener" #5 daemon prio=5 os_prio=2 tid=0x000001a3aea3e000 nid=0x3210 waiting on condition [0x0000000000000000]
  137. java.lang.Thread.State: RUNNABLE
  138. Locked ownable synchronizers:
  139. - None
  140. "C2 CompilerThread0" #6 daemon prio=9 os_prio=2 tid=0x000001a3af2c8800 nid=0xe08 waiting on condition [0x0000000000000000]
  141. java.lang.Thread.State: RUNNABLE
  142. No compile task
  143. Locked ownable synchronizers:
  144. - None
  145. "C2 CompilerThread1" #7 daemon prio=9 os_prio=2 tid=0x000001a3af2d1000 nid=0x2a94 waiting on condition [0x0000000000000000]
  146. java.lang.Thread.State: RUNNABLE
  147. No compile task
  148. Locked ownable synchronizers:
  149. - None
  150. "C2 CompilerThread2" #8 daemon prio=9 os_prio=2 tid=0x000001a3af2d4000 nid=0x724 waiting on condition [0x0000000000000000]
  151. java.lang.Thread.State: RUNNABLE
  152. No compile task
  153. Locked ownable synchronizers:
  154. - None
  155. "C1 CompilerThread3" #9 daemon prio=9 os_prio=2 tid=0x000001a3af2d8000 nid=0x20 waiting on condition [0x0000000000000000]
  156. java.lang.Thread.State: RUNNABLE
  157. No compile task
  158. Locked ownable synchronizers:
  159. - None
  160. "Sweeper thread" #10 daemon prio=9 os_prio=2 tid=0x000001a3af2e8800 nid=0x2810 runnable [0x0000000000000000]
  161. java.lang.Thread.State: RUNNABLE
  162. Locked ownable synchronizers:
  163. - None
  164. "Service Thread" #11 daemon prio=9 os_prio=0 tid=0x000001a3af47f800 nid=0x23a8 runnable [0x0000000000000000]
  165. java.lang.Thread.State: RUNNABLE
  166. Locked ownable synchronizers:
  167. - None
  168. "Common-Cleaner" #12 daemon prio=8 os_prio=1 tid=0x000001a3af484000 nid=0x29b0 in Object.wait() [0x0000008ea33ff000]
  169. java.lang.Thread.State: TIMED_WAITING (on object monitor)
  170. at java.lang.Object.wait(java.base@10.0.1/Native Method)
  171. - waiting on <0x00000000d4e213d8> (a java.lang.ref.ReferenceQueue$Lock)
  172. at java.lang.ref.ReferenceQueue.remove(java.base@10.0.1/ReferenceQueue.java:151)
  173. - waiting to re-lock in wait() <0x00000000d4e213d8> (a java.lang.ref.ReferenceQueue$Lock)
  174. at jdk.internal.ref.CleanerImpl.run(java.base@10.0.1/CleanerImpl.java:148)
  175. at java.lang.Thread.run(java.base@10.0.1/Thread.java:844)
  176. at jdk.internal.misc.InnocuousThread.run(java.base@10.0.1/InnocuousThread.java:134)
  177. Locked ownable synchronizers:
  178. - None
  179. "JPS event loop" #13 prio=5 os_prio=0 tid=0x000001a3afb2f000 nid=0x1674 runnable [0x0000008ea45fe000]
  180. java.lang.Thread.State: RUNNABLE
  181. at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(java.base@10.0.1/Native Method)
  182. at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(java.base@10.0.1/WindowsSelectorImpl.java:296)
  183. at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(java.base@10.0.1/WindowsSelectorImpl.java:278)
  184. at sun.nio.ch.WindowsSelectorImpl.doSelect(java.base@10.0.1/WindowsSelectorImpl.java:159)
  185. at sun.nio.ch.SelectorImpl.lockAndDoSelect(java.base@10.0.1/SelectorImpl.java:89)
  186. - locked <0x00000000d4e620c8> (a io.netty.channel.nio.SelectedSelectionKeySet)
  187. - locked <0x00000000d4e620e0> (a java.util.Collections$UnmodifiableSet)
  188. - locked <0x00000000d4e62048> (a sun.nio.ch.WindowsSelectorImpl)
  189. at sun.nio.ch.SelectorImpl.select(java.base@10.0.1/SelectorImpl.java:100)
  190. at io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
  191. at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:752)
  192. at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:408)
  193. at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
  194. at java.lang.Thread.run(java.base@10.0.1/Thread.java:844)
  195. Locked ownable synchronizers:
  196. - None
  197. "DestroyJavaVM" #15 prio=5 os_prio=0 tid=0x000001a38ff10000 nid=0x2278 waiting on condition [0x0000000000000000]
  198. java.lang.Thread.State: RUNNABLE
  199. Locked ownable synchronizers:
  200. - None
  201. "NettythreadDeathWatcher-2-1" #17 daemon prio=1 os_prio=-2 tid=0x000001a3b0cb0800 nid=0x2740 waiting on condition [0x0000008ea48fe000]
  202. java.lang.Thread.State: TIMED_WAITING (sleeping)
  203. at java.lang.Thread.sleep(java.base@10.0.1/Native Method)
  204. at io.netty.util.ThreadDeathWatcher$Watcher.run(ThreadDeathWatcher.java:152)
  205. at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
  206. at java.lang.Thread.run(java.base@10.0.1/Thread.java:844)
  207. Locked ownable synchronizers:
  208. - None
  209. "VM Thread" os_prio=2 tid=0x000001a3aea31800 nid=0x1de0 runnable
  210. "GC Thread#0" os_prio=2 tid=0x000001a38ff2c000 nid=0x9c8 runnable
  211. "GC Thread#1" os_prio=2 tid=0x000001a38ff2d800 nid=0x410 runnable
  212. "GC Thread#2" os_prio=2 tid=0x000001a38ff30000 nid=0x28e4 runnable
  213. "GC Thread#3" os_prio=2 tid=0x000001a38ff33800 nid=0x22a0 runnable
  214. "GC Thread#4" os_prio=2 tid=0x000001a38ff35800 nid=0x16e4 runnable
  215. "GC Thread#5" os_prio=2 tid=0x000001a38ff3a800 nid=0xfd8 runnable
  216. "GC Thread#6" os_prio=2 tid=0x000001a38ff3e000 nid=0x21a0 runnable
  217. "GC Thread#7" os_prio=2 tid=0x000001a38ff3f000 nid=0x1b88 runnable
  218. "G1 Main Marker" os_prio=2 tid=0x000001a38ff7e800 nid=0x2cd4 runnable
  219. "G1 Conc#0" os_prio=2 tid=0x000001a38ff81800 nid=0xe1c runnable
  220. "G1 Conc#1" os_prio=2 tid=0x000001a38ff82800 nid=0x91c runnable
  221. "G1 Refine#0" os_prio=2 tid=0x000001a38ffde800 nid=0x3350 runnable
  222. "G1 Refine#1" os_prio=2 tid=0x000001a3ae8ce000 nid=0x2d74 runnable
  223. "G1 Refine#2" os_prio=2 tid=0x000001a3ae8d0000 nid=0x59c runnable
  224. "G1 Refine#3" os_prio=2 tid=0x000001a3ae8d0800 nid=0x2f50 runnable
  225. "G1 Refine#4" os_prio=2 tid=0x000001a3ae8d5800 nid=0x2750 runnable
  226. "G1 Refine#5" os_prio=2 tid=0x000001a3ae8d8800 nid=0xa18 runnable
  227. "G1 Refine#6" os_prio=2 tid=0x000001a3ae8db000 nid=0x1c04 runnable
  228. "G1 Refine#7" os_prio=2 tid=0x000001a3ae8ec000 nid=0x3220 runnable
  229. "G1 Young RemSet Sampling" os_prio=2 tid=0x000001a3ae8ec800 nid=0x23cc runnable
  230. "VM Periodic Task Thread" os_prio=2 tid=0x000001a3af485000 nid=0x1540 waiting on condition
  231. JNI global references: 14

四、在线分析工具

Java Thread Dump Analyzer

简单Java线程状态介绍

作业7:常用java命令(一)的更多相关文章

  1. 作业8:常用java命令(二)

    一.jinfo(Configuration Info for Java) 1.功能:jinfo可以实时地查看和调整虚拟机的各项参数. 2.参数: 选项 作用 -flag name 打印改名字的VM设置 ...

  2. 常用java命令

    javap 反编译 javap xxx.class 查看大概 javap -v -p xxx.class 查看详细 jps 查看有哪些java进程 jinfo 查看或设置java进程的 vm 参数,只 ...

  3. 黑马程序员——JAVA基础之常用DOS命令和环境变量的配置

    ------- android培训.java培训.期待与您交流! ----------   1.常用dos命令: dir   显示当前文件下目录                             ...

  4. Java学习中,常用的命令管理(Java 学习中的小记录)

    Java学习中,常用的命令管理      作者:王可利(Star·星星) 一.Window中常见的dos命令 在哪里操作dos命令: Win7 ---> 开始  ---->所有程序---& ...

  5. java基础基础总结----- 常用DOS命令(一)

    常用DOS命令 dir(directory):列出当前目录下的文件以及文件夹 mkdir (make directory) : 创建目录 rd (remove directory): 删除目录 cd ...

  6. 常用 ADB 命令[ZZ]

    https://blog.csdn.net/yang_zhang_1992/article/details/71404186 1. 显示当前运行的全部模拟器: adb devices 2. 对某一模拟 ...

  7. 掌握这些常用Linux命令,一起提升工作效率

    开始上班了,新一年的奋斗的之路启程了,要继续[奔赴山海,奔赴热爱]. 汪国真在<热爱生命>这首诗中写到:既然选择了远方,便只顾风雨兼程.技术上还是持续精进和学习,远方虽远,要迈开脚步,一步 ...

  8. 常用Keytool 命令

    常用Keytool 命令Keytool 是一个JAVA环境下的安全钥匙与证书的管理工具.它管理一个存储了私有钥匙和验证相应公共钥匙的与它们相关联的X.509 证书链的keystore(相当一个数据库, ...

  9. JAVA命令大全

    1.java.exe:======================运行java程序,这个相信每一位用Java的人知道了. 2.javac.exe:======================编译的Ja ...

随机推荐

  1. maven坐标及依赖范围的学习(1)

    首先,我们先了解什么是maven的坐标(重中之重): 在这里我们可以看到那三个红色的行,基本是pom.xml中出现的最多的配置     例如这个配置:这里我们可以看到我们这个项目的pom文件中,他对名 ...

  2. Python list 遇到的问题

    1.list“+” 运算 <list += > diff. <ndarray +=> list1 += list2是追加,而不是加法运算 list1 = [0,0,0] lis ...

  3. Remote Ubuntu VM from Windows

    Need to install the xrdp tool on Ubuntu. To do this, open a Terminal window (Ctrl + Alt + T) and ent ...

  4. LeetCode 20. 有效的括号(Valid Parentheses )

    题目描述 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字 ...

  5. Linux字符编码默认为UTF-8,如出现乱码可设置为GBK

    Linux字符编码默认为UTF-8,如出现乱码可设置为GBK1.手动更改profile文件的命令: vi /etc/profile 也可以修改 /etc/sysconfig/i18n 文件,如 LAN ...

  6. 性能分析 | Linux 内存占用分析

    这篇博客主要介绍 linux 环境下,查看内存占用的两种方式:使用 ps,top等命令:查看/proc/[pid]/下的文件.文章简要介绍了命令的使用方法与一些参数意义,同时对/proc/[pid]/ ...

  7. Android ROM适配

    Android是开源的,不同的手机厂商都有自己定制的系统,所以这就给开发者带来了ROM适配难题.在一些群里面经常看到有人因为手机适配问题,说这个手机坑,那个手机坑,其实那是没有对ROM定制系统的一些变 ...

  8. C#实现MJPEG服务器

    实现流写入,将图像作为mjpeg写入 public class MjpegWriter : IDisposable { , }; , , , }; private string _Boundary; ...

  9. linux如何离线加载docker镜像?

    1. 在已经部署了镜像的机器上获取镜像 1.1 获取镜像名 docker images 1.2 打包选中对应的镜像 docker save <image_name> -o <imag ...

  10. SQL-W3School-基础:SQL 语法

    ylbtech-SQL-W3School-基础:SQL 语法 1.返回顶部 1. 数据库表 一个数据库通常包含一个或多个表.每个表由一个名字标识(例如“客户”或者“订单”).表包含带有数据的记录(行) ...