JDK는 Java 언어용 소프트웨어 개발 키트입니다. JDK가 없으면 Java 프로그램을 컴파일할 수 없습니다. 현재 많은 JDK 도구가 있지만 가장 일반적으로 사용되는 도구는 java.exe, javac.exe, jar 등입니다. 이 외에도 또 무엇이 있나요? 이 기사의 저자인 Joe는 수년간의 Java 개발 경험을 가지고 있으며 자신의 블로그에 다음과 같은 기사를 공유했습니다. 저자는 이를 편집했으며 다음은 번역입니다.
현재 Java JDK에 바인딩할 수 있는 도구는 많이 있으며, 그 중 java.exe와 javac.exe는 모든 Java 엔지니어에게 필수적인 무기입니다. JDK 도구는 모든 사람의 눈앞에 있습니다. 대부분의 Java 프로그래머는 이러한 도구를 사용해 본 적이 없지만 사용한다면 작업을 더욱 효과적으로 만들어줄 것입니다.
이전 튜토리얼에서 이러한 도구를 소개했습니다. 이제 가장 중요한 5가지 도구를 소개하겠습니다.
1.javap
javap은 Java 컴파일러에서 생성된 바이트코드를 볼 수 있는 Java 클래스 파일 디스어셈블러로, 코드 분석에 좋은 도구입니다. javap를 사용하여 이 Hello World 코드를 컴파일한 다음 분해해 보겠습니다.
public class HelloWorld { public static void main(String... args) { System.out.println("Hello World!"); } }
C:UsersCycleDesktop>javap HelloWorld
매개변수를 전달하지 않고 javap 도구를 실행하여 위와 같은 결과를 얻었습니다. 기본적으로 Java 클래스의 패키지, 보호, 공개 필드 및 메소드를 출력합니다.
Compiled from "HelloWorld.java" public class HelloWorld { public HelloWorld(); public static void main(java.lang.String...); }
C:UsersCycleDesktop>javap -c HelloWorld
javap에 -c 매개변수를 전달하면 위와 같은 결과를 얻을 수 있습니다. 이는 매우 좋은 정보이며 이와 같은 지침 출력은 JVM을 더 잘 이해하는 데 도움이 될 수 있습니다.
Compiled from "HelloWorld.java" public class HelloWorld { public HelloWorld(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."":()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 Hello World! 5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 8: return }
2.jvisualvm
jvisualvm은 Java 가상 머신 모니터링 및 분석 도구로, Java 애플리케이션의 런타임 정보를 직관적으로 이해할 수 있는 도구입니다. jvisualvm은 jmp, jinfo, jstat, jstack, JConsole 등과 같은 많은 도구를 통합합니다. JDK 6 업데이트 7부터 JDK의 일부였습니다.
Java 가비지 수집 모니터링 및 분석에 대한 이 기사에서는 jvisualvm을 사용하여 jvisualvm 사용 방법을 살펴볼 수 있습니다.
3.jcmd
jcmd는 주로 Java JVM에 진단 명령 요청을 보내는 데 사용됩니다. JVM 프로세스에 jcmd 매개변수 목록이 없으면 jcmd가 실행됩니다. 즉시 . 이는 jps 도구와 동일합니다. jconsole을 시작하고 이를 jcmd에 매개변수로 전달했습니다. 이는 프로세스 ID(pid)를 통해서도 얻을 수 있습니다.
C:\Users\Cycle>jconsole C:\Users\Cycle>jcmd JConsole help 3344: The following commands are available: JFR.stop JFR.start JFR.dump JFR.check VM.native_memory VM.check_commercial_features VM.unlock_commercial_features ManagementAgent.stop ManagementAgent.start_local ManagementAgent.start Thread.print GC.class_stats GC.class_histogram GC.heap_dump GC.run_finalization GC.run VM.uptime VM.flags VM.system_properties VM.command_line VM.version help
C:UsersCycle>jcmd JConsole VM.uptime
3344:289.977 s
VM.uptime은 Java 애플리케이션의 구체적인 실행 시간을 보여줍니다.
디버깅 시 동시 잠금의 스레드 스택 오버플로에 대해 다음 매개변수를 사용할 수 있습니다.
jcmd 1fd460db7b2c2eba732e7ab84276e0af Thread.print -l
4.jhat
jhat의 전체 이름은 Java 힙 분석 도구입니다. 주로 힙 파일을 구문 분석하고 탐색하는 데 사용되며, jhat은 때때로 시각화 도구와 비슷합니다. jhat은 힙 덤프를 구문 분석하고 웹 서버를 시작합니다. 그러면 사용자는 브라우저에서 힙을 볼 수 있습니다. jhat는 객체 쿼리 언어(oql)와 미리 디자인된 일부 쿼리를 지원합니다.
jmap 도구를 사용하여 힙 덤프를 생성하려면 -dump 매개변수를 사용해야 합니다. 다음은 jhat 도구가 사용할 수 있는 매개변수 목록입니다.
C:\Users\Cycle>jhat -help Usage: jhat [-stack ] [-refs ] [-port ] [-baseline ] [-debug ] [-version] [-h|-help] -J Pass directly to the runtime system. For example, -J-mx512m to use a maximum heap size of 512MB -stack false: Turn off tracking object allocation call stack. -refs false: Turn off tracking of references to objects -port : Set the port for the HTTP server. Defaults to 7000 -exclude : Specify a file that lists data members that should be excluded from the reachableFrom query. -baseline : Specify a baseline object dump. Objects in both heap dumps with the same ID and same class will be marked as not being "new". -debug : Set debug level. 0: No debug output 1: Debug hprof file parsing 2: Debug hprof file parsing, no server -version Report version number -h|-help Print this help and exit The file to read For a dump file that contains multiple heap dumps, you may specify which dump in the file by appending "#" to the file name, i.e. "foo.hprof#3". All boolean options default to "true"
힙을 생성했습니다. jconsole 애플리케이션용 덤프 파일을 생성하고 다음 명령을 사용하여 프로세스 ID 3344를 실행합니다.
jmap -dump:format=b,file=heap.bin 3344
이제 힙 덤프 파일 준비가 되면 다음 명령을 실행하면 서비스가 시작됩니다.
jmap -dump:format=b,file=heap.bin 3344
콘솔에 결과를 출력합니다.
C:\Users\Cycle\Desktop>jhat heap.bin Reading from heap.bin... Dump file created Sun Nov 16 19:26:35 IST 2014 Snapshot read, resolving... Resolving 641209 objects... Chasing references, expect 128 dots.................. Eliminating duplicate references..................... Snapshot resolved. Started HTTP server on port 7000 Server is ready.
브라우저에 입력하세요: http://localhost:7000/힙 덤프의 세부 정보가 나옵니다:
5.Oracle Java Mission Control
JVM 통합 전략의 일환으로 HotSpot과 JRockit VM을 통합하는 데 주로 사용됩니다. 현재 JRockit Mission Control은 Java SE의 표준 버전에서 사용할 수 있습니다. JMC(Java Mission Control)는 HotSpot JVM용 Java Flight Recorder와 함께 작동하여 핵심 데이터와 이벤트를 기록합니다. 이는 튜닝 도구이며 Oracle JDK와 함께 작동합니다. 문제가 발생하면 이 데이터를 분석에 사용할 수 있습니다.
개발자는 jmc 명령을 사용하여 JMC 도구를 만들 수 있습니다.
위 내용은 모든 Java 개발자가 알아야 할 5가지 JDK 도구의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!