---
title: 'Kommandozeilenprogramm jcmd für Diagnosekommandos'
url: 'https://www.tutego.de/blog/javainsel/2013/07/kommandozeilenprogramm-jcmd-fr-diagnosekommandos'
markdown: 'https://www.tutego.de/blog/javainsel/2013/07/kommandozeilenprogramm-jcmd-fr-diagnosekommandos.md'
date: '2013-07-06'
description: 'Mit dem Kommandozeilenprogramm jcmd lassen sich Diagnosekommandos zu einer laufenden JVM schicken. Die Java-Programme werden wieder über eine PID identifiziert, die jcmd auch anzeigen kann: $ jcmd.exe 2484 C:\Users\Christian\eclipse\\plugins/org.eclipse.equinox... 18868 sun.tools.jcmd.JCmd Eclipse …'
taxonomy:
  category:
    - Insel
---

# Kommandozeilenprogramm jcmd für Diagnosekommandos

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://www.tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://www.tutego.de/blog/javainsel/)

## Kommandozeilenprogramm jcmd für Diagnosekommandos

06.07.2013 · [Christian Ullenboom](https://www.tutego.de/blog/javainsel/author/admin/)

Mit dem Kommandozeilenprogramm jcmd lassen sich Diagnosekommandos zu einer laufenden JVM schicken. Die Java-Programme werden wieder über eine PID identifiziert, die jcmd auch anzeigen kann:

```bash
$ jcmd.exe
```

```text
2484 C:\Users\Christian\eclipse\\plugins/org.eclipse.equinox...
```

```text
18868 sun.tools.jcmd.JCmd
```

Eclipse hat die PID 2484 und das Tool selbst – das bei jedem Starten natürlich eine neue PID bekommt – 18868.

Interessant wird jcmd dadurch, dass sich Diagnose-Kommandos senden lassen. Als erstes steht die PID, dann folgt das Kommando. Um ein Übersicht über die Häufigkeit von geladen Klassen zu bekommen ist GC.class\_histogram zu nutzen:

```bash
$ jcmd.exe 2484 GC.class_histogram
```

```text
2484:
```

```text
num #instances #bytes class name
```

```text
----------------------------------------------
```

```text
1: 600676 40906520 [C
```

```text
2: 549996 13199904 java.lang.String
```

```text
3: 121570 4862800 java.util.WeakHashMap$Entry
```

```text
4: 117120 3747840 java.lang.ref.WeakReference
```

```text
5: 63926 2730616 [Ljava.lang.String;
```

```text
...
```

Auf der Hilfeseite sind die Kommandos nicht aufgeführt, weil sie abhängig von der jeweiligen JVM sind und nicht im Tool jcmd selbst verankert sind. Daher müssen sie dynamisch von einem laufenden Java-Programm erfragt werden. Unser Elcipse-Prozess hatte die PID 2484, und dann kommt die Option help zum Einsatz:

```bash
$ jcmd.exe 2484 help
```

```text
2484:
```

```text
The following commands are available:
```

```text
VM.native_memory
```

```text
VM.check_commercial_features
```

```text
VM.unlock_commercial_features
```

```text
ManagementAgent.stop
```

```text
ManagementAgent.start_local
```

```text
ManagementAgent.start
```

```text
Thread.print
```

```text
GC.class_stats
```

```text
GC.class_histogram
```

```text
GC.heap_dump
```

```text
GC.run_finalization
```

```text
GC.run
```

```text
VM.uptime
```

```text
VM.flags
```

```text
VM.system_properties
```

```text
VM.command_line
```

```text
VM.version
```

```text
help
```

```text
For more information about a specific command use 'help '.
```

Wie die letzte Zeile verrät, gibt ein angehängtes Kommando weitere Informationen, etwa

```bash
$ jcmd.exe 2484 help GC.heap_dump
```

```text
2484:
```

```text
GC.heap_dump
```

```text
Generate a HPROF format dump of the Java heap.
```

```text
Impact: High: Depends on Java heap size and content. Request a full GC unless th
```

```text
e '-all' option is specified.
```

```text
Permission: java.lang.management.ManagementPermission(monitor)
```

```text
Syntax : GC.heap_dump [options] 
```

```text
Arguments:
```

```text
filename : Name of the dump file (STRING, no default value)
```

```text
Options: (options must be specified using the  or = syntax)
```

```text
-all : [optional] Dump all objects, including unreachable objects (BOOLE
```

```text
AN, false)
```

Kategorien: [Insel](https://www.tutego.de/blog/javainsel/category/insel/)

[← Alle Beiträge](https://www.tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Was ist eine Oracle JDK/JRE Certified System Configuration?](https://www.tutego.de/blog/javainsel/2013/07/was-ist-eine-oracle-jdkjre-certified-system-configuration.md)
- Next: [Überblick: Aktuelle Versionen der Java EE 7 Technologien](https://www.tutego.de/blog/javainsel/2013/07/berblick-aktuelle-versionen-der-java-ee-7-technologien.md)
