>  기사  >  Java  >  모든 Java 개발자가 알아야 할 5가지 JDK 도구

모든 Java 개발자가 알아야 할 5가지 JDK 도구

Y2J
Y2J원래의
2017-04-18 14:11:061791검색

JDK는 Java 언어용 소프트웨어 개발 키트입니다. JDK가 없으면 Java 프로그램을 컴파일할 수 없습니다. 현재 많은 JDK 도구가 있지만 가장 일반적으로 사용되는 도구는 java.exe, javac.exe, jar 등입니다. 이 외에도 또 무엇이 있나요? 이 기사의 저자인 Joe는 수년간의 Java 개발 경험을 가지고 있으며 자신의 블로그에 다음과 같은 기사를 공유했습니다. 저자는 이를 편집했으며 다음은 번역입니다.

현재 Java JDK에 바인딩할 수 있는 도구는 많이 있으며, 그 중 java.exe와 javac.exe는 모든 Java 엔지니어에게 필수적인 무기입니다. JDK 도구는 모든 사람의 눈앞에 있습니다. 대부분의 Java 프로그래머는 이러한 도구를 사용해 본 적이 없지만 사용한다면 작업을 더욱 효과적으로 만들어줄 것입니다.

모든 Java 개발자가 알아야 할 5가지 JDK 도구

이전 튜토리얼에서 이러한 도구를 소개했습니다. 이제 가장 중요한 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 개발자가 알아야 할 5가지 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/힙 덤프의 세부 정보가 나옵니다:

모든 Java 개발자가 알아야 할 5가지 JDK 도구

 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 도구

모든 Java 개발자가 알아야 할 5가지 JDK 도구

위 내용은 모든 Java 개발자가 알아야 할 5가지 JDK 도구의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.