2016-05-09 6 views
0

Ich möchte den gc-Aktivitätsstatus meiner laufenden Anwendung von einem Punktschnittansatz erhalten. Die Information, die ich benötige, ist die Zeit, die für das junge Gen GC und die volle GC benötigt wird, wie im jstat -Gutil.Wie man java jstat -gcutil Ergebnis programmatisch erhält

Ich stolperte über diese Klasse ManagementFactory.getGarbageCollectorMXBeans aber es ist Sammler basiert, wo die Sammlung Zeit umfasst sowohl junge und vollständige GC.

+1

Sie können mit dem [Jstat.java] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/sun/tools/jstat/Jstat beginnen. Java /) Quelle und erstellen Sie einen Wrapper um ihn herum. (Vorschlag nicht weiter untersucht, aber es scheint machbar) – SubOptimal

+0

@SubOptimal Kann versuchen – bLaXjack

Antwort

0

jstat verwendet so genannte JVM-Leistungsindikatoren. Sie können programmgesteuert zugreifen.

  • add tools.jar von JDK
  • Verwendung sun.misc.Perf Klasse Classpath Zähler von Zielprozess für den Zugriff auf

Vor einiger Zeit habe ich geschrieben Bibliothek einige APIs Einwickeln in tools.jar Schauen Sie sich https://github.com/gridkit/jvm-attach und perf data example insbesondere an.

PS Ähnliche Informationen können von MBeans abgerufen werden, junge und alte Sammler haben unterschiedliche MBean, so dass Sie sie separat verfolgen können. Darüber hinaus können MBeans Benachrichtigungen zu GC-Ereignissen senden.

+0

wird diese API bewerten. Danke dafür. – bLaXjack

Verwandte Themen