>Java >java지도 시간 >Java에서 jmap 명령을 사용하는 방법은 무엇입니까?

Java에서 jmap 명령을 사용하는 방법은 무엇입니까?

WBOY
WBOY앞으로
2023-04-20 22:52:061647검색

jmap 명령 소개

jmap(Java Virtual Machine 메모리 맵)은 JDK에서 제공하는 명령줄 도구로, Java 가상 머신의 힙 덤프 스냅샷 덤프 파일을 생성할 수 있습니다. 또한 jmap 명령은 공간 사용량, 현재 사용되는 가비지 수집기, 생성 상태 등과 같은 실행 완료 대기열, Java 힙 및 메서드 영역에 대한 자세한 정보도 볼 수 있습니다.

jinfo 명령과 마찬가지로 Windows 시스템에서의 사용에는 여전히 몇 가지 제한 사항이 있습니다. dbgeng.dll이 없는 Windows 시스템에서 jinfo 명령이 제대로 작동하려면 Windows용 디버깅 도구를 설치해야 하며 PATH 환경 변수에 jvm.dll의 위치가 포함되어야 합니다. dbgeng.dll的Windows系统中,必须安装用于Windows的调试工具才能使jinfo命令正常工作,PATH环境变量应该包含jvm.dll的位置。

jmap命令参数

命令语法:

jmap [options] pid

命令参数说明:

option:jmap命令的可选参数。如果没有指定这个参数,jinfo命令会显示Java虚拟机进程的内存映像信息,如下图:

Java에서 jmap 명령을 사용하는 방법은 무엇입니까?

pid:要打印配置信息的Java虚拟机的进程ID。

想要要获取运行的Java虚拟机进程的列表,可以使用ps命令(Linux系统中)或tasklist命令(Windows系统中),如果Java虚拟机进程没有在单独的docker实例中运行,可以使用jps命令。

option都有哪些参数呢?我们来看一下。

-heap

显示Java堆的如下信息:

  • 被指定的垃圾回收算法的信息,包括垃圾回收算法的名称和垃圾回收算法的详细信息。

  • 堆的配置信息,可能是由命令行选项指定,或者由Java虚拟机根据服务器配置选择的。

  • 堆的内存空间使用信息,包括分代情况,每个代的总容量、已使用内存、可使用内存。如果某一代被继续细分(例如,年轻代),则包含细分的空间的内存使用信息。

比如:

Java에서 jmap 명령을 사용하는 방법은 무엇입니까?

-histo[:live]

显示Java堆中对象的统计信息,包括:对象数量、占用内存大小(单位:字节)和类的完全限定名。比如:

Java에서 jmap 명령을 사용하는 방법은 무엇입니까?

要获得某个对象的大小,可以将其总大小除以该对象类型的数量。如果指定了live参数,则只计算活动的对象。比如:

Java에서 jmap 명령을 사용하는 방법은 무엇입니까?

-clstats

显示Java堆中元空间的类加载器的统计信息,包括:

class_loader:当Java虚拟机运行时,类加载器对象的地址
classes:已加载类的数量
bytes:该类加载器加载的所有类的元数据所占的字节数
parent_loader:父类加载器对象的地址,如果没有显示null
alive:是否存活的标识,表示类加载器对象是否将被垃圾回收。
type:该类加载器的类名。

比如:

Java에서 jmap 명령을 사용하는 방법은 무엇입니까?

-finalizerinfo

显示在F-Queue中等待Finalizer线程执行finalize方法的对象。比如:

Java에서 jmap 명령을 사용하는 방법은 무엇입니까?

-dump:[live,]format=b,file=

生成Java虚拟机的堆转储快照dump文件。具体说明如下:

  • live参数是可选的,如果指定,则只转储堆中的活动对象;如果没有指定,则转储堆中的所有对象。

  • format=b表示以hprof二进制格式转储Java堆的内存。

  • file=<filename></filename>用于指定快照dump文件的文件名。

比如:

Java에서 jmap 명령을 사용하는 방법은 무엇입니까?

-F

强制模式。如果指定的pid没有响应,可以配合-dump-histo

jmap 명령 매개변수

Java에서 jmap 명령을 사용하는 방법은 무엇입니까?명령 구문:

rrreee

명령 매개변수 설명:

option: jmap 명령의 선택적 매개변수입니다. 이 매개변수를 지정하지 않으면 jinfo 명령은 아래와 같이 Java Virtual Machine 프로세스의 메모리 이미지 정보를 표시합니다.

🎜Java의 jmap 명령 사용 방법🎜🎜pid: 구성 정보를 인쇄하기 위한 Java 가상 머신의 프로세스 ID입니다. 🎜🎜실행 중인 JVM(Java Virtual Machine) 프로세스 목록을 얻으려면 ps 명령(Linux 시스템) 또는 tasklist 명령(Windows 시스템)을 사용할 수 있습니다. JVM(Java Virtual Machine) 프로세스가 별도의 Docker 인스턴스에서 실행되고 있지 않은 경우 jps 주문을 사용할 수 있습니다. 🎜🎜옵션의 매개변수는 무엇인가요? 한 번 보자. 🎜🎜-heap🎜🎜Java 힙에 대한 다음 정보를 표시합니다. 🎜
  • 🎜가비지 수집 알고리즘의 이름과 가비지 수집 알고리즘의 이름을 포함하여 지정된 가비지 수집 알고리즘에 대한 정보 가비지 수집 알고리즘 세부 정보의 수입니다. 🎜
  • 🎜힙 구성 정보는 명령줄 옵션으로 지정하거나 서버 구성을 기반으로 Java 가상 머신에서 선택할 수 있습니다. 🎜
  • 🎜세대별 세대 상태, 총 용량, 사용된 메모리, 사용 가능한 메모리 등을 포함한 힙 메모리 공간 사용량 정보입니다. 세대가 더욱 세분화되는 경우(예: Young Generation), 세분화된 공간에 대한 메모리 사용량 정보를 포함합니다. 🎜
🎜예: 🎜🎜Java의 jmap 명령 🎜🎜-histo[:live]🎜🎜 사용 방법: 객체 수, 점유된 메모리 크기(단위: 바이트) 및 클래스의 정규화된 이름을 포함하여 Java 힙에 있는 객체의 통계 정보를 표시합니다. 예: 🎜🎜Java의 jmap 명령 사용 방법🎜🎜얻으려면 특정 개체의 전체 크기를 해당 개체 유형의 수로 나눈 개체의 크기입니다. live 매개변수가 지정된 경우 라이브 개체만 계산됩니다. 예: 🎜🎜Java의 jmap 명령 사용 방법🎜🎜-clstats 🎜 🎜다음을 포함하여 Java 힙의 메타공간에 있는 클래스 로더의 통계를 표시합니다. 🎜🎜class_loader: Java 가상 머신이 실행 중일 때 클래스 로더 객체의 주소
classes: 로드된 클래스 수bytes: 이 클래스 로더가 로드한 모든 클래스의 메타데이터가 차지하는 바이트 수
parent_loader: null가 표시되지 않는 경우 상위 클래스 로더 객체의 주소입니다.
alive: 클래스 로더 객체가 가비지 수집되는지 여부를 나타내는 플래그입니다.
유형: 클래스 로더의 클래스 이름입니다. 🎜🎜예: 🎜🎜🎜🎜 - finalizerinfo🎜🎜 F-Queue에서 Finalizer 스레드가 finalize 메서드를 실행하기를 기다리고 있는 객체를 표시합니다. 예: 🎜🎜Java의 jmap 명령 사용 방법🎜🎜-dump : [live,]format=b,file=🎜🎜Java Virtual Machine의 힙 덤프 스냅샷 덤프 파일을 생성합니다. 구체적인 지침은 다음과 같습니다. 🎜
  • 🎜live 매개변수를 지정하면 힙의 활성 개체만 덤프됩니다. 그렇지 않은 경우 지정되면 힙의 모든 개체가 덤프됩니다. 🎜
  • 🎜format=b는 Java 힙 메모리를 hprof 바이너리 형식으로 덤프하는 것을 의미합니다. 🎜
  • 🎜file=<filename></filename>은 스냅샷 덤프 파일의 파일 이름을 지정하는 데 사용됩니다. 🎜
🎜예: 🎜🎜Java의 jmap 명령 🎜🎜-F🎜🎜 강제 모드 사용 방법입니다. 지정된 pid가 응답하지 않으면 -dump 또는 -histo와 함께 사용할 수 있습니다. 이 모드에서는 라이브 매개변수가 지원되지 않습니다. 예: 🎜🎜🎜🎜🎜-h 및 -help🎜🎜는 jinfo 명령에 대한 도움말 정보를 표시합니다. 🎜

위 내용은 Java에서 jmap 명령을 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제