Introduction

The following are the events for OpenJDK 18 (jdk-18.0.3+0, permalink, 30-August-2026). The events are collected from the event configuration and the source code. Visit the jfreventcollector repository for more information. This is also where you can contribute additional event descriptions, if you don't want to contribute them directly to the OpenJDK. The site generator lives on GitHub, too.

This page is maintained by Johannes Bechberger of the SapMachine team at SAP and contributors.

Some events have fake end times/durations; these are hidden in the event description here.

Flight Recorder

DumpReason

profiling default startTime 11 17 21 25 27 28

Category: Flight Recorder

Who requested the recording and why

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.cpp:

static void post_events(bool exception_handler, Thread* thread) {
  if (exception_handler) {
    EventShutdown e;
    e.set_reason("VM Error");
    e.commit();
  } else {
    // OOM
    LeakProfiler::emit_events(max_jlong, false, false);
  }
  EventDumpReason event;
  event.set_reason(exception_handler ? "Crash" : "Out of Memory");
  event.set_recordingId(-1);
  event.commit();
}

void JfrEmergencyDump::on_vm_shutdown(bool exception_handler) {
  if (!guard_reentrancy()) {
    return;
  }
  Thread* thread = Thread::current_or_null_safe();
  if (thread == NULL) {

Configuration enabled
profiling true
default true

Field Type Description
reason string Reason Reason for writing recording data to disk
recordingId int Recording Id Id of the recording that triggered the dump, or -1 if it was not related to a recording

DataLoss

profiling default startTime 11 17 21 25 27 28

Category: Flight Recorder

Data could not be copied out from a buffer, typically because of contention

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/recorder/storage/jfrStorage.cpp:

      assert(!buffer->transient(), "invariant");
      assert(buffer->lease(), "invariant");
      storage_instance.control().increment_leased();
      return buffer;
    }
  }
  return acquire_transient(size, thread);
}

static void write_data_loss_event(JfrBuffer* buffer, u8 unflushed_size, Thread* thread) {
  assert(buffer != NULL, "invariant");
  assert(buffer->empty(), "invariant");
  const u8 total_data_loss = thread->jfr_thread_local()->add_data_lost(unflushed_size);
  if (EventDataLoss::is_enabled()) {
    JfrNativeEventWriter writer(buffer, thread);
    writer.begin_event_write(false);
    writer.write<u8>(EventDataLoss::eventId);
    writer.write(JfrTicks::now());
    writer.write(unflushed_size);
    writer.write(total_data_loss);
    writer.end_event_write(false);
  }
}

static void write_data_loss(BufferPtr buffer, Thread* thread) {
  assert(buffer != NULL, "invariant");
  const size_t unflushed_size = buffer->unflushed_size();
  buffer->reinitialize();

Configuration enabled
profiling true
default true

Field Type Description
amount ulong: bytes Amount Amount lost data
total ulong: bytes Total Total lost amount for thread

Flush

experimental startTime duration 14 17 21 25 27 28

Category: Flight Recorder

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/recorder/service/jfrRecorderService.cpp:

template <typename Functor>
static u4 invoke(Functor& f) {
  f.process();
  return f.elements();
}

template <typename Functor>
static u4 invoke_with_flush_event(Functor& f) {
  const u4 elements = invoke(f);
  EventFlush e(UNTIMED);
  e.set_starttime(f.start_time());
  e.set_endtime(f.end_time());
  e.set_flushId(flushpoint_id);
  e.set_elements(f.elements());
  e.set_size(f.size());
  e.commit();
  return elements;
}

class StackTraceRepository : public StackObj {
 private:

Configuration enabled threshold
profiling false 0 ns
default false 0 ns

Field Type Description
flushId ulong Flush Identifier
elements ulong Elements Written
size ulong: bytes Size Written

Examples 3
elements ulong
5932
flushId ulong
256
size ulong: bytes
980852
startTime long: millis
681554548518
elements ulong
17127
flushId ulong
1
size ulong: bytes
1684726
startTime long: millis
1248524126
elements ulong
4273
flushId ulong
246
size ulong: bytes
601193
startTime long: millis
332357433658

ActiveRecording

profiling default startTime duration stackTrace 11 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/ActiveRecordingEvent.java

Category: Flight Recorder

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

        X509ValidationEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,
        ErrorThrownEvent.class,
        ActiveSettingEvent.class,
        ActiveRecordingEvent.class,
        jdk.internal.event.DeserializationEvent.class,
        jdk.internal.event.ProcessStartEvent.class,
        jdk.internal.event.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,
        jdk.internal.event.X509CertificateEvent.class,
        jdk.internal.event.X509ValidationEvent.class,

        DirectBufferStatisticsEvent.class
    };

    // This is a list of the classes with instrumentation code that should be applied.

src/jdk.jfr/share/classes/jdk/jfr/events/ActiveRecordingEvent.java:

@Name(Type.EVENT_NAME_PREFIX + "ActiveRecording")
@Label("Flight Recording")
@Category("Flight Recorder")
@StackTrace(false)
public final class ActiveRecordingEvent extends AbstractJDKEvent {

    // To be accessed when holding recorder lock
    public static final ActiveRecordingEvent EVENT = new ActiveRecordingEvent();

    @Label("Id")
    public long id;

    @Label("Name")
    public String name;

    @Label("Destination")
    public String destination;

    @Label("Max Age")

src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformRecorder.java:

    private RepositoryChunk currentChunk;
    private boolean inShutdown;

    public PlatformRecorder() throws Exception {
        repository = Repository.getRepository();
        Logger.log(JFR_SYSTEM, INFO, "Initialized disk repository");
        repository.ensureRepository();
        jvm.createNativeJFR();
        Logger.log(JFR_SYSTEM, INFO, "Created native");
        JDKEvents.initialize();
        Logger.log(JFR_SYSTEM, INFO, "Registered JDK events");
        JDKEvents.addInstrumentation();
        startDiskMonitor();
        activeRecordingEvent = EventType.getEventType(ActiveRecordingEvent.class);
        activeSettingEvent = EventType.getEventType(ActiveSettingEvent.class);
        shutdownHook = SecuritySupport.createThreadWitNoPermissions("JFR Shutdown Hook", new ShutdownHook(this));
        SecuritySupport.setUncaughtExceptionHandler(shutdownHook, new ShutdownHook.ExceptionHandler());
        SecuritySupport.registerShutdownHook(shutdownHook);

    }


    private static Timer createTimer() {
        try {
            List<Timer> result = new CopyOnWriteArrayList<>();

src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformRecorder.java:

    private void finishChunk(RepositoryChunk chunk, Instant time, PlatformRecording ignoreMe) {
        chunk.finish(time);
        for (PlatformRecording r : getRecordings()) {
            if (r != ignoreMe && r.getState() == RecordingState.RUNNING) {
                r.appendChunk(chunk);
            }
        }
        FilePurger.purge();
    }

    private void writeMetaEvents() {
        if (activeRecordingEvent.isEnabled()) {
            ActiveRecordingEvent event = ActiveRecordingEvent.EVENT;
            for (PlatformRecording r : getRecordings()) {
                if (r.getState() == RecordingState.RUNNING && r.shouldWriteMetadataEvent()) {
                    event.id = r.getId();
                    event.name = r.getName();
                    WriteableUserPath p = r.getDestination();
                    event.destination = p == null ? null : p.getRealPathText();
                    Duration d = r.getDuration();
                    event.recordingDuration = d == null ? Long.MAX_VALUE : d.toMillis();
                    Duration age = r.getMaxAge();
                    event.maxAge = age == null ? Long.MAX_VALUE : age.toMillis();
                    Long size = r.getMaxSize();

Configuration enabled
profiling true
default true

Field Type Description
id long Id
name string Name
destination string Destination
maxAge long: millis Max Age
flushInterval long: millis 14+ Flush Interval
maxSize long: bytes Max Size
recordingStart long: epochmillis Start Time
recordingDuration long: millis Recording Duration

Examples 3
destination string
/home/runner/work/jfrevents/jfrevents/jfr/sample_linux_UseG1GC_events.jfr
flushInterval long: millis
1000
id long
1
maxAge long: millis
9223372036854775807
maxSize long: bytes
0
name string
1
recordingDuration long: millis
27000
recordingStart long: epochmillis
1788050011190
startTime long: millis
268965684
destination string
/home/runner/work/jfrevents/jfrevents/jfr/sample_linux_UseParallelGC.jfr
flushInterval long: millis
1000
id long
1
maxAge long: millis
9223372036854775807
maxSize long: bytes
262144000
name string
1
recordingDuration long: millis
9223372036854775807
recordingStart long: epochmillis
1788049633289
startTime long: millis
633343778503
destination string
/home/runner/work/jfrevents/jfrevents/jfr/sample_linux_UseG1GC.jfr
flushInterval long: millis
1000
id long
1
maxAge long: millis
9223372036854775807
maxSize long: bytes
262144000
name string
1
recordingDuration long: millis
9223372036854775807
recordingStart long: epochmillis
1788049635062
startTime long: millis
331692293140

ActiveSetting

profiling default startTime duration stackTrace 11 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/ActiveSettingEvent.java

Category: Flight Recorder

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

        X509CertificateEvent.class,
        X509ValidationEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,
        ErrorThrownEvent.class,
        ActiveSettingEvent.class,
        ActiveRecordingEvent.class,
        jdk.internal.event.DeserializationEvent.class,
        jdk.internal.event.ProcessStartEvent.class,
        jdk.internal.event.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,
        jdk.internal.event.X509CertificateEvent.class,
        jdk.internal.event.X509ValidationEvent.class,

        DirectBufferStatisticsEvent.class
    };

src/jdk.jfr/share/classes/jdk/jfr/events/ActiveSettingEvent.java:

package jdk.jfr.events;

import jdk.jfr.Category;
import jdk.jfr.Label;
import jdk.jfr.Name;
import jdk.jfr.StackTrace;
import jdk.jfr.internal.Type;

@Name(Type.EVENT_NAME_PREFIX + "ActiveSetting")
@Label("Recording Setting")
@Category("Flight Recorder")
@StackTrace(false)
public final class ActiveSettingEvent extends AbstractJDKEvent {

    public static final ThreadLocal<ActiveSettingEvent> EVENT = new ThreadLocal<ActiveSettingEvent>() {
        @Override
        protected ActiveSettingEvent initialValue() {
            return new ActiveSettingEvent();
        }
    };

    @Label("Event Id")
    public long id;

    @Label("Setting Name")
    public String name;

    @Label("Setting Value")
    public String value;

src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformRecorder.java:

    private boolean inShutdown;

    public PlatformRecorder() throws Exception {
        repository = Repository.getRepository();
        Logger.log(JFR_SYSTEM, INFO, "Initialized disk repository");
        repository.ensureRepository();
        jvm.createNativeJFR();
        Logger.log(JFR_SYSTEM, INFO, "Created native");
        JDKEvents.initialize();
        Logger.log(JFR_SYSTEM, INFO, "Registered JDK events");
        JDKEvents.addInstrumentation();
        startDiskMonitor();
        activeRecordingEvent = EventType.getEventType(ActiveRecordingEvent.class);
        activeSettingEvent = EventType.getEventType(ActiveSettingEvent.class);
        shutdownHook = SecuritySupport.createThreadWitNoPermissions("JFR Shutdown Hook", new ShutdownHook(this));
        SecuritySupport.setUncaughtExceptionHandler(shutdownHook, new ShutdownHook.ExceptionHandler());
        SecuritySupport.registerShutdownHook(shutdownHook);

    }


    private static Timer createTimer() {
        try {
            List<Timer> result = new CopyOnWriteArrayList<>();
            Thread t = SecuritySupport.createThreadWitNoPermissions("Permissionless thread", ()-> {

src/jdk.jfr/share/classes/jdk/jfr/internal/EventControl.java:

    void disable() {
        for (NamedControl nc : namedControls) {
            if (nc.control.isType(EnabledSetting.class)) {
                nc.control.setValue("false");
                return;
            }
        }
    }

    void writeActiveSettingEvent() {
        if (!type.isRegistered()) {
            return;
        }
        ActiveSettingEvent event = ActiveSettingEvent.EVENT.get();
        for (NamedControl nc : namedControls) {
            if (Utils.isSettingVisible(nc.control, type.hasEventHook()) && type.isVisible()) {
                String value = nc.control.getLastValue();
                if (value == null) {
                    value = nc.control.getDefaultValue();
                }
                event.id = type.getId();
                event.name = nc.name;
                event.value = value;
                event.commit();
            }

Configuration enabled
profiling true
default true

Field Type Description
id long Event Id
name string Setting Name
value string Setting Value

Examples 3
id long
153
name string
stackTrace
startTime long: millis
268965684
value string
true
id long
68
name string
enabled
startTime long: millis
330130229258
value string
true
id long
167
name string
enabled
startTime long: millis
623773870622
value string
true

JVM

JVMInformation

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine

Description of JVM and the Java application

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

#if INCLUDE_SHENANDOAHGC
#include "gc/shenandoah/shenandoahJfrSupport.hpp"
#endif
/**
 *  JfrPeriodic class
 *  Implementation of declarations in
 *  xsl generated traceRequestables.hpp
 */
#define TRACE_REQUEST_FUNC(id)    void JfrPeriodicEventSet::request##id(void)

TRACE_REQUEST_FUNC(JVMInformation) {
  ResourceMark rm;
  EventJVMInformation event;
  event.set_jvmName(VM_Version::vm_name());
  event.set_jvmVersion(VM_Version::internal_vm_info_string());
  event.set_javaArguments(Arguments::java_command());
  event.set_jvmArguments(Arguments::jvm_args());
  event.set_jvmFlags(Arguments::jvm_flags());
  event.set_jvmStartTime(Management::vm_init_done_time());
  event.set_pid(os::current_process_id());
  event.commit();
 }

TRACE_REQUEST_FUNC(OSInformation) {

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
jvmName string JVM Name
jvmVersion string JVM Version
jvmArguments string JVM Command Line Arguments
jvmFlags string JVM Settings File Arguments
javaArguments string Java Application Arguments
jvmStartTime long: epochmillis JVM Start Time
pid long Process Identifier

Examples 3
javaArguments string
/home/runner/work/jfrevents/jfrevents/.cache/renaissance.jar -t 5 -r 1 all
jvmArguments string
-XX:StartFlightRecording=filename=/home/runner/work/jfrevents/jfrevents/jfr/sample_linux_UseParallelGC.jfr,settings=/home/runner/work/jfrevents/jfrevents/.cache/jfc.jfc -XX:+UseParallelGC
jvmFlags string
null
jvmName string
OpenJDK 64-Bit Server VM
jvmStartTime long: epochmillis
1788049632948
jvmVersion string
OpenJDK 64-Bit Server VM (25.0.4.1+1-LTS) for linux-amd64 JRE (25.0.4.1+1-LTS), built on 2026-08-14T07:36:00Z with gcc 14.2.0
pid long
2385
startTime long: millis
638748739973
javaArguments string
/home/runner/work/jfrevents/jfrevents/.cache/jfr_sample_app.jar
jvmArguments string
--add-exports=java.base/jdk.internal.vm.annotation=ALL-UNNAMED -Djdk.attach.allowAttachSelf=true -XX:+UnlockDiagnosticVMOptions -XX:DiagnoseSyncOnValueBasedClasses=2 -XX:NativeMemoryTracking=summary -XX:StartFlightRecording=filename=/home/runner/work/jfrevents/jfrevents/jfr/sample_linux_UseG1GC_even
jvmFlags string
null
jvmName string
OpenJDK 64-Bit Server VM
jvmStartTime long: epochmillis
1788050010939
jvmVersion string
OpenJDK 64-Bit Server VM (25.0.4.1+1-LTS) for linux-amd64 JRE (25.0.4.1+1-LTS), built on 2026-08-14T07:36:00Z with gcc 14.2.0
pid long
4573
startTime long: millis
16507449498
javaArguments string
/home/runner/work/jfrevents/jfrevents/.cache/renaissance.jar -t 5 -r 1 all
jvmArguments string
-XX:StartFlightRecording=filename=/home/runner/work/jfrevents/jfrevents/jfr/sample_linux_UseG1GC.jfr,settings=/home/runner/work/jfrevents/jfrevents/.cache/jfc.jfc -XX:+UseG1GC
jvmFlags string
null
jvmName string
OpenJDK 64-Bit Server VM
jvmStartTime long: epochmillis
1788049634777
jvmVersion string
OpenJDK 64-Bit Server VM (25.0.4.1+1-LTS) for linux-amd64 JRE (25.0.4.1+1-LTS), built on 2026-08-14T07:36:00Z with gcc 14.2.0
pid long
2135
startTime long: millis
371880182792

InitialSystemProperty

profiling default startTime end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine

System Property at JVM start

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

  jlong max_size = conf.has_max_size_default_value() ? jmc_undefined_long : conf.max_size();
  EventYoungGenerationConfiguration event;
  event.set_maxSize((u8)max_size);
  event.set_minSize(conf.min_size());
  event.set_newRatio(conf.new_ratio());
  event.commit();
}

TRACE_REQUEST_FUNC(InitialSystemProperty) {
  SystemProperty* p = Arguments::system_properties();
  JfrTicks time_stamp = JfrTicks::now();
  while (p !=  NULL) {
    if (!p->internal()) {
      EventInitialSystemProperty event(UNTIMED);
      event.set_key(p->key());
      event.set_value(p->value());
      event.set_endtime(time_stamp);
      event.commit();
    }
    p = p->next();
  }
}

TRACE_REQUEST_FUNC(ThreadAllocationStatistics) {
  ResourceMark rm;

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
key string Key
value string Value

Examples 3
key string
java.vm.version
startTime long: millis
627353953830
value string
25.0.4.1+1-LTS
key string
jdk.debug
startTime long: millis
331693869189
value string
release
key string
java.vm.version
startTime long: millis
270692556
value string
25.0.4.1+1-LTS

JVM: Class Loading

ClassLoad

startTime duration eventThread stackTrace 11 17 21 25 27 28

Category: Java Virtual Machine / Class Loading

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/classfile/systemDictionary.hpp:

//

class BootstrapInfo;
class ClassFileStream;
class ClassLoadInfo;
class Dictionary;
template <MEMFLAGS F> class HashtableBucket;
class ResolutionErrorTable;
class SymbolPropertyTable;
class PackageEntry;
class ProtectionDomainCacheTable;
class ProtectionDomainCacheEntry;
class GCTimer;
class EventClassLoad;
class Symbol;
class TableStatistics;

class SystemDictionary : AllStatic {
  friend class BootstrapInfo;
  friend class vmClasses;
  friend class VMStructs;

 public:

  // Returns a class with a given class name and class loader.  Loads the

src/hotspot/share/classfile/systemDictionary.hpp:

                                           Handle class_loader);
  static bool check_shared_class_super_type(InstanceKlass* klass, InstanceKlass* super,
                                            Handle class_loader,  Handle protection_domain,
                                            bool is_superclass, TRAPS);
  static bool check_shared_class_super_types(InstanceKlass* ik, Handle class_loader,
                                               Handle protection_domain, TRAPS);
  // Second part of load_shared_class
  static void load_shared_class_misc(InstanceKlass* ik, ClassLoaderData* loader_data) NOT_CDS_RETURN;
protected:
  // Used by SystemDictionaryShared

  static bool add_loader_constraint(Symbol* name, Klass* klass_being_linked,  Handle loader1,
                                    Handle loader2);
  static void post_class_load_event(EventClassLoad* event, const InstanceKlass* k, const ClassLoaderData* init_cld);
  static InstanceKlass* load_shared_lambda_proxy_class(InstanceKlass* ik,
                                                       Handle class_loader,
                                                       Handle protection_domain,
                                                       PackageEntry* pkg_entry,
                                                       TRAPS);
  static InstanceKlass* load_shared_class(InstanceKlass* ik,
                                          Handle class_loader,
                                          Handle protection_domain,
                                          const ClassFileStream *cfs,
                                          PackageEntry* pkg_entry,
                                          TRAPS);

src/hotspot/share/classfile/systemDictionary.cpp:

        InstanceKlass* check = loader_data->dictionary()->find_class(name_hash, name);
        if (check != NULL) {
          // Klass is already loaded, so just return it
          return check;
        }
        // check if other thread failed to load and cleaned up
        oldprobe = placeholders()->get_entry(name_hash, name, loader_data);
      }
    }
  }
  return NULL;
}

void SystemDictionary::post_class_load_event(EventClassLoad* event, const InstanceKlass* k, const ClassLoaderData* init_cld) {
  assert(event != NULL, "invariant");
  assert(k != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  event->set_loadedClass(k);
  event->set_definingClassLoader(k->class_loader_data());
  event->set_initiatingClassLoader(init_cld);
  event->commit();
}

// SystemDictionary::resolve_instance_class_or_null is the main function for class name resolution.
// After checking if the InstanceKlass already exists, it checks for ClassCircularityError and
// whether the thread must wait for loading in parallel.  It eventually calls load_instance_class,
// which will load the class via the bootstrap loader or call ClassLoader.loadClass().
// This can return NULL, an exception or an InstanceKlass.
InstanceKlass* SystemDictionary::resolve_instance_class_or_null(Symbol* name,
                                                                Handle class_loader,
                                                                Handle protection_domain,
                                                                TRAPS) {
  // name must be in the form of "java/lang/Object" -- cannot be "Ljava/lang/Object;"
  assert(name != NULL && !Signature::is_array(name) &&
         !Signature::has_envelope(name), "invalid class name");

  EventClassLoad class_load_start_event;

  HandleMark hm(THREAD);

  // Fix for 4474172; see evaluation for more details
  class_loader = Handle(THREAD, java_lang_ClassLoader::non_reflection_class_loader(class_loader()));
  ClassLoaderData* loader_data = register_loader(class_loader);
  Dictionary* dictionary = loader_data->dictionary();
  unsigned int name_hash = dictionary->compute_hash(name);

  // Do lookup to see if class already exists and the protection domain
  // has the right access.

src/hotspot/share/classfile/systemDictionary.cpp:

// Note: this method is much like resolve_class_from_stream, but
// does not publish the classes in the SystemDictionary.
// Handles Lookup.defineClass hidden.
InstanceKlass* SystemDictionary::resolve_hidden_class_from_stream(
                                                     ClassFileStream* st,
                                                     Symbol* class_name,
                                                     Handle class_loader,
                                                     const ClassLoadInfo& cl_info,
                                                     TRAPS) {

  EventClassLoad class_load_start_event;
  ClassLoaderData* loader_data;

  // - for hidden classes that are not strong: create a new CLD that has a class holder and
  //                                           whose loader is the Lookup class's loader.
  // - for hidden class: add the class to the Lookup class's loader's CLD.
  assert (cl_info.is_hidden(), "only used for hidden classes");
  bool create_mirror_cld = !cl_info.is_strong_hidden();
  loader_data = register_loader(class_loader, create_mirror_cld);

  assert(st != NULL, "invariant");
  assert(st->need_verify(), "invariant");

src/hotspot/share/classfile/systemDictionaryShared.cpp:

  InstanceKlass* loaded_lambda =
    SystemDictionary::load_shared_lambda_proxy_class(lambda_ik, class_loader, protection_domain, pkg_entry, CHECK_NULL);

  if (loaded_lambda == NULL) {
    return NULL;
  }

  // Ensures the nest host is the same as the lambda proxy's
  // nest host recorded at dump time.
  InstanceKlass* nest_host = caller_ik->nest_host(THREAD);
  assert(nest_host == shared_nest_host, "mismatched nest host");

  EventClassLoad class_load_start_event;
  {
    MutexLocker mu_r(THREAD, Compile_lock);

    // Add to class hierarchy, and do possible deoptimizations.
    SystemDictionary::add_to_hierarchy(loaded_lambda);
    // But, do not add to dictionary.
  }
  loaded_lambda->link_class(CHECK_NULL);
  // notify jvmti
  if (JvmtiExport::should_post_class_load()) {
    JvmtiExport::post_class_load(THREAD, loaded_lambda);

Configuration enabled stackTrace threshold
profiling false true 0 ms
default false true 0 ms

Field Type Description
loadedClass Class Loaded Class
definingClassLoader ClassLoader Defining Class Loader
initiatingClassLoader ClassLoader Initiating Class Loader

Examples 3
definingClassLoader ClassLoader
null
initiatingClassLoader ClassLoader
null
loadedClass Class
classLoader ClassLoader
null
hidden boolean
true
modifiers int
16
name string
java.lang.invoke.LambdaForm$MH/0x0000000072afec00
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang/invoke
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/ClassLoader;Ljava/lang/Class;Ljava/lang/String;[BIILjava/security/ProtectionDomain;ZILjava/lang/Object;)Ljava/lang/Class;
hidden boolean
false
modifiers int
264
name string
defineClass0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1025
name string
java/lang/ClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Native
truncated boolean
true
startTime long: millis
330375854181
definingClassLoader ClassLoader
name string
bootstrap
type Class
null
initiatingClassLoader ClassLoader
name string
bootstrap
type Class
null
loadedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
8
name string
java/util/Collections$SynchronizedSet
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
2415
method Method
descriptor string
(Ljava/util/Set;Ljava/lang/Object;)Ljava/util/Set;
hidden boolean
false
modifiers int
8
name string
synchronizedSet
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/util/Collections
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
284097241
definingClassLoader ClassLoader
null
initiatingClassLoader ClassLoader
null
loadedClass Class
classLoader ClassLoader
null
hidden boolean
true
modifiers int
16
name string
java.lang.invoke.LambdaForm$MH/0x0000000061ad4400
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang/invoke
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/ClassLoader;Ljava/lang/Class;Ljava/lang/String;[BIILjava/security/ProtectionDomain;ZILjava/lang/Object;)Ljava/lang/Class;
hidden boolean
false
modifiers int
264
name string
defineClass0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1025
name string
java/lang/ClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
626673295168

ClassDefine

startTime eventThread stackTrace 11 17 21 25 27 28

Category: Java Virtual Machine / Class Loading

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/classfile/systemDictionary.cpp:

      // during compilations.
      MutexLocker mu(THREAD, Compile_lock);
      update_dictionary(name_hash, loaded_class, class_loader);
    }

    if (JvmtiExport::should_post_class_load()) {
      JvmtiExport::post_class_load(THREAD, loaded_class);
    }
  }
  return loaded_class;
}

static void post_class_define_event(InstanceKlass* k, const ClassLoaderData* def_cld) {
  EventClassDefine event;
  if (event.should_commit()) {
    event.set_definedClass(k);
    event.set_definingClassLoader(def_cld);
    event.commit();
  }
}

void SystemDictionary::define_instance_class(InstanceKlass* k, Handle class_loader, TRAPS) {

  ClassLoaderData* loader_data = k->class_loader_data();
  assert(loader_data->class_loader() == class_loader(), "they must be the same");

Configuration enabled stackTrace
profiling false true
default false true

Field Type Description
definedClass Class Defined Class
definingClassLoader ClassLoader Defining Class Loader

Examples 3
definedClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
17
name string
org/apache/spark/scheduler/StopCoordinator$
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/spark/scheduler
definingClassLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/ClassLoader;Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class;
hidden boolean
false
modifiers int
264
name string
defineClass1
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1025
name string
java/lang/ClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
664227295573
definedClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
0
name string
io/netty/channel/AbstractChannelHandlerContext$11
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
io/netty/channel
definingClassLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/ClassLoader;Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class;
hidden boolean
false
modifiers int
264
name string
defineClass1
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1025
name string
java/lang/ClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
351771707779
definedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
8
name string
jdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer
package Package
exported boolean
false
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/math
definingClassLoader ClassLoader
name string
bootstrap
type Class
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
40
lineNumber int
251
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
<clinit>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
jdk/internal/math/FloatingDecimal
package Package
exported boolean
false
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/math
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
292583046

ClassRedefinition

profiling default startTime 15 17 21 25 27 28

Category: Java Virtual Machine / Class Loading

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/prims/jvmtiRedefineClasses.cpp:

  _timer_rsc_phase1.stop();
  if (log_is_enabled(Info, redefine, class, timer)) {
    _timer_rsc_phase2.start();
  }

  if (the_class->oop_map_cache() != NULL) {
    // Flush references to any obsolete methods from the oop map cache
    // so that obsolete methods are not pinned.
    the_class->oop_map_cache()->flush_obsolete_entries();
  }

  increment_class_counter(the_class);

  if (EventClassRedefinition::is_enabled()) {
    EventClassRedefinition event;
    event.set_classModificationCount(java_lang_Class::classRedefinedCount(the_class->java_mirror()));
    event.set_redefinedClass(the_class);
    event.set_redefinitionId(_id);
    event.commit();
  }

  {
    ResourceMark rm(current);
    // increment the classRedefinedCount field in the_class and in any
    // direct and indirect subclasses of the_class
    log_info(redefine, class, load)

Configuration enabled
profiling true
default true

Field Type Description
redefinedClass Class Redefined Class
classModificationCount int Class Modification Count The number of times the class has changed
redefinitionId ulong Class Redefinition Id

Examples 3
classModificationCount int
2
redefinedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/ArrayList
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util
redefinitionId ulong
2
startTime long: millis
1056066193
classModificationCount int
2
redefinedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/ArrayList
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util
redefinitionId ulong
2
startTime long: millis
1261652727
classModificationCount int
1
redefinedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/ArrayList
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util
redefinitionId ulong
1
startTime long: millis
1301302818

RedefineClasses

profiling default startTime duration eventThread stackTrace 15 17 21 25 27 28

Category: Java Virtual Machine / Class Loading

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/prims/jvmtiEnv.cpp:

    event.set_classCount(class_count);
    event.set_redefinitionId(op.id());
    event.commit();
  }
  return error;
} /* end RetransformClasses */


// class_count - pre-checked to be greater than or equal to 0
// class_definitions - pre-checked for NULL
jvmtiError
JvmtiEnv::RedefineClasses(jint class_count, const jvmtiClassDefinition* class_definitions) {
//TODO: add locking
  EventRedefineClasses event;
  VM_RedefineClasses op(class_count, class_definitions, jvmti_class_load_kind_redefine);
  VMThread::execute(&op);
  jvmtiError error = op.check_error();
  if (error == JVMTI_ERROR_NONE) {
    event.set_classCount(class_count);
    event.set_redefinitionId(op.id());
    event.commit();
  }
  return error;
} /* end RedefineClasses */

Configuration enabled stackTrace threshold
profiling true true 0 ms
default true true 0 ms

Field Type Description
classCount int Class Count
redefinitionId ulong Class Redefinition Id

Examples 3
classCount int
1
redefinitionId ulong
2
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(J[Ljava/lang/instrument/ClassDefinition;)V
hidden boolean
false
modifiers int
258
name string
redefineClasses0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
sun/instrument/InstrumentationImpl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.instrument
name string
java.instrument
version string
25.0.4.1
name string
sun/instrument
type FrameType
Native
truncated boolean
false
startTime long: millis
1258816712
classCount int
1
redefinitionId ulong
2
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(J[Ljava/lang/instrument/ClassDefinition;)V
hidden boolean
false
modifiers int
258
name string
redefineClasses0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
sun/instrument/InstrumentationImpl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.instrument
name string
java.instrument
version string
25.0.4.1
name string
sun/instrument
type FrameType
Native
truncated boolean
false
startTime long: millis
1053806356
classCount int
1
redefinitionId ulong
2
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(J[Ljava/lang/instrument/ClassDefinition;)V
hidden boolean
false
modifiers int
258
name string
redefineClasses0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
sun/instrument/InstrumentationImpl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.instrument
name string
java.instrument
version string
25.0.4.1
name string
sun/instrument
type FrameType
Native
truncated boolean
false
startTime long: millis
1306708552

RetransformClasses

profiling default startTime duration eventThread stackTrace 15 17 21 25 27 28

Category: Java Virtual Machine / Class Loading

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/prims/jvmtiEnv.cpp:

      class_definitions[index].class_byte_count = (jint)reconstituter.class_file_size();
      class_definitions[index].class_bytes      = (unsigned char*)
                                                       reconstituter.class_file_bytes();
    } else {
      // it is cached, get it from the cache
      class_definitions[index].class_byte_count = ik->get_cached_class_file_len();
      class_definitions[index].class_bytes      = ik->get_cached_class_file_bytes();
    }
    class_definitions[index].klass              = jcls;
  }
  EventRetransformClasses event;
  VM_RedefineClasses op(class_count, class_definitions, jvmti_class_load_kind_retransform);
  VMThread::execute(&op);
  jvmtiError error = op.check_error();
  if (error == JVMTI_ERROR_NONE) {
    event.set_classCount(class_count);
    event.set_redefinitionId(op.id());
    event.commit();
  }
  return error;
} /* end RetransformClasses */

Configuration enabled stackTrace threshold
profiling true true 0 ms
default true true 0 ms

Field Type Description
classCount int Class Count
redefinitionId ulong Class Redefinition Id

Examples 3
classCount int
1
redefinitionId ulong
1
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(J[Ljava/lang/Class;)V
hidden boolean
false
modifiers int
258
name string
retransformClasses0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
sun/instrument/InstrumentationImpl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.instrument
name string
java.instrument
version string
25.0.4.1
name string
sun/instrument
type FrameType
Native
truncated boolean
false
startTime long: millis
1297732222
classCount int
1
redefinitionId ulong
1
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(J[Ljava/lang/Class;)V
hidden boolean
false
modifiers int
258
name string
retransformClasses0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
sun/instrument/InstrumentationImpl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.instrument
name string
java.instrument
version string
25.0.4.1
name string
sun/instrument
type FrameType
Native
truncated boolean
false
startTime long: millis
1044182083
classCount int
1
redefinitionId ulong
1
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(J[Ljava/lang/Class;)V
hidden boolean
false
modifiers int
258
name string
retransformClasses0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
sun/instrument/InstrumentationImpl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.instrument
name string
java.instrument
version string
25.0.4.1
name string
sun/instrument
type FrameType
Native
truncated boolean
false
startTime long: millis
1248216715

ClassUnload

startTime eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / Class Loading

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/oops/instanceKlass.cpp:

  ClassLoadingService::notify_class_unloaded(ik);

  SystemDictionaryShared::handle_class_unloading(ik);

  if (log_is_enabled(Info, class, unload)) {
    ResourceMark rm;
    log_info(class, unload)("unloading class %s " INTPTR_FORMAT, ik->external_name(), p2i(ik));
  }

  Events::log_class_unloading(Thread::current(), ik);

#if INCLUDE_JFR
  assert(ik != NULL, "invariant");
  EventClassUnload event;
  event.set_unloadedClass(ik);
  event.set_definingClassLoader(ik->class_loader_data());
  event.commit();
#endif
}

static void method_release_C_heap_structures(Method* m) {
  m->release_C_heap_structures();
}

// Called also by InstanceKlass::deallocate_contents, with false for release_constant_pool.

Configuration enabled
profiling false
default false

Field Type Description
unloadedClass Class Unloaded Class
definingClassLoader ClassLoader Defining Class Loader

Examples 3
definingClassLoader ClassLoader
null
startTime long: millis
685570870402
unloadedClass Class
classLoader ClassLoader
null
hidden boolean
true
modifiers int
16
name string
java.lang.invoke.LambdaForm$DMH/0x0000000061c21000
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang/invoke
definingClassLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
0
name string
jfr_sample/Main$2
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
startTime long: millis
3835492210
unloadedClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
0
name string
jfr_sample/Main$2
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
hidden boolean
false
modifiers int
1
name string
jfr_sample/Unloadable501270735376
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
0
name string
jfr_sample/Main$2
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
location string
null
name string
null
version string
null
name string
jfr_sample
definingClassLoader ClassLoader
null
startTime long: millis
365418219180
unloadedClass Class
classLoader ClassLoader
null
hidden boolean
true
modifiers int
16
name string
java.lang.invoke.LambdaForm$DMH/0x000000007310a800
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang/invoke

JVM: Code Cache

CodeCacheFull

profiling default startTime eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / Code Cache

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/code/codeCache.cpp:

    {
      ttyLocker ttyl;
      tty->print("%s", s.as_string());
    }

    if (heap->full_count() == 1) {
      if (PrintCodeHeapAnalytics) {
        CompileBroker::print_heapinfo(tty, "all", 4096); // details, may be a lot!
      }
    }
  }

  EventCodeCacheFull event;
  if (event.should_commit()) {
    event.set_codeBlobType((u1)code_blob_type);
    event.set_startAddress((u8)heap->low_boundary());
    event.set_commitedTopAddress((u8)heap->high());
    event.set_reservedTopAddress((u8)heap->high_boundary());
    event.set_entryCount(heap->blob_count());
    event.set_methodCount(heap->nmethod_count());
    event.set_adaptorCount(heap->adapter_count());
    event.set_unallocatedCapacity(heap->unallocated_capacity());
    event.set_fullCount(heap->full_count());
    event.commit();

Configuration enabled
profiling true
default true

Field Type Description
codeBlobType CodeBlobType Code Heap
startAddress ulong: address Start Address
commitedTopAddress ulong: address Commited Top
reservedTopAddress ulong: address Reserved Top
entryCount int Entries
methodCount int Methods
adaptorCount int Adaptors
unallocatedCapacity ulong: bytes Unallocated
fullCount int Full Count

CodeCacheStatistics

profiling default startTime every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Code Cache

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

TRACE_REQUEST_FUNC(CompilerConfiguration) {
  EventCompilerConfiguration event;
  event.set_threadCount(CICompilerCount);
  event.set_tieredCompilation(TieredCompilation);
  event.commit();
}

TRACE_REQUEST_FUNC(CodeCacheStatistics) {
  // Emit stats for all available code heaps
  for (int bt = 0; bt < CodeBlobType::NumTypes; ++bt) {
    if (CodeCache::heap_available(bt)) {
      EventCodeCacheStatistics event;
      event.set_codeBlobType((u1)bt);
      event.set_startAddress((u8)CodeCache::low_bound(bt));
      event.set_reservedTopAddress((u8)CodeCache::high_bound(bt));
      event.set_entryCount(CodeCache::blob_count(bt));
      event.set_methodCount(CodeCache::nmethod_count(bt));
      event.set_adaptorCount(CodeCache::adapter_count(bt));
      event.set_unallocatedCapacity(CodeCache::unallocated_capacity(bt));
      event.set_fullCount(CodeCache::get_codemem_full_count(bt));
      event.commit();
    }
  }

Configuration enabled period
profiling true everyChunk
default true everyChunk

Field Type Description
codeBlobType CodeBlobType Code Heap
startAddress ulong: address Start Address
reservedTopAddress ulong: address Reserved Top
entryCount int Entries
methodCount int Methods
adaptorCount int Adaptors
unallocatedCapacity ulong: bytes Unallocated
fullCount int Full Count

Examples 3
adaptorCount int
479
codeBlobType CodeBlobType
CodeHeap 'non-nmethods'
entryCount int
575
fullCount int
0
methodCount int
0
reservedTopAddress ulong: address
139993047629824
startAddress ulong: address
139993041338368
startTime long: millis
11107858807
unallocatedCapacity ulong: bytes
4590208
adaptorCount int
0
codeBlobType CodeBlobType
CodeHeap 'profiled nmethods'
entryCount int
8994
fullCount int
0
methodCount int
8994
reservedTopAddress ulong: address
139908148625408
startAddress ulong: address
139908024893440
startTime long: millis
678868730158
unallocatedCapacity ulong: bytes
97245312
adaptorCount int
0
codeBlobType CodeBlobType
CodeHeap 'profiled nmethods'
entryCount int
14188
fullCount int
0
methodCount int
14188
reservedTopAddress ulong: address
140680504541184
startAddress ulong: address
140680380809216
startTime long: millis
357146932871
unallocatedCapacity ulong: bytes
87343616

CodeCacheConfiguration

profiling default startTime end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Code Cache

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

      event.set_startAddress((u8)CodeCache::low_bound(bt));
      event.set_reservedTopAddress((u8)CodeCache::high_bound(bt));
      event.set_entryCount(CodeCache::blob_count(bt));
      event.set_methodCount(CodeCache::nmethod_count(bt));
      event.set_adaptorCount(CodeCache::adapter_count(bt));
      event.set_unallocatedCapacity(CodeCache::unallocated_capacity(bt));
      event.set_fullCount(CodeCache::get_codemem_full_count(bt));
      event.commit();
    }
  }
}

TRACE_REQUEST_FUNC(CodeCacheConfiguration) {
  EventCodeCacheConfiguration event;
  event.set_initialSize(InitialCodeCacheSize);
  event.set_reservedSize(ReservedCodeCacheSize);
  event.set_nonNMethodSize(NonNMethodCodeHeapSize);
  event.set_profiledSize(ProfiledCodeHeapSize);
  event.set_nonProfiledSize(NonProfiledCodeHeapSize);
  event.set_expansionSize(CodeCacheExpansionSize);
  event.set_minBlockLength(CodeCacheMinBlockLength);
  event.set_startAddress((u8)CodeCache::low_bound());
  event.set_reservedTopAddress((u8)CodeCache::high_bound());
  event.commit();
}

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
initialSize ulong: bytes Initial Size
reservedSize ulong: bytes Reserved Size
nonNMethodSize ulong: bytes Non-nmethod Size
profiledSize ulong: bytes Profiled Size
nonProfiledSize ulong: bytes Non-profiled Size
expansionSize ulong: bytes Expansion size
minBlockLength ulong: bytes Minimum Block Length
startAddress ulong: address Start Address
reservedTopAddress ulong: address Reserved Top

Examples 3
expansionSize ulong: bytes
65536
initialSize ulong: bytes
2555904
minBlockLength ulong: bytes
6
nonNMethodSize ulong: bytes
6291456
nonProfiledSize ulong: bytes
123731968
profiledSize ulong: bytes
123731968
reservedSize ulong: bytes
253755392
reservedTopAddress ulong: address
140680634564608
startAddress ulong: address
140680380809216
startTime long: millis
346403910456
expansionSize ulong: bytes
65536
initialSize ulong: bytes
2555904
minBlockLength ulong: bytes
6
nonNMethodSize ulong: bytes
6291456
nonProfiledSize ulong: bytes
123731968
profiledSize ulong: bytes
123731968
reservedSize ulong: bytes
253755392
reservedTopAddress ulong: address
139908278648832
startAddress ulong: address
139908024893440
startTime long: millis
640709940022
expansionSize ulong: bytes
65536
initialSize ulong: bytes
2555904
minBlockLength ulong: bytes
6
nonNMethodSize ulong: bytes
6291456
nonProfiledSize ulong: bytes
123731968
profiledSize ulong: bytes
123731968
reservedSize ulong: bytes
253755392
reservedTopAddress ulong: address
139993171361792
startAddress ulong: address
139992917606400
startTime long: millis
11196561120

JVM: Code Sweeper

SweepCodeCache

profiling default startTime duration eventThread 11 17 until JDK 20

Category: Java Virtual Machine / Code Sweeper

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/sweeper.cpp:

  sweep_code_cache();

  // We are done with sweeping the code cache once.
  _total_nof_code_cache_sweeps++;

  if (_force_sweep) {
    // Notify requester that forced sweep finished
    MutexLocker mu(CodeSweeper_lock, Mutex::_no_safepoint_check_flag);
    _force_sweep = false;
    CodeSweeper_lock->notify();
  }
}

static void post_sweep_event(EventSweepCodeCache* event,
                             const Ticks& start,
                             const Ticks& end,
                             s4 traversals,
                             int swept,
                             int flushed,
                             int zombified) {
  assert(event != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  event->set_starttime(start);
  event->set_endtime(end);
  event->set_sweepId(traversals);

src/hotspot/share/runtime/sweeper.cpp:

  const Ticks sweep_end_counter = Ticks::now();
  const Tickspan sweep_time = sweep_end_counter - sweep_start_counter;
  {
    MutexLocker mu(NMethodSweeperStats_lock, Mutex::_no_safepoint_check_flag);
    _total_time_sweeping  += sweep_time;
    _total_time_this_sweep += sweep_time;
    _peak_sweep_fraction_time = MAX2(sweep_time, _peak_sweep_fraction_time);
    _total_flushed_size += freed_memory;
    _total_nof_methods_reclaimed += flushed_count;
    _total_nof_c2_methods_reclaimed += flushed_c2_count;
    _peak_sweep_time = MAX2(_peak_sweep_time, _total_time_this_sweep);
  }

  EventSweepCodeCache event(UNTIMED);
  if (event.should_commit()) {
    post_sweep_event(&event, sweep_start_counter, sweep_end_counter, (s4)_traversals, swept_count, flushed_count, zombified_count);
  }

#ifdef ASSERT
  if(PrintMethodFlushing) {
    tty->print_cr("### sweeper:      sweep time(" JLONG_FORMAT "): ", sweep_time.value());
  }
#endif

  Log(codecache, sweep) log;

Configuration enabled threshold
profiling true 100 ms
default true 100 ms

Field Type Description
sweepId int Sweep Identifier
sweptCount uint Methods Swept
flushedCount uint Methods Flushed
zombifiedCount uint Methods Zombified

CodeSweeperStatistics

profiling default startTime every chunk 11 17 until JDK 20

Category: Java Virtual Machine / Code Sweeper

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

  event.set_initialSize(InitialCodeCacheSize);
  event.set_reservedSize(ReservedCodeCacheSize);
  event.set_nonNMethodSize(NonNMethodCodeHeapSize);
  event.set_profiledSize(ProfiledCodeHeapSize);
  event.set_nonProfiledSize(NonProfiledCodeHeapSize);
  event.set_expansionSize(CodeCacheExpansionSize);
  event.set_minBlockLength(CodeCacheMinBlockLength);
  event.set_startAddress((u8)CodeCache::low_bound());
  event.set_reservedTopAddress((u8)CodeCache::high_bound());
  event.commit();
}

TRACE_REQUEST_FUNC(CodeSweeperStatistics) {
  EventCodeSweeperStatistics event;
  event.set_sweepCount(NMethodSweeper::traversal_count());
  event.set_methodReclaimedCount(NMethodSweeper::total_nof_methods_reclaimed());
  event.set_totalSweepTime(NMethodSweeper::total_time_sweeping());
  event.set_peakFractionTime(NMethodSweeper::peak_sweep_fraction_time());
  event.set_peakSweepTime(NMethodSweeper::peak_sweep_time());
  event.commit();
}

TRACE_REQUEST_FUNC(CodeSweeperConfiguration) {
  EventCodeSweeperConfiguration event;
  event.set_sweeperEnabled(MethodFlushing);

Configuration enabled period
profiling true everyChunk
default true everyChunk

Field Type Description
sweepCount int Sweeps
methodReclaimedCount int Methods Reclaimed
totalSweepTime Tickspan Time Spent Sweeping
peakFractionTime Tickspan Peak Time Fraction Sweep
peakSweepTime Tickspan Peak Time Full Sweep

CodeSweeperConfiguration

profiling default startTime end of every chunk 11 17 until JDK 20

Category: Java Virtual Machine / Code Sweeper

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

TRACE_REQUEST_FUNC(CodeSweeperStatistics) {
  EventCodeSweeperStatistics event;
  event.set_sweepCount(NMethodSweeper::traversal_count());
  event.set_methodReclaimedCount(NMethodSweeper::total_nof_methods_reclaimed());
  event.set_totalSweepTime(NMethodSweeper::total_time_sweeping());
  event.set_peakFractionTime(NMethodSweeper::peak_sweep_fraction_time());
  event.set_peakSweepTime(NMethodSweeper::peak_sweep_time());
  event.commit();
}

TRACE_REQUEST_FUNC(CodeSweeperConfiguration) {
  EventCodeSweeperConfiguration event;
  event.set_sweeperEnabled(MethodFlushing);
  event.set_flushingEnabled(UseCodeCacheFlushing);
  event.set_sweepThreshold(NMethodSweeper::sweep_threshold_bytes());
  event.commit();
}

TRACE_REQUEST_FUNC(ShenandoahHeapRegionInformation) {
#if INCLUDE_SHENANDOAHGC
  if (UseShenandoahGC) {
    VM_ShenandoahSendHeapRegionInfoEvents op;
    VMThread::execute(&op);

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
sweeperEnabled boolean Code Sweeper Enabled
flushingEnabled boolean Code Cache Flushing Enabled
sweepThreshold ulong: bytes 17 until JDK 20 Sweep Threshold

JVM: Compiler

Compilation

profiling default startTime duration eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / Compiler

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/compiler/compilerEvent.hpp:

#if INCLUDE_JFR
#include "jfr/utilities/jfrTime.hpp"
#endif

class ciMethod;
template <typename>
class GrowableArray;
class Method;
class EventCompilation;
class EventCompilationFailure;
class EventCompilerInlining;
class EventCompilerPhase;
struct JfrStructCalleeMethod;

class CompilerEvent : AllStatic {
 public:
  static jlong ticksNow() {
    // Using Ticks for consistent usage outside JFR folder.
    JFR_ONLY(return JfrTime::is_ft_enabled() ? Ticks::now().ft_value() : Ticks::now().value();) NOT_JFR_RETURN_(0L);
  }

  class CompilationEvent : AllStatic {
   public:
    static void post(EventCompilation& event, int compile_id, CompilerType type, Method* method, int compile_level, bool success, bool is_osr, int code_size, int inlined_bytecodes) NOT_JFR_RETURN();
  };

  class CompilationFailureEvent : AllStatic {
   public:
    static void post(EventCompilationFailure& event, int compile_id, const char* reason) NOT_JFR_RETURN();
  };

  class PhaseEvent : AllStatic {
    friend class CompilerPhaseTypeConstant;
   public:

src/hotspot/share/compiler/compileBroker.cpp:

        _compilation_log->log_nmethod(thread, code);
      }
    }
  } else if (AbortVMOnCompilationFailure) {
    if (compilable == ciEnv::MethodCompilable_not_at_tier) {
      fatal("Not compilable at tier %d: %s", task->comp_level(), failure_reason);
    }
    if (compilable == ciEnv::MethodCompilable_never) {
      fatal("Never compilable: %s", failure_reason);
    }
  }
}

static void post_compilation_event(EventCompilation& event, CompileTask* task) {
  assert(task != NULL, "invariant");
  CompilerEvent::CompilationEvent::post(event,
                                        task->compile_id(),
                                        task->compiler()->type(),
                                        task->method(),
                                        task->comp_level(),
                                        task->is_success(),
                                        task->osr_bci() != CompileBroker::standard_entry_bci,
                                        (task->code() == NULL) ? 0 : task->code()->total_size(),
                                        task->num_inlined_bytecodes());
}

int DirectivesStack::_depth = 0;

src/hotspot/share/compiler/compileBroker.cpp:

  // Allocate a new set of JNI handles.
  JNIHandleMark jhm(thread);
  Method* target_handle = task->method();
  int compilable = ciEnv::MethodCompilable;
  const char* failure_reason = NULL;
  bool failure_reason_on_C_heap = false;
  const char* retry_message = NULL;

#if INCLUDE_JVMCI
  if (UseJVMCICompiler && comp != NULL && comp->is_jvmci()) {
    JVMCICompiler* jvmci = (JVMCICompiler*) comp;

    TraceTime t1("compilation", &time);
    EventCompilation event;
    JVMCICompileState compile_state(task, jvmci);
    JVMCIRuntime *runtime = NULL;

    if (JVMCI::in_shutdown()) {
      failure_reason = "in JVMCI shutdown";
      retry_message = "not retryable";
      compilable = ciEnv::MethodCompilable_never;
    } else if (compile_state.target_method_is_old()) {
      // Skip redefined methods
      failure_reason = "redefined method";
      retry_message = "not retryable";

src/hotspot/share/compiler/compileBroker.cpp:

    bool method_is_old = ci_env.cache_jvmti_state();

    // Skip redefined methods
    if (method_is_old) {
      ci_env.record_method_not_compilable("redefined method", true);
    }

    // Cache DTrace flags
    ci_env.cache_dtrace_flags();

    ciMethod* target = ci_env.get_method_from_handle(target_handle);

    TraceTime t1("compilation", &time);
    EventCompilation event;

    if (comp == NULL) {
      ci_env.record_method_not_compilable("no compiler");
    } else if (!ci_env.failing()) {
      if (WhiteBoxAPI && WhiteBox::compilation_locked) {
        MonitorLocker locker(Compilation_lock, Mutex::_no_safepoint_check_flag);
        while (WhiteBox::compilation_locked) {
          locker.wait();
        }
      }
      comp->compile_method(&ci_env, target, osr_bci, true, directive);

src/hotspot/share/compiler/compilerEvent.cpp:

  if (register_jfr_serializer) {
    JfrSerializer::register_serializer(TYPE_COMPILERPHASETYPE, false, new CompilerPhaseTypeConstant());
  } else if (Jfr::is_recording()) {
    // serialize new phase.
    JfrCheckpointWriter writer;
    writer.write_type(TYPE_COMPILERPHASETYPE);
    writer.write_count(1);
    writer.write_key(index);
    writer.write(phase_name);
  }
  return index;
}

void CompilerEvent::CompilationEvent::post(EventCompilation& event, int compile_id, CompilerType compiler_type, Method* method, int compile_level, bool success, bool is_osr, int code_size, int inlined_bytecodes) {
  event.set_compileId(compile_id);
  event.set_compiler(compiler_type);
  event.set_method(method);
  event.set_compileLevel((short)compile_level);
  event.set_succeded(success);
  event.set_isOsr(is_osr);
  event.set_codeSize(code_size);
  event.set_inlinedBytes(inlined_bytecodes);
  event.commit();
}

src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/EmptyEventProvider.java:

package jdk.vm.ci.hotspot;

/**
 * An empty implementation for {@link EventProvider}. This implementation is used when no logging is
 * requested.
 */
final class EmptyEventProvider implements EventProvider {

    static InternalError shouldNotReachHere() {
        throw new InternalError("should not reach here");
    }

    @Override
    public CompilationEvent newCompilationEvent() {
        return new EmptyCompilationEvent();
    }

    static class EmptyCompilationEvent implements CompilationEvent {
        @Override
        public void commit() {
            throw shouldNotReachHere();
        }

        @Override
        public boolean shouldWrite() {
            // Events of this class should never been written.
            return false;
        }

src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/EventProvider.java:

     * Creates and returns an empty implementation for {@link EventProvider}. This implementation
     * can be used when no logging is requested.
     */
    static EventProvider createEmptyEventProvider() {
        return new EmptyEventProvider();
    }

    /**
     * Creates and returns an empty implementation for {@link CompilationEvent}.
     */
    static CompilationEvent createEmptyCompilationEvent() {
        return new EmptyCompilationEvent();
    }

    /**
     * Creates and returns an empty implementation for {@link CompilationEvent}.
     */
    static CompilerFailureEvent createEmptyCompilerFailureEvent() {
        return new EmptyCompilerFailureEvent();
    }

    /**
     * An instant event is an event that is not considered to have taken any time.

src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/EventProvider.java:

        /**
         * Ends the timing period for this event.
         */
        void end();
    }

    /**
     * Creates a new {@link CompilationEvent}.
     *
     * @return a compilation event
     */
    CompilationEvent newCompilationEvent();

    /**
     * A compilation event.
     */
    public interface CompilationEvent extends TimedEvent {
        void setMethod(String method);

        void setCompileId(int compileId);

        void setCompileLevel(int compileLevel);

        void setSucceeded(boolean succeeded);

Configuration enabled threshold
profiling true 100 ms
default true 1000 ms

Field Type Description
compileId uint Compilation Identifier
compiler CompilerType 14+ Compiler
method Method Method
compileLevel ushort Compilation Level
succeded boolean Succeeded
isOsr boolean On Stack Replacement
codeSize ulong: bytes Compiled Code Size
inlinedBytes ulong: bytes Inlined Code Size

Examples 3
codeSize ulong: bytes
952
compileId uint
93717
compileLevel ushort
3
compiler CompilerType
c1
inlinedBytes ulong: bytes
0
isOsr boolean
false
method Method
descriptor string
(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
hidden boolean
true
modifiers int
1
name string
apply
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
true
modifiers int
4112
name string
org.apache.spark.storage.BlockInfoManager$$Lambda/0x000000006177a800
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/spark/storage
startTime long: millis
623209873108
succeded boolean
true
codeSize ulong: bytes
1624
compileId uint
94014
compileLevel ushort
3
compiler CompilerType
c1
inlinedBytes ulong: bytes
21
isOsr boolean
false
method Method
descriptor string
(Lscala/util/Try;)Lscala/util/Try;
hidden boolean
false
modifiers int
4121
name string
$anonfun$_failedFun$1
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
17
name string
scala/concurrent/Future$
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/concurrent
startTime long: millis
330124358829
succeded boolean
true
codeSize ulong: bytes
232
compileId uint
1346
compileLevel ushort
1
compiler CompilerType
c1
inlinedBytes ulong: bytes
0
isOsr boolean
false
method Method
descriptor string
()Z
hidden boolean
false
modifiers int
1
name string
isLargeSize
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/jfr/internal/PlatformEventType
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.4.1
name string
jdk/jfr/internal
startTime long: millis
281284591
succeded boolean
true

CompilerPhase

profiling default startTime duration eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / Compiler

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jvmci/jvmciCompilerToVM.cpp:

C2V_VMENTRY_0(jint, registerCompilerPhase, (JNIEnv* env, jobject, jstring jphase_name))
#if INCLUDE_JFR
  JVMCIObject phase_name = JVMCIENV->wrap(jphase_name);
  const char *name = JVMCIENV->as_utf8_string(phase_name);
  return CompilerEvent::PhaseEvent::get_phase_id(name, true, true, true);
#else
  return -1;
#endif // !INCLUDE_JFR
}

C2V_VMENTRY(void, notifyCompilerPhaseEvent, (JNIEnv* env, jobject, jlong startTime, jint phase, jint compileId, jint level))
  EventCompilerPhase event;
  if (event.should_commit()) {
    CompilerEvent::PhaseEvent::post(event, startTime, phase, compileId, level);
  }
}

C2V_VMENTRY(void, notifyCompilerInliningEvent, (JNIEnv* env, jobject, jint compileId, jobject caller, jobject callee, jboolean succeeded, jstring jmessage, jint bci))
  EventCompilerInlining event;
  if (event.should_commit()) {
    Method* caller_method = JVMCIENV->asMethod(caller);
    Method* callee_method = JVMCIENV->asMethod(callee);
    JVMCIObject message = JVMCIENV->wrap(jmessage);

src/hotspot/share/opto/compile.cpp:

    Node* n = macro_node(i);
    if (n->is_Allocate()) {
      if (i != allocates) {
        Node* tmp = macro_node(allocates);
        _macro_nodes.at_put(allocates, n);
        _macro_nodes.at_put(i, tmp);
      }
      allocates++;
    }
  }
}

void Compile::print_method(CompilerPhaseType cpt, const char *name, int level) {
  EventCompilerPhase event;
  if (event.should_commit()) {
    CompilerEvent::PhaseEvent::post(event, C->_latest_stage_start_counter, cpt, C->_compile_id, level);
  }
#ifndef PRODUCT
  if (should_print(level)) {
    _printer->print_method(name, level);
  }
#endif
  C->_latest_stage_start_counter.stamp();
}

src/hotspot/share/opto/compile.cpp:

void Compile::print_method(CompilerPhaseType cpt, Node* n, int level) {
  ResourceMark rm;
  stringStream ss;
  ss.print_raw(CompilerPhaseTypeHelper::to_string(cpt));
  if (n != NULL) {
    ss.print(": %d %s ", n->_idx, NodeClassNames[n->Opcode()]);
  } else {
    ss.print_raw(": NULL");
  }
  C->print_method(cpt, ss.as_string(), level);
}

void Compile::end_method(int level) {
  EventCompilerPhase event;
  if (event.should_commit()) {
    CompilerEvent::PhaseEvent::post(event, C->_latest_stage_start_counter, PHASE_END, C->_compile_id, level);
  }

#ifndef PRODUCT
  if (_method != NULL && should_print(level)) {
    _printer->end_method();
  }
#endif
}

src/hotspot/share/compiler/compilerEvent.hpp:

#if INCLUDE_JFR
#include "jfr/utilities/jfrTime.hpp"
#endif

class ciMethod;
template <typename>
class GrowableArray;
class Method;
class EventCompilation;
class EventCompilationFailure;
class EventCompilerInlining;
class EventCompilerPhase;
struct JfrStructCalleeMethod;

class CompilerEvent : AllStatic {
 public:
  static jlong ticksNow() {
    // Using Ticks for consistent usage outside JFR folder.
    JFR_ONLY(return JfrTime::is_ft_enabled() ? Ticks::now().ft_value() : Ticks::now().value();) NOT_JFR_RETURN_(0L);
  }

  class CompilationEvent : AllStatic {
   public:

src/hotspot/share/compiler/compilerEvent.hpp:

  class PhaseEvent : AllStatic {
    friend class CompilerPhaseTypeConstant;
   public:

    // Gets a unique identifier for `phase_name`, computing and registering it first if necessary.
    // If `may_exist` is true, then current registrations are searched first. If false, then
    // there must not be an existing registration for `phase_name`.
    // If `use_strdup` is true, then `phase_name` is strdup'ed before registration.
    // If `sync` is true, then access to the registration table is synchronized.
    static int get_phase_id(const char* phase_name, bool may_exist, bool use_strdup, bool sync) NOT_JFR_RETURN_(-1);

    static void post(EventCompilerPhase& event, const Ticks& start_time, int phase, int compile_id, int level) NOT_JFR_RETURN();
    static void post(EventCompilerPhase& event, jlong start_time, int phase, int compile_id, int level) {
      JFR_ONLY(post(event, Ticks(start_time), phase, compile_id, level);)
    }
  };

  class InlineEvent : AllStatic {
    static void post(EventCompilerInlining& event, int compile_id, Method* caller, const JfrStructCalleeMethod& callee, bool success, const char* msg, int bci) NOT_JFR_RETURN();
   public:
    static void post(EventCompilerInlining& event, int compile_id, Method* caller, Method* callee, bool success, const char* msg, int bci) NOT_JFR_RETURN();
    static void post(EventCompilerInlining& event, int compile_id, Method* caller, ciMethod* callee, bool success, const char* msg, int bci) NOT_JFR_RETURN();
  };
};

src/hotspot/share/compiler/compilerEvent.cpp:

  event.set_succeded(success);
  event.set_isOsr(is_osr);
  event.set_codeSize(code_size);
  event.set_inlinedBytes(inlined_bytecodes);
  event.commit();
}

void CompilerEvent::CompilationFailureEvent::post(EventCompilationFailure& event, int compile_id, const char* reason) {
  event.set_compileId(compile_id);
  event.set_failureMessage(reason);
  event.commit();
}

void CompilerEvent::PhaseEvent::post(EventCompilerPhase& event, const Ticks& start_time, int phase, int compile_id, int level) {
  event.set_starttime(start_time);
  event.set_phase((u1) phase);
  event.set_compileId(compile_id);
  event.set_phaseLevel((short)level);
  event.commit();
}

void CompilerEvent::InlineEvent::post(EventCompilerInlining& event, int compile_id, Method* caller, const JfrStructCalleeMethod& callee, bool success, const char* msg, int bci) {
  event.set_compileId(compile_id);
  event.set_caller(caller);
  event.set_callee(callee);

src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/JFR.java:

        /**
         * @return current JFR time stamp
         */
        public static long now() {
            return compilerToVM().ticksNow();
        }
    }

    /**
     * Helper methods for managing JFR CompilerPhase events.
     * The events are defined in {see @code src/share/jfr/metadata/metadata.xml}.
     */
    public static final class CompilerPhaseEvent {

        private static final ConcurrentHashMap<String, Integer> phaseToId = new ConcurrentHashMap<>();

        private static int getPhaseToId(String phaseName) {
            return phaseToId.computeIfAbsent(phaseName, k -> compilerToVM().registerCompilerPhase(phaseName));
        }

        /**
         * Commits a CompilerPhase event.
         *
         * @param startTime time captured at the start of compiler phase

Configuration enabled threshold
profiling true 10 s
default true 60 s

Field Type Description
phase CompilerPhaseType Compile Phase
compileId uint Compilation Identifier
phaseLevel ushort Phase Level

Examples 3
compileId uint
94015
phase CompilerPhaseType
Post-allocation copy removal
phaseLevel ushort
4
startTime long: millis
329692654985
compileId uint
1301
phase CompilerPhaseType
After mach analysis
phaseLevel ushort
3
startTime long: millis
268332169
compileId uint
93731
phase CompilerPhaseType
After Iter GVN
phaseLevel ushort
3
startTime long: millis
623774030294

CompilationFailure

profiling startTime eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / Compiler

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/ci/ciEnv.cpp:

// ------------------------------------------------------------------
// ciEnv::record_failure()
void ciEnv::record_failure(const char* reason) {
  if (_failure_reason == NULL) {
    // Record the first failure reason.
    _failure_reason = reason;
  }
}

void ciEnv::report_failure(const char* reason) {
  EventCompilationFailure event;
  if (event.should_commit()) {
    CompilerEvent::CompilationFailureEvent::post(event, compile_id(), reason);
  }
}

// ------------------------------------------------------------------
// ciEnv::record_method_not_compilable()
void ciEnv::record_method_not_compilable(const char* reason, bool all_tiers) {
  int new_compilable =
    all_tiers ? MethodCompilable_never : MethodCompilable_not_at_tier ;

  // Only note transitions to a worse state
  if (new_compilable > _compilable) {

src/hotspot/share/compiler/compilerEvent.hpp:

#if INCLUDE_JFR
#include "jfr/utilities/jfrTime.hpp"
#endif

class ciMethod;
template <typename>
class GrowableArray;
class Method;
class EventCompilation;
class EventCompilationFailure;
class EventCompilerInlining;
class EventCompilerPhase;
struct JfrStructCalleeMethod;

class CompilerEvent : AllStatic {
 public:
  static jlong ticksNow() {
    // Using Ticks for consistent usage outside JFR folder.
    JFR_ONLY(return JfrTime::is_ft_enabled() ? Ticks::now().ft_value() : Ticks::now().value();) NOT_JFR_RETURN_(0L);
  }

  class CompilationEvent : AllStatic {
   public:
    static void post(EventCompilation& event, int compile_id, CompilerType type, Method* method, int compile_level, bool success, bool is_osr, int code_size, int inlined_bytecodes) NOT_JFR_RETURN();
  };

  class CompilationFailureEvent : AllStatic {
   public:
    static void post(EventCompilationFailure& event, int compile_id, const char* reason) NOT_JFR_RETURN();
  };

  class PhaseEvent : AllStatic {
    friend class CompilerPhaseTypeConstant;
   public:

    // Gets a unique identifier for `phase_name`, computing and registering it first if necessary.
    // If `may_exist` is true, then current registrations are searched first. If false, then
    // there must not be an existing registration for `phase_name`.
    // If `use_strdup` is true, then `phase_name` is strdup'ed before registration.
    // If `sync` is true, then access to the registration table is synchronized.

src/hotspot/share/compiler/compilerEvent.cpp:

void CompilerEvent::CompilationEvent::post(EventCompilation& event, int compile_id, CompilerType compiler_type, Method* method, int compile_level, bool success, bool is_osr, int code_size, int inlined_bytecodes) {
  event.set_compileId(compile_id);
  event.set_compiler(compiler_type);
  event.set_method(method);
  event.set_compileLevel((short)compile_level);
  event.set_succeded(success);
  event.set_isOsr(is_osr);
  event.set_codeSize(code_size);
  event.set_inlinedBytes(inlined_bytecodes);
  event.commit();
}

void CompilerEvent::CompilationFailureEvent::post(EventCompilationFailure& event, int compile_id, const char* reason) {
  event.set_compileId(compile_id);
  event.set_failureMessage(reason);
  event.commit();
}

void CompilerEvent::PhaseEvent::post(EventCompilerPhase& event, const Ticks& start_time, int phase, int compile_id, int level) {
  event.set_starttime(start_time);
  event.set_phase((u1) phase);
  event.set_compileId(compile_id);
  event.set_phaseLevel((short)level);
  event.commit();

Configuration enabled
profiling true
default false

Field Type Description
failureMessage string Failure Message
compileId uint Compilation Identifier

Examples 3
compileId uint
103102
failureMessage string
retry without subsuming loads
startTime long: millis
359240209002
compileId uint
97656
failureMessage string
concurrent class loading
startTime long: millis
673388053094
compileId uint
2603
failureMessage string
Jvmti state change invalidated dependencies
startTime long: millis
1061593178

CompilerInlining

startTime eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / Compiler / Optimization

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/c1/c1_GraphBuilder.cpp:

void GraphBuilder::print_inlining(ciMethod* callee, const char* msg, bool success) {
  CompileLog* log = compilation()->log();
  if (log != NULL) {
    assert(msg != NULL, "inlining msg should not be null!");
    if (success) {
      log->inline_success(msg);
    } else {
      log->inline_fail(msg);
    }
  }
  EventCompilerInlining event;
  if (event.should_commit()) {
    CompilerEvent::InlineEvent::post(event, compilation()->env()->task()->compile_id(), method()->get_Method(), callee, success, msg, bci());
  }

  CompileTask::print_inlining_ul(callee, scope()->level(), bci(), msg);

  if (!compilation()->directive()->PrintInliningOption) {
    return;
  }
  CompileTask::print_inlining_tty(callee, scope()->level(), bci(), msg);
  if (success && CIPrintMethodCodes) {

src/hotspot/share/jvmci/jvmciCompilerToVM.cpp:

#else
  return -1;
#endif // !INCLUDE_JFR
}

C2V_VMENTRY(void, notifyCompilerPhaseEvent, (JNIEnv* env, jobject, jlong startTime, jint phase, jint compileId, jint level))
  EventCompilerPhase event;
  if (event.should_commit()) {
    CompilerEvent::PhaseEvent::post(event, startTime, phase, compileId, level);
  }
}

C2V_VMENTRY(void, notifyCompilerInliningEvent, (JNIEnv* env, jobject, jint compileId, jobject caller, jobject callee, jboolean succeeded, jstring jmessage, jint bci))
  EventCompilerInlining event;
  if (event.should_commit()) {
    Method* caller_method = JVMCIENV->asMethod(caller);
    Method* callee_method = JVMCIENV->asMethod(callee);
    JVMCIObject message = JVMCIENV->wrap(jmessage);
    CompilerEvent::InlineEvent::post(event, compileId, caller_method, callee_method, succeeded, JVMCIENV->as_utf8_string(message), bci);
  }
}

C2V_VMENTRY(void, setThreadLocalObject, (JNIEnv* env, jobject, jint id, jobject value))
  requireInHotSpot("setThreadLocalObject", JVMCI_CHECK);
  if (id == 0) {

src/hotspot/share/opto/bytecodeInfo.cpp:

  CompileTask::print_inlining_ul(callee_method, inline_level(),
                                               caller_bci, inline_msg);
  if (C->print_inlining()) {
    C->print_inlining(callee_method, inline_level(), caller_bci, inline_msg);
    guarantee(callee_method != NULL, "would crash in CompilerEvent::InlineEvent::post");
    if (Verbose) {
      const InlineTree *top = this;
      while (top->caller_tree() != NULL) { top = top->caller_tree(); }
      //tty->print("  bcs: %d+%d  invoked: %d", top->count_inline_bcs(), callee_method->code_size(), callee_method->interpreter_invocation_count());
    }
  }
  EventCompilerInlining event;
  if (event.should_commit()) {
    CompilerEvent::InlineEvent::post(event, C->compile_id(), caller_method->get_Method(), callee_method, success, inline_msg, caller_bci);
  }
}

//------------------------------ok_to_inline-----------------------------------
bool InlineTree::ok_to_inline(ciMethod* callee_method, JVMState* jvms, ciCallProfile& profile,
                              bool& should_delay) {
#ifdef ASSERT
  assert(callee_method != NULL, "caller checks for optimized virtual!");
  // Make sure the incoming jvms has the same information content as me.

src/hotspot/share/compiler/compilerEvent.hpp:

#if INCLUDE_JFR
#include "jfr/utilities/jfrTime.hpp"
#endif

class ciMethod;
template <typename>
class GrowableArray;
class Method;
class EventCompilation;
class EventCompilationFailure;
class EventCompilerInlining;
class EventCompilerPhase;
struct JfrStructCalleeMethod;

class CompilerEvent : AllStatic {
 public:
  static jlong ticksNow() {
    // Using Ticks for consistent usage outside JFR folder.
    JFR_ONLY(return JfrTime::is_ft_enabled() ? Ticks::now().ft_value() : Ticks::now().value();) NOT_JFR_RETURN_(0L);
  }

src/hotspot/share/compiler/compilerEvent.hpp:

    // there must not be an existing registration for `phase_name`.
    // If `use_strdup` is true, then `phase_name` is strdup'ed before registration.
    // If `sync` is true, then access to the registration table is synchronized.
    static int get_phase_id(const char* phase_name, bool may_exist, bool use_strdup, bool sync) NOT_JFR_RETURN_(-1);

    static void post(EventCompilerPhase& event, const Ticks& start_time, int phase, int compile_id, int level) NOT_JFR_RETURN();
    static void post(EventCompilerPhase& event, jlong start_time, int phase, int compile_id, int level) {
      JFR_ONLY(post(event, Ticks(start_time), phase, compile_id, level);)
    }
  };

  class InlineEvent : AllStatic {
    static void post(EventCompilerInlining& event, int compile_id, Method* caller, const JfrStructCalleeMethod& callee, bool success, const char* msg, int bci) NOT_JFR_RETURN();
   public:
    static void post(EventCompilerInlining& event, int compile_id, Method* caller, Method* callee, bool success, const char* msg, int bci) NOT_JFR_RETURN();
    static void post(EventCompilerInlining& event, int compile_id, Method* caller, ciMethod* callee, bool success, const char* msg, int bci) NOT_JFR_RETURN();
  };
};
#endif // SHARE_COMPILER_COMPILEREVENT_HPP

src/hotspot/share/compiler/compilerEvent.cpp:

  event.set_compileId(compile_id);
  event.set_failureMessage(reason);
  event.commit();
}

void CompilerEvent::PhaseEvent::post(EventCompilerPhase& event, const Ticks& start_time, int phase, int compile_id, int level) {
  event.set_starttime(start_time);
  event.set_phase((u1) phase);
  event.set_compileId(compile_id);
  event.set_phaseLevel((short)level);
  event.commit();
}

void CompilerEvent::InlineEvent::post(EventCompilerInlining& event, int compile_id, Method* caller, const JfrStructCalleeMethod& callee, bool success, const char* msg, int bci) {
  event.set_compileId(compile_id);
  event.set_caller(caller);
  event.set_callee(callee);
  event.set_succeeded(success);
  event.set_message(msg);
  event.set_bci(bci);
  event.commit();
}

void CompilerEvent::InlineEvent::post(EventCompilerInlining& event, int compile_id, Method* caller, Method* callee, bool success, const char* msg, int bci) {
  JfrStructCalleeMethod callee_struct;
  callee_struct.set_type(callee->klass_name()->as_utf8());
  callee_struct.set_name(callee->name()->as_utf8());
  callee_struct.set_descriptor(callee->signature()->as_utf8());
  post(event, compile_id, caller, callee_struct, success, msg, bci);
}

void CompilerEvent::InlineEvent::post(EventCompilerInlining& event, int compile_id, Method* caller, ciMethod* callee, bool success, const char* msg, int bci) {
  JfrStructCalleeMethod callee_struct;
  callee_struct.set_type(callee->holder()->name()->as_utf8());
  callee_struct.set_name(callee->name()->as_utf8());
  callee_struct.set_descriptor(callee->signature()->as_symbol()->as_utf8());
  post(event, compile_id, caller, callee_struct, success, msg, bci);
}

src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/JFR.java:

         * @param phaseName compiler phase name
         * @param compileId current compilation unit id
         * @param phaseLevel compiler phase nesting level
         */
        public static void write(long startTime, String phaseName, int compileId, int phaseLevel) {
            compilerToVM().notifyCompilerPhaseEvent(startTime, getPhaseToId(phaseName), compileId, phaseLevel);
        }
    }

    /**
     * Helper methods for managing JFR CompilerInlining events. The events are defined in {see @code
     * src/share/jfr/metadata/metadata.xml}.
     */
    public static final class CompilerInliningEvent {

        /**
         * Commits a CompilerInlining event.
         *
         * @param compileId current compilation unit id
         * @param caller caller method
         * @param callee callee method
         * @param succeeded inlining succeeded or not
         * @param message extra information on inlining
         * @param bci invocation byte code index
         */

Configuration enabled
profiling false
default false

Field Type Description
compileId uint Compilation Identifier
caller Method Caller Method
callee CalleeMethod struct Callee Method
succeeded boolean Succeeded
message string Message
bci int Bytecode Index

Examples 3
bci int
13
callee CalleeMethod
descriptor string
(Ljava/lang/String;)V
name string
<init>
type string
java/lang/IllegalStateException
caller Method
descriptor string
()V
hidden boolean
false
modifiers int
2
name string
assertMetadataNotNull
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1025
name string
org/apache/spark/util/AccumulatorV2
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/spark/util
compileId uint
93743
message string
don't inline Throwable constructors
startTime long: millis
623775126835
succeeded boolean
false
bci int
184
callee CalleeMethod
descriptor string
(B)V
name string
putUncheckedByte
type string
jdk/jfr/internal/event/EventWriter
caller Method
descriptor string
(J)V
hidden boolean
false
modifiers int
2
name string
putUncheckedLong
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/jfr/internal/event/EventWriter
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.4.1
name string
jdk/jfr/internal/event
compileId uint
1336
message string
callee uses too much stack
startTime long: millis
269632325
succeeded boolean
false
bci int
50
callee CalleeMethod
descriptor string
(Lbreeze/storage/Storage;)V
name string
$init$
type string
breeze/storage/Storage
caller Method
descriptor string
(Ljava/lang/Object;III)V
hidden boolean
false
modifiers int
1
name string
<init>
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
breeze/linalg/DenseVector
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
breeze/linalg
compileId uint
94018
message string
inline (hot)
startTime long: millis
330130069456
succeeded boolean
true

Deoptimization

profiling default startTime eventThread stackTrace 14 17 21 25 27 28

Category: Java Virtual Machine / Compiler

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/deoptimization.cpp:

  JfrSerializer::register_serializer(TYPE_DEOPTIMIZATIONREASON, true, new DeoptReasonSerializer());
  JfrSerializer::register_serializer(TYPE_DEOPTIMIZATIONACTION, true, new DeoptActionSerializer());
}

static void post_deoptimization_event(CompiledMethod* nm,
                                      const Method* method,
                                      int trap_bci,
                                      int instruction,
                                      Deoptimization::DeoptReason reason,
                                      Deoptimization::DeoptAction action) {
  assert(nm != NULL, "invariant");
  assert(method != NULL, "invariant");
  if (EventDeoptimization::is_enabled()) {
    static bool serializers_registered = false;
    if (!serializers_registered) {
      register_serializers();
      serializers_registered = true;
    }
    EventDeoptimization event;
    event.set_compileId(nm->compile_id());
    event.set_compiler(nm->compiler_type());
    event.set_method(method);
    event.set_lineNumber(method->line_number_from_bci(trap_bci));
    event.set_bci(trap_bci);
    event.set_instruction(instruction);
    event.set_reason(reason);
    event.set_action(action);
    event.commit();
  }
}

Configuration enabled stackTrace
profiling true true
default true false

Field Type Description
compileId uint Compilation Identifier
compiler CompilerType Compiler
method Method Method
lineNumber int Line Number
bci int Bytecode Index
instruction Bytecode Instruction
reason DeoptimizationReason Reason
action DeoptimizationAction Action

Examples 3
action DeoptimizationAction
maybe_recompile
bci int
61
compileId uint
98353
compiler CompilerType
c2
instruction Bytecode
invokeinterface
lineNumber int
480
method Method
descriptor string
()Z
hidden boolean
false
modifiers int
1
name string
hasNext
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
17
name string
scala/collection/Iterator$$anon$6
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/collection
reason DeoptimizationReason
bimorphic_or_optimized_type_check
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
61
lineNumber int
480
method Method
descriptor string
()Z
hidden boolean
false
modifiers int
1
name string
hasNext
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
17
name string
scala/collection/Iterator$$anon$6
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/collection
type FrameType
JIT compiled
truncated boolean
true
startTime long: millis
356435645910
action DeoptimizationAction
maybe_recompile
bci int
7
compileId uint
95622
compiler CompilerType
c2
instruction Bytecode
invokeinterface
lineNumber int
102
method Method
descriptor string
()Lscala/collection/Iterator;
hidden boolean
false
modifiers int
1
name string
iterator
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
9
name string
scala/collection/convert/JavaCollectionWrappers$JCollectionWrapper
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/collection/convert
reason DeoptimizationReason
bimorphic_or_optimized_type_check
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
7
lineNumber int
102
method Method
descriptor string
()Lscala/collection/Iterator;
hidden boolean
false
modifiers int
1
name string
iterator
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
9
name string
scala/collection/convert/JavaCollectionWrappers$JCollectionWrapper
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/collection/convert
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
664222331823
action DeoptimizationAction
maybe_recompile
bci int
26
compileId uint
2091
compiler CompilerType
c2
instruction Bytecode
invokevirtual
lineNumber int
97
method Method
descriptor string
([JJ)V
hidden boolean
false
modifiers int
4
name string
multByInt
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1025
name string
sun/security/util/math/intpoly/IntegerPolynomial
package Package
exported boolean
false
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
sun/security/util/math/intpoly
reason DeoptimizationReason
class_check
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
26
lineNumber int
97
method Method
descriptor string
([JJ)V
hidden boolean
false
modifiers int
4
name string
multByInt
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1025
name string
sun/security/util/math/intpoly/IntegerPolynomial
package Package
exported boolean
false
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
sun/security/util/math/intpoly
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
790823484

CompilerStatistics

profiling default startTime every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Compiler

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

TRACE_REQUEST_FUNC(LoaderConstraintsTableStatistics) {
  TableStatistics statistics = SystemDictionary::loader_constraints_statistics();
  emit_table_statistics<EventLoaderConstraintsTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(ProtectionDomainCacheTableStatistics) {
  TableStatistics statistics = SystemDictionary::protection_domain_cache_statistics();
  emit_table_statistics<EventProtectionDomainCacheTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(CompilerStatistics) {
  EventCompilerStatistics event;
  event.set_compileCount(CompileBroker::get_total_compile_count());
  event.set_bailoutCount(CompileBroker::get_total_bailout_count());
  event.set_invalidatedCount(CompileBroker::get_total_invalidated_count());
  event.set_osrCompileCount(CompileBroker::get_total_osr_compile_count());
  event.set_standardCompileCount(CompileBroker::get_total_standard_compile_count());
  event.set_osrBytesCompiled(CompileBroker::get_sum_osr_bytes_compiled());
  event.set_standardBytesCompiled(CompileBroker::get_sum_standard_bytes_compiled());
  event.set_nmethodsSize(CompileBroker::get_sum_nmethod_size());
  event.set_nmethodCodeSize(CompileBroker::get_sum_nmethod_code_size());
  event.set_peakTimeSpent(CompileBroker::get_peak_compilation_time());
  event.set_totalTimeSpent(CompileBroker::get_total_compilation_time());

Configuration enabled period
profiling true 1000 ms
default true 1000 ms

Field Type Description
compileCount int Compiled Methods
bailoutCount int Bailouts
invalidatedCount int Invalidated Compilations
osrCompileCount int OSR Compilations
standardCompileCount int Standard Compilations
osrBytesCompiled ulong: bytes OSR Bytes Compiled
standardBytesCompiled ulong: bytes Standard Bytes Compiled
nmethodsSize ulong: bytes Compilation Resulting Size
nmethodCodeSize ulong: bytes Compilation Resulting Code Size
peakTimeSpent long: millis Peak Time
totalTimeSpent long: millis Total time

Examples 3
bailoutCount int
10
compileCount int
93253
invalidatedCount int
0
nmethodCodeSize ulong: bytes
142814784
nmethodsSize ulong: bytes
200955560
osrBytesCompiled ulong: bytes
0
osrCompileCount int
1001
peakTimeSpent long: millis
4361
standardBytesCompiled ulong: bytes
0
standardCompileCount int
92252
startTime long: millis
334225758719
totalTimeSpent long: millis
243316
bailoutCount int
11
compileCount int
99675
invalidatedCount int
0
nmethodCodeSize ulong: bytes
146108424
nmethodsSize ulong: bytes
209157488
osrBytesCompiled ulong: bytes
0
osrCompileCount int
1088
peakTimeSpent long: millis
37137
standardBytesCompiled ulong: bytes
0
standardCompileCount int
98587
startTime long: millis
676260893440
totalTimeSpent long: millis
1145088
bailoutCount int
3
compileCount int
3053
invalidatedCount int
0
nmethodCodeSize ulong: bytes
4178912
nmethodsSize ulong: bytes
5659680
osrBytesCompiled ulong: bytes
0
osrCompileCount int
19
peakTimeSpent long: millis
124
standardBytesCompiled ulong: bytes
0
standardCompileCount int
3034
startTime long: millis
20659879172
totalTimeSpent long: millis
2264

CompilerConfiguration

profiling default startTime end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Compiler

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

  event.set_invalidatedCount(CompileBroker::get_total_invalidated_count());
  event.set_osrCompileCount(CompileBroker::get_total_osr_compile_count());
  event.set_standardCompileCount(CompileBroker::get_total_standard_compile_count());
  event.set_osrBytesCompiled(CompileBroker::get_sum_osr_bytes_compiled());
  event.set_standardBytesCompiled(CompileBroker::get_sum_standard_bytes_compiled());
  event.set_nmethodsSize(CompileBroker::get_sum_nmethod_size());
  event.set_nmethodCodeSize(CompileBroker::get_sum_nmethod_code_size());
  event.set_peakTimeSpent(CompileBroker::get_peak_compilation_time());
  event.set_totalTimeSpent(CompileBroker::get_total_compilation_time());
  event.commit();
}

TRACE_REQUEST_FUNC(CompilerConfiguration) {
  EventCompilerConfiguration event;
  event.set_threadCount(CICompilerCount);
  event.set_tieredCompilation(TieredCompilation);
  event.commit();
}

TRACE_REQUEST_FUNC(CodeCacheStatistics) {
  // Emit stats for all available code heaps
  for (int bt = 0; bt < CodeBlobType::NumTypes; ++bt) {
    if (CodeCache::heap_available(bt)) {
      EventCodeCacheStatistics event;
      event.set_codeBlobType((u1)bt);

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
threadCount int Thread Count
tieredCompilation boolean Tiered Compilation

Examples 3
startTime long: millis
371880329416
threadCount int
3
tieredCompilation boolean
true
startTime long: millis
635816153977
threadCount int
3
tieredCompilation boolean
true
startTime long: millis
11196558114
threadCount int
3
tieredCompilation boolean
true

JVM: Diagnostics

SyncOnValueBasedClass

experimental profiling default startTime eventThread stackTrace 16 17 21 25 27 28

Category: Java Virtual Machine / Diagnostics

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/synchronizer.cpp:

  } else {
    assert(DiagnoseSyncOnValueBasedClasses == LOG_WARNING, "invalid value for DiagnoseSyncOnValueBasedClasses");
    ResourceMark rm(current);
    Log(valuebasedclasses) vblog;

    vblog.info("Synchronizing on object " INTPTR_FORMAT " of klass %s", p2i(obj()), obj->klass()->external_name());
    if (current->has_last_Java_frame()) {
      LogStream info_stream(vblog.info());
      current->print_stack_on(&info_stream);
    } else {
      vblog.info("Cannot find the last Java frame");
    }

    EventSyncOnValueBasedClass event;
    if (event.should_commit()) {
      event.set_valueBasedClass(obj->klass());
      event.commit();
    }
  }

  if (bcp_was_adjusted) {
    last_frame.interpreter_frame_set_bcp(last_frame.interpreter_frame_bcp() + 1);
  }
}

Configuration enabled stackTrace
profiling true true
default true true

Field Type Description
valueBasedClass Class Value Based Class

Examples 3
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
17
lineNumber int
296
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
triggerSyncOnValueBased
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1316744462
valueBasedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/lang/Integer
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
56
lineNumber int
300
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
triggerSyncOnValueBased
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1061401263
valueBasedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/lang/Long
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
56
lineNumber int
300
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
triggerSyncOnValueBased
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1268478647
valueBasedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/lang/Long
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang

HeapDump

profiling default startTime duration eventThread stackTrace 15 17 21 25 27 28

Category: Java Virtual Machine / Diagnostics

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/services/heapDumper.cpp:

  _large_object_list->drain(cl);
}

// dump the heap to given path.
int HeapDumper::dump(const char* path, outputStream* out, int compression, bool overwrite, uint num_dump_threads) {
  assert(path != NULL && strlen(path) > 0, "path missing");

  // print message in interactive case
  if (out != NULL) {
    out->print_cr("Dumping heap to %s ...", path);
    timer()->start();
  }
  // create JFR event
  EventHeapDump event;

  AbstractCompressor* compressor = NULL;

  if (compression > 0) {
    compressor = new (std::nothrow) GZipCompressor(compression);

    if (compressor == NULL) {
      set_error("Could not allocate gzip compressor");
      return -1;
    }
  }

Configuration enabled stackTrace threshold
profiling true true 0 ns
default true true 0 ns

Field Type Description
destination string Destination
size long Size
gcBeforeDump boolean GC Before Dump
onOutOfMemoryError boolean On Out of Memory Error

Examples 3
destination string
/tmp/jfr_sample_heap_1230658096118.hprof
gcBeforeDump boolean
true
onOutOfMemoryError boolean
false
size long
14299400
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/String;Z)V
hidden boolean
false
modifiers int
258
name string
dumpHeap0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
com/sun/management/internal/HotSpotDiagnostic
package Package
exported boolean
false
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.management
name string
jdk.management
version string
25.0.4.1
name string
com/sun/management/internal
type FrameType
Native
truncated boolean
false
startTime long: millis
1273687150
destination string
/tmp/jfr_sample_heap_498519543395.hprof
gcBeforeDump boolean
true
onOutOfMemoryError boolean
false
size long
14311290
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/String;Z)V
hidden boolean
false
modifiers int
258
name string
dumpHeap0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
com/sun/management/internal/HotSpotDiagnostic
package Package
exported boolean
false
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.management
name string
jdk.management
version string
25.0.4.1
name string
com/sun/management/internal
type FrameType
Native
truncated boolean
false
startTime long: millis
1066265807
destination string
/tmp/jfr_sample_heap_692438966985.hprof
gcBeforeDump boolean
true
onOutOfMemoryError boolean
false
size long
14457191
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/String;Z)V
hidden boolean
false
modifiers int
258
name string
dumpHeap0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
com/sun/management/internal/HotSpotDiagnostic
package Package
exported boolean
false
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.management
name string
jdk.management
version string
25.0.4.1
name string
com/sun/management/internal
type FrameType
Native
truncated boolean
false
startTime long: millis
1322774564

JVM: Flag

IntFlagChanged

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / Flag

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/flags/jvmFlagAccess.cpp:

  virtual void print_range(outputStream* st, const JVMFlagLimit* range) const {
    const JVMTypedFlagLimit<T>* r = (const JVMTypedFlagLimit<T>*)range;
    print_range_impl(st, r->min(), r->max());
  }

  virtual void range_error(const char* name, T value, T min, T max, bool verbose) const = 0;
  virtual void print_range_impl(outputStream* st, T min, T max) const = 0;
};

class FlagAccessImpl_int : public RangedFlagAccessImpl<int, EventIntFlagChanged> {
public:
  void range_error(const char* name, int value, int min, int max, bool verbose) const {
    JVMFlag::printError(verbose,
                        "int %s=%d is outside the allowed range "
                        "[ %d ... %d ]\n",
                        name, value, min, max);
  }
  JVMFlag::Error typed_check_constraint(void* func, int value, bool verbose) const {
    return ((JVMFlagConstraintFunc_int)func)(value, verbose);
  }
  void print_range_impl(outputStream* st, int min, int max) const {

Configuration enabled
profiling true
default true

Field Type Description
name string Name
oldValue int Old Value
newValue int New Value
origin FlagValueOrigin Origin

Examples 3
name string
HeapDumpGzipLevel
newValue int
0
oldValue int
1
origin FlagValueOrigin
Management
startTime long: millis
1226181374
name string
HeapDumpGzipLevel
newValue int
1
oldValue int
0
origin FlagValueOrigin
Management
startTime long: millis
1027823945
name string
HeapDumpGzipLevel
newValue int
1
oldValue int
0
origin FlagValueOrigin
Management
startTime long: millis
1273924479

UnsignedIntFlagChanged

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / Flag

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/flags/jvmFlagAccess.cpp:

                        name, value, min, max);
  }
  JVMFlag::Error typed_check_constraint(void* func, int value, bool verbose) const {
    return ((JVMFlagConstraintFunc_int)func)(value, verbose);
  }
  void print_range_impl(outputStream* st, int min, int max) const {
    st->print("[ %-25d ... %25d ]", min, max);
  }
  void print_default_range(outputStream* st) const {
    st->print("[ " INT32_FORMAT_W(-25) " ... " INT32_FORMAT_W(25) " ]", INT_MIN, INT_MAX);
  }
};

class FlagAccessImpl_uint : public RangedFlagAccessImpl<uint, EventUnsignedIntFlagChanged> {
public:
  void range_error(const char* name, uint value, uint min, uint max, bool verbose) const {
    JVMFlag::printError(verbose,
                        "uint %s=%u is outside the allowed range "
                        "[ %u ... %u ]\n",
                        name, value, min, max);
  }
  JVMFlag::Error typed_check_constraint(void* func, uint value, bool verbose) const {
    return ((JVMFlagConstraintFunc_uint)func)(value, verbose);
  }
  void print_range_impl(outputStream* st, uint min, uint max) const {

Configuration enabled
profiling true
default true

Field Type Description
name string Name
oldValue uint Old Value
newValue uint New Value
origin FlagValueOrigin Origin

Examples 3
name string
FullGCHeapDumpLimit
newValue uint
0
oldValue uint
1
origin FlagValueOrigin
Management
startTime long: millis
1226220913
name string
FullGCHeapDumpLimit
newValue uint
0
oldValue uint
1
origin FlagValueOrigin
Management
startTime long: millis
1273992917
name string
FullGCHeapDumpLimit
newValue uint
1
oldValue uint
0
origin FlagValueOrigin
Management
startTime long: millis
1027859313

LongFlagChanged

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / Flag

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/flags/jvmFlagAccess.cpp:

                        name, value, min, max);
  }
  JVMFlag::Error typed_check_constraint(void* func, uint value, bool verbose) const {
    return ((JVMFlagConstraintFunc_uint)func)(value, verbose);
  }
  void print_range_impl(outputStream* st, uint min, uint max) const {
    st->print("[ %-25u ... %25u ]", min, max);
  }
  void print_default_range(outputStream* st) const {
    st->print("[ " UINT32_FORMAT_W(-25) " ... " UINT32_FORMAT_W(25) " ]", 0, UINT_MAX);
  }
};

class FlagAccessImpl_intx : public RangedFlagAccessImpl<intx, EventLongFlagChanged> {
public:
  void range_error(const char* name, intx value, intx min, intx max, bool verbose) const {
    JVMFlag::printError(verbose,
                        "intx %s=" INTX_FORMAT " is outside the allowed range "
                        "[ " INTX_FORMAT " ... " INTX_FORMAT " ]\n",
                        name, value, min, max);
  }
  JVMFlag::Error typed_check_constraint(void* func, intx value, bool verbose) const {
    return ((JVMFlagConstraintFunc_intx)func)(value, verbose);
  }
  void print_range_impl(outputStream* st, intx min, intx max) const {

Configuration enabled
profiling true
default true

Field Type Description
name string Name
oldValue long Old Value
newValue long New Value
origin FlagValueOrigin Origin

UnsignedLongFlagChanged

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / Flag

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/flags/jvmFlagAccess.cpp:

                        name, value, min, max);
  }
  JVMFlag::Error typed_check_constraint(void* func, intx value, bool verbose) const {
    return ((JVMFlagConstraintFunc_intx)func)(value, verbose);
  }
  void print_range_impl(outputStream* st, intx min, intx max) const {
    st->print("[ " INTX_FORMAT_W(-25) " ... " INTX_FORMAT_W(25) " ]", min, max);
  }
  void print_default_range(outputStream* st) const {
    st->print("[ " INTX_FORMAT_W(-25) " ... " INTX_FORMAT_W(25) " ]", min_intx, max_intx);
  }
};

class FlagAccessImpl_uintx : public RangedFlagAccessImpl<uintx, EventUnsignedLongFlagChanged> {
public:
  void range_error(const char* name, uintx value, uintx min, uintx max, bool verbose) const {
    JVMFlag::printError(verbose,
                        "uintx %s=" UINTX_FORMAT " is outside the allowed range "
                        "[ " UINTX_FORMAT " ... " UINTX_FORMAT " ]\n",
                        name, value, min, max);
  }
  JVMFlag::Error typed_check_constraint(void* func, uintx value, bool verbose) const {
    return ((JVMFlagConstraintFunc_uintx)func)(value, verbose);
  }
  void print_range_impl(outputStream* st, uintx min, uintx max) const {
    st->print("[ " UINTX_FORMAT_W(-25) " ... " UINTX_FORMAT_W(25) " ]", min, max);
  }
  void print_default_range(outputStream* st) const {
    st->print("[ " UINTX_FORMAT_W(-25) " ... " UINTX_FORMAT_W(25) " ]", uintx(0), max_uintx);
  }
};

class FlagAccessImpl_uint64_t : public RangedFlagAccessImpl<uint64_t, EventUnsignedLongFlagChanged> {
public:
  void range_error(const char* name, uint64_t value, uint64_t min, uint64_t max, bool verbose) const {
    JVMFlag::printError(verbose,
                        "uint64_t %s=" UINT64_FORMAT " is outside the allowed range "
                        "[ " UINT64_FORMAT " ... " UINT64_FORMAT " ]\n",
                        name, value, min, max);
  }
  JVMFlag::Error typed_check_constraint(void* func, uint64_t value, bool verbose) const {
    return ((JVMFlagConstraintFunc_uint64_t)func)(value, verbose);
  }
  void print_range_impl(outputStream* st, uint64_t min, uint64_t max) const {
    st->print("[ " UINT64_FORMAT_W(-25) " ... " UINT64_FORMAT_W(25) " ]", min, max);
  }
  void print_default_range(outputStream* st) const {
    st->print("[ " UINT64_FORMAT_W(-25) " ... " UINT64_FORMAT_W(25) " ]", uint64_t(0), uint64_t(max_juint));
  }
};

class FlagAccessImpl_size_t : public RangedFlagAccessImpl<size_t, EventUnsignedLongFlagChanged> {
public:
  void range_error(const char* name, size_t value, size_t min, size_t max, bool verbose) const {
    JVMFlag::printError(verbose,
                        "size_t %s=" SIZE_FORMAT " is outside the allowed range "
                        "[ " SIZE_FORMAT " ... " SIZE_FORMAT " ]\n",
                        name, value, min, max);
  }
  JVMFlag::Error typed_check_constraint(void* func, size_t value, bool verbose) const {
    return ((JVMFlagConstraintFunc_size_t)func)(value, verbose);
  }
  void print_range_impl(outputStream* st, size_t min, size_t max) const {

Configuration enabled
profiling true
default true

Field Type Description
name string Name
oldValue ulong Old Value
newValue ulong New Value
origin FlagValueOrigin Origin

Examples 3
name string
SoftMaxHeapSize
newValue ulong
3726639104
oldValue ulong
1863319552
origin FlagValueOrigin
Management
startTime long: millis
1226306630
name string
SoftMaxHeapSize
newValue ulong
2027257856
oldValue ulong
4194304000
origin FlagValueOrigin
Management
startTime long: millis
1274075381
name string
MaxHeapFreeRatio
newValue ulong
75
oldValue ulong
70
origin FlagValueOrigin
Management
startTime long: millis
1027715630

DoubleFlagChanged

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / Flag

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/flags/jvmFlagAccess.cpp:

                        name, value, min, max);
  }
  JVMFlag::Error typed_check_constraint(void* func, size_t value, bool verbose) const {
    return ((JVMFlagConstraintFunc_size_t)func)(value, verbose);
  }
  void print_range_impl(outputStream* st, size_t min, size_t max) const {
    st->print("[ " SIZE_FORMAT_W(-25) " ... " SIZE_FORMAT_W(25) " ]", min, max);
  }
  void print_default_range(outputStream* st) const {
    st->print("[ " SIZE_FORMAT_W(-25) " ... " SIZE_FORMAT_W(25) " ]", size_t(0), size_t(SIZE_MAX));
  }
};

class FlagAccessImpl_double : public RangedFlagAccessImpl<double, EventDoubleFlagChanged> {
public:
  void range_error(const char* name, double value, double min, double max, bool verbose) const {
    JVMFlag::printError(verbose,
                          "double %s=%f is outside the allowed range "
                          "[ %f ... %f ]\n",
                        name, value, min, max);
  }
  JVMFlag::Error typed_check_constraint(void* func, double value, bool verbose) const {
    return ((JVMFlagConstraintFunc_double)func)(value, verbose);
  }
  void print_range_impl(outputStream* st, double min, double max) const {

Configuration enabled
profiling true
default true

Field Type Description
name string Name
oldValue double Old Value
newValue double New Value
origin FlagValueOrigin Origin

Examples 3
name string
G1PeriodicGCSystemLoadThreshold
newValue double
0.0
oldValue double
0.5
origin FlagValueOrigin
Management
startTime long: millis
1226105642
name string
G1PeriodicGCSystemLoadThreshold
newValue double
0.0
oldValue double
0.5
origin FlagValueOrigin
Management
startTime long: millis
1273897688
name string
G1PeriodicGCSystemLoadThreshold
newValue double
0.5
oldValue double
0.0
origin FlagValueOrigin
Management
startTime long: millis
1027791583

BooleanFlagChanged

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / Flag

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/flags/jvmFlagAccess.cpp:

    *((T*)value_addr) = old_value;
    flag->set_origin(origin);

    return JVMFlag::SUCCESS;
  }

  JVMFlag::Error check_constraint(const JVMFlag* flag, void * func, bool verbose) const  {
    return typed_check_constraint(func, flag->read<T>(), verbose);
  }

  virtual JVMFlag::Error typed_check_constraint(void * func, T value, bool verbose) const = 0;
};

class FlagAccessImpl_bool : public TypedFlagAccessImpl<bool, EventBooleanFlagChanged> {
public:
  JVMFlag::Error set_impl(JVMFlag* flag, void* value_addr, JVMFlagOrigin origin) const {
    bool verbose = JVMFlagLimit::verbose_checks_needed();
    return TypedFlagAccessImpl<bool, EventBooleanFlagChanged>
               ::check_constraint_and_set(flag, value_addr, origin, verbose);
  }

  JVMFlag::Error typed_check_constraint(void* func, bool value, bool verbose) const {
    return ((JVMFlagConstraintFunc_bool)func)(value, verbose);
  }
};

template <typename T, typename EVENT>
class RangedFlagAccessImpl : public TypedFlagAccessImpl<T, EVENT> {
public:

Configuration enabled
profiling true
default true

Field Type Description
name string Name
oldValue boolean Old Value
newValue boolean New Value
origin FlagValueOrigin Origin

Examples 3
name string
PrintConcurrentLocks
newValue boolean
true
oldValue boolean
false
origin FlagValueOrigin
Management
startTime long: millis
1225778387
name string
PrintConcurrentLocks
newValue boolean
true
oldValue boolean
false
origin FlagValueOrigin
Management
startTime long: millis
1027588939
name string
PrintConcurrentLocks
newValue boolean
false
oldValue boolean
true
origin FlagValueOrigin
Management
startTime long: millis
1273587227

StringFlagChanged

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / Flag

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/flags/jvmFlagAccess.cpp:

JVMFlag::Error JVMFlagAccess::set_impl(JVMFlag* flag, void* value, JVMFlagOrigin origin) {
  if (flag->is_ccstr()) {
    return set_ccstr(flag, (ccstr*)value, origin);
  } else {
    return access_impl(flag)->set(flag, value, origin);
  }
}

JVMFlag::Error JVMFlagAccess::set_ccstr(JVMFlag* flag, ccstr* value, JVMFlagOrigin origin) {
  if (flag == NULL) return JVMFlag::INVALID_FLAG;
  if (!flag->is_ccstr()) return JVMFlag::WRONG_FORMAT;
  ccstr old_value = flag->get_ccstr();
  trace_flag_changed<ccstr, EventStringFlagChanged>(flag, old_value, *value, origin);
  char* new_value = NULL;
  if (*value != NULL) {
    new_value = os::strdup_check_oom(*value);
  }
  flag->set_ccstr(new_value);
  if (!flag->is_default() && old_value != NULL) {
    // Old value is heap allocated so free it.
    FREE_C_HEAP_ARRAY(char, old_value);
  }
  // Unlike the other APIs, the old vale is NOT returned, so the caller won't need to free it.
  // The callers typically don't care what the old value is.

Configuration enabled
profiling true
default true

Field Type Description
name string Name
oldValue string Old Value
newValue string New Value
origin FlagValueOrigin Origin

Examples 3
name string
HeapDumpPath
newValue string
/tmp/jfr_heap
oldValue string
null
origin FlagValueOrigin
Management
startTime long: millis
1226015669
name string
HeapDumpPath
newValue string
/tmp/jfr_heap
oldValue string
null
origin FlagValueOrigin
Management
startTime long: millis
1273790417
name string
HeapDumpPath
newValue string
/tmp/jfr_heap
oldValue string
null
origin FlagValueOrigin
Management
startTime long: millis
1027752265

IntFlag

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Flag

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
name string Name
value int Value
origin FlagValueOrigin Origin

Examples 3
name string
HeapDumpGzipLevel
origin FlagValueOrigin
Default
startTime long: millis
330135502992
value int
0
name string
DiagnoseSyncOnValueBasedClasses
origin FlagValueOrigin
Command line
startTime long: millis
271070852
value int
2
name string
FastAllocateSizeLimit
origin FlagValueOrigin
Default
startTime long: millis
623778499316
value int
131072

UnsignedIntFlag

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Flag

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
name string Name
value uint Value
origin FlagValueOrigin Origin

Examples 3
name string
StringDeduplicationAgeThreshold
origin FlagValueOrigin
Default
startTime long: millis
623778511894
value uint
3
name string
TypeProfileLevel
origin FlagValueOrigin
Default
startTime long: millis
330135515339
value uint
111
name string
BinarySearchThreshold
origin FlagValueOrigin
Default
startTime long: millis
5677526771
value uint
16

LongFlag

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Flag

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
name string Name
value long Value
origin FlagValueOrigin Origin

Examples 3
name string
CIStart
origin FlagValueOrigin
Default
startTime long: millis
271111124
value long
0
name string
OptoPrologueNops
origin FlagValueOrigin
Default
startTime long: millis
330135523200
value long
0
name string
MaxBCEAEstimateLevel
origin FlagValueOrigin
Default
startTime long: millis
623778536431
value long
5

UnsignedLongFlag

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Flag

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
name string Name
value ulong Value
origin FlagValueOrigin Origin

Examples 3
name string
GCOverheadLimitThreshold
origin FlagValueOrigin
Default
startTime long: millis
330135543251
value ulong
5
name string
CompressedClassSpaceSize
origin FlagValueOrigin
Default
startTime long: millis
623778563020
value ulong
1073741824
name string
NUMASpaceResizeRate
origin FlagValueOrigin
Default
startTime long: millis
271138056
value ulong
1073741824

DoubleFlag

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Flag

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
name string Name
value double Value
origin FlagValueOrigin Origin

Examples 3
name string
G1ConcMarkStepDurationMillis
origin FlagValueOrigin
Default
startTime long: millis
338068883051
value double
10.0
name string
ZCollectionIntervalMajor
origin FlagValueOrigin
Default
startTime long: millis
638749022442
value double
-1.0
name string
Tier2ProfileDelayFactor
origin FlagValueOrigin
Default
startTime long: millis
5677559563
value double
250.0

BooleanFlag

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Flag

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
name string Name
value boolean Value
origin FlagValueOrigin Origin

Examples 3
name string
RestrictReservedStack
origin FlagValueOrigin
Default
startTime long: millis
623778634546
value boolean
true
name string
PrintIRDuringConstruction
origin FlagValueOrigin
Default
startTime long: millis
330135558118
value boolean
false
name string
UseNewLongLShift
origin FlagValueOrigin
Default
startTime long: millis
271154312
value boolean
false

StringFlag

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Flag

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
name string Name
value string Value
origin FlagValueOrigin Origin

Examples 3
name string
AbortVMOnExceptionMessage
origin FlagValueOrigin
Default
startTime long: millis
5677615790
value string
null
name string
DeoptimizeOnlyAt
origin FlagValueOrigin
Default
startTime long: millis
623778652803
value string
name string
HeapDumpPath
origin FlagValueOrigin
Default
startTime long: millis
330135607075
value string
null

JVM: GC: Collector

GarbageCollection

profiling default startTime duration 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Collector

Garbage collection performed by the JVM

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

// All GC dependencies against the trace framework is contained within this file.

typedef uintptr_t TraceAddress;

void GCTracer::send_garbage_collection_event() const {
  EventGarbageCollection event(UNTIMED);
  if (event.should_commit()) {
    event.set_gcId(GCId::current());
    event.set_name(_shared_gc_info.name());
    event.set_cause((u2) _shared_gc_info.cause());
    event.set_sumOfPauses(_shared_gc_info.sum_of_pauses());
    event.set_longestPause(_shared_gc_info.longest_pause());
    event.set_starttime(_shared_gc_info.start_timestamp());
    event.set_endtime(_shared_gc_info.end_timestamp());
    event.commit();
  }
}

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
gcId uint GC Identifier
name GCName Name The name of the Garbage Collector
cause GCCause Cause The reason for triggering this Garbage Collection
sumOfPauses Tickspan Sum of Pauses Sum of all the times in which Java execution was paused during the garbage collection
longestPause Tickspan Longest Pause Longest individual pause during the garbage collection

Examples 3
cause GCCause
Heap Inspection Initiated GC
gcId uint
0
longestPause Tickspan
9545547
name GCName
G1Full
startTime long: millis
271339945
sumOfPauses Tickspan
9545547
cause GCCause
Heap Inspection Initiated GC
gcId uint
1156
longestPause Tickspan
178382308
name GCName
G1Full
startTime long: millis
340721543311
sumOfPauses Tickspan
178382308
cause GCCause
Heap Inspection Initiated GC
gcId uint
341
longestPause Tickspan
244810306
name GCName
ParallelOld
startTime long: millis
640710192557
sumOfPauses Tickspan
244810306

SystemGC

profiling default startTime duration eventThread stackTrace 17 21 25 27 28

Category: Java Virtual Machine / GC / Collector

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/prims/jvm.cpp:

    event.commit();
  }
JVM_END


JVM_ENTRY_NO_ENV(void, JVM_Halt(jint code))
  before_exit(thread);
  vm_exit(code);
JVM_END


JVM_ENTRY_NO_ENV(void, JVM_GC(void))
  if (!DisableExplicitGC) {
    EventSystemGC event;
    event.set_invokedConcurrent(ExplicitGCInvokesConcurrent);
    Universe::heap()->collect(GCCause::_java_lang_system_gc);
    event.commit();
  }
JVM_END


JVM_LEAF(jlong, JVM_MaxObjectInspectionAge(void))
  return Universe::heap()->millis_since_last_whole_heap_examined();
JVM_END

Configuration enabled stackTrace threshold
profiling true true 0 ms
default true true 0 ms

Field Type Description
invokedConcurrent boolean Invoked Concurrent

Examples 3
invokedConcurrent boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
()V
hidden boolean
false
modifiers int
257
name string
gc
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/lang/Runtime
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
668860130389
invokedConcurrent boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
()V
hidden boolean
false
modifiers int
257
name string
gc
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/lang/Runtime
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
2951119192
invokedConcurrent boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
()V
hidden boolean
false
modifiers int
257
name string
gc
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/lang/Runtime
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
355214712367

ParallelOldGarbageCollection

profiling default startTime duration 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Collector

Appearing in: linux_ParallelGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Extra information specific to Parallel Old Garbage Collections

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

    e.set_smallChunksTotalSize(summary.small_chunks_size_in_bytes());

    e.set_mediumChunks(summary.num_medium_chunks());
    e.set_mediumChunksTotalSize(summary.medium_chunks_size_in_bytes());

    e.set_humongousChunks(summary.num_humongous_chunks());
    e.set_humongousChunksTotalSize(summary.humongous_chunks_size_in_bytes());

    e.commit();
  }
}

void ParallelOldTracer::send_parallel_old_event() const {
  EventParallelOldGarbageCollection e(UNTIMED);
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_densePrefix((TraceAddress)_parallel_old_gc_info.dense_prefix());
    e.set_starttime(_shared_gc_info.start_timestamp());
    e.set_endtime(_shared_gc_info.end_timestamp());
    e.commit();
  }
}

void YoungGCTracer::send_young_gc_event() const {
  EventYoungGarbageCollection e(UNTIMED);

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
gcId uint GC Identifier
densePrefix ulong: address Dense Prefix The address of the dense prefix, used when compacting

Examples 2
densePrefix ulong: address
30424432640
gcId uint
364
startTime long: millis
678868925903
densePrefix ulong: address
30173822976
gcId uint
32
startTime long: millis
1730187196

YoungGarbageCollection

profiling default startTime duration 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Collector

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: graalvm_linux_native, linux_ShenandoahGC, linux_ZGC

Extra information specific to Young Garbage Collections

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

void ParallelOldTracer::send_parallel_old_event() const {
  EventParallelOldGarbageCollection e(UNTIMED);
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_densePrefix((TraceAddress)_parallel_old_gc_info.dense_prefix());
    e.set_starttime(_shared_gc_info.start_timestamp());
    e.set_endtime(_shared_gc_info.end_timestamp());
    e.commit();
  }
}

void YoungGCTracer::send_young_gc_event() const {
  EventYoungGarbageCollection e(UNTIMED);
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_tenuringThreshold(_tenuring_threshold);
    e.set_starttime(_shared_gc_info.start_timestamp());
    e.set_endtime(_shared_gc_info.end_timestamp());
    e.commit();
  }
}

bool YoungGCTracer::should_send_promotion_in_new_plab_event() const {
  return EventPromoteObjectInNewPLAB::is_enabled();

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
gcId uint GC Identifier
tenuringThreshold uint Tenuring Threshold

Examples 3
gcId uint
1163
startTime long: millis
342117164632
tenuringThreshold uint
15
gcId uint
353
startTime long: millis
665497607172
tenuringThreshold uint
1
gcId uint
136
startTime long: millis
2150714791
tenuringThreshold uint
1

OldGarbageCollection

profiling default startTime duration 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Collector

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: graalvm_linux_native, linux_ShenandoahGC, linux_ZGC

Extra information specific to Old Garbage Collections

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

  EventPromoteObjectOutsidePLAB event;
  if (event.should_commit()) {
    event.set_gcId(GCId::current());
    event.set_objectClass(klass);
    event.set_objectSize(obj_size);
    event.set_tenured(tenured);
    event.set_tenuringAge(age);
    event.commit();
  }
}

void OldGCTracer::send_old_gc_event() const {
  EventOldGarbageCollection e(UNTIMED);
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_starttime(_shared_gc_info.start_timestamp());
    e.set_endtime(_shared_gc_info.end_timestamp());
    e.commit();
  }
}

static JfrStructCopyFailed to_struct(const CopyFailedInfo& cf_info) {
  JfrStructCopyFailed failed_info;
  failed_info.set_objectCount(cf_info.failed_count());

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
gcId uint GC Identifier

Examples 3
gcId uint
1184
startTime long: millis
345720134755
gcId uint
369
startTime long: millis
687262804716
gcId uint
166
startTime long: millis
2476761832

G1GarbageCollection

profiling default startTime duration 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Collector

Appearing in: graalvm_linux_G1GC, linux_G1GC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Extra information specific to G1 Young Garbage Collections

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/g1/g1Trace.cpp:

  send_adaptive_ihop_statistics(threshold,
                                internal_target_occupancy,
                                current_occupancy,
                                additional_buffer_size,
                                predicted_allocation_rate,
                                predicted_marking_length,
                                prediction_active);
}

void G1NewTracer::send_g1_young_gc_event() {
  // Check that the pause type has been updated to something valid for this event.
  G1GCPauseTypeHelper::assert_is_young_pause(_pause);

  EventG1GarbageCollection e(UNTIMED);
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_type(static_cast<uint>(_pause));
    e.set_starttime(_shared_gc_info.start_timestamp());
    e.set_endtime(_shared_gc_info.end_timestamp());
    e.commit();
  }
}

void G1NewTracer::send_evacuation_info_event(G1EvacInfo* info) {
  EventEvacuationInformation e;

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
gcId uint GC Identifier
type G1YCType Type

Examples 3
gcId uint
1178
startTime long: millis
344613480971
type G1YCType
Concurrent Start
gcId uint
52
startTime long: millis
1408741916
type G1YCType
Normal
gcId uint
1199
startTime long: millis
469775869403
type G1YCType
Concurrent Start

JVM: GC: Configuration

GCConfiguration

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Configuration

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

The configuration of the garbage collector

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

TRACE_REQUEST_FUNC(G1HeapRegionInformation) {
  G1GC_ONLY(G1HeapRegionEventSender::send_events());
}

// Java Mission Control (JMC) uses (Java) Long.MIN_VALUE to describe that a
// long value is undefined.
static jlong jmc_undefined_long = min_jlong;

TRACE_REQUEST_FUNC(GCConfiguration) {
  GCConfiguration conf;
  jlong pause_target = conf.has_pause_target_default_value() ? jmc_undefined_long : conf.pause_target();
  EventGCConfiguration event;
  event.set_youngCollector(conf.young_collector());
  event.set_oldCollector(conf.old_collector());
  event.set_parallelGCThreads(conf.num_parallel_gc_threads());
  event.set_concurrentGCThreads(conf.num_concurrent_gc_threads());
  event.set_usesDynamicGCThreads(conf.uses_dynamic_gc_threads());
  event.set_isExplicitGCConcurrent(conf.is_explicit_gc_concurrent());
  event.set_isExplicitGCDisabled(conf.is_explicit_gc_disabled());
  event.set_gcTimeRatio(conf.gc_time_ratio());
  event.set_pauseTarget((s8)pause_target);
  event.commit();
}

Configuration enabled period
profiling true everyChunk
default true everyChunk

Field Type Description
youngCollector GCName Young Garbage Collector The garbage collector used for the young generation
oldCollector GCName Old Garbage Collector The garbage collector used for the old generation
parallelGCThreads uint Parallel GC Threads Number of parallel threads to use for garbage collection
concurrentGCThreads uint Concurrent GC Threads Number of concurrent threads to use for garbage collection
usesDynamicGCThreads boolean Uses Dynamic GC Threads Whether a dynamic number of GC threads are used or not
isExplicitGCConcurrent boolean Concurrent Explicit GC Whether System.gc() is concurrent or not
isExplicitGCDisabled boolean Disabled Explicit GC Whether System.gc() will cause a garbage collection or not
pauseTarget long: millis Pause Target Target for GC pauses
gcTimeRatio uint GC Time Ratio Target for runtime vs garbage collection time

Examples 3
concurrentGCThreads uint
1
gcTimeRatio uint
12
isExplicitGCConcurrent boolean
false
isExplicitGCDisabled boolean
false
oldCollector GCName
G1Old
parallelGCThreads uint
4
pauseTarget long: millis
-9223372036854775808
startTime long: millis
16478193456
usesDynamicGCThreads boolean
true
youngCollector GCName
G1New
concurrentGCThreads uint
0
gcTimeRatio uint
99
isExplicitGCConcurrent boolean
false
isExplicitGCDisabled boolean
false
oldCollector GCName
ParallelOld
parallelGCThreads uint
4
pauseTarget long: millis
-9223372036854775808
startTime long: millis
652413936242
usesDynamicGCThreads boolean
true
youngCollector GCName
ParallelScavenge
concurrentGCThreads uint
1
gcTimeRatio uint
12
isExplicitGCConcurrent boolean
false
isExplicitGCDisabled boolean
false
oldCollector GCName
G1Old
parallelGCThreads uint
4
pauseTarget long: millis
-9223372036854775808
startTime long: millis
342673447855
usesDynamicGCThreads boolean
true
youngCollector GCName
G1New

GCSurvivorConfiguration

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Configuration

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

The configuration of the survivors of garbage collection

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

TRACE_REQUEST_FUNC(GCTLABConfiguration) {
  GCTLABConfiguration conf;
  EventGCTLABConfiguration event;
  event.set_usesTLABs(conf.uses_tlabs());
  event.set_minTLABSize(conf.min_tlab_size());
  event.set_tlabRefillWasteLimit(conf.tlab_refill_waste_limit());
  event.commit();
}

TRACE_REQUEST_FUNC(GCSurvivorConfiguration) {
  GCSurvivorConfiguration conf;
  EventGCSurvivorConfiguration event;
  event.set_maxTenuringThreshold(conf.max_tenuring_threshold());
  event.set_initialTenuringThreshold(conf.initial_tenuring_threshold());
  event.commit();
}

TRACE_REQUEST_FUNC(GCHeapConfiguration) {
  GCHeapConfiguration conf;
  EventGCHeapConfiguration event;
  event.set_minSize(conf.min_size());
  event.set_maxSize(conf.max_size());
  event.set_initialSize(conf.initial_size());

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
maxTenuringThreshold ubyte Maximum Tenuring Threshold Upper limit for the age of how old objects to keep in the survivor area
initialTenuringThreshold ubyte Initial Tenuring Threshold Initial age limit for how old objects to keep in survivor area

Examples 3
initialTenuringThreshold ubyte
7
maxTenuringThreshold ubyte
15
startTime long: millis
672977853519
initialTenuringThreshold ubyte
7
maxTenuringThreshold ubyte
15
startTime long: millis
11241559669
initialTenuringThreshold ubyte
7
maxTenuringThreshold ubyte
15
startTime long: millis
341215162090

GCTLABConfiguration

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Configuration

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

The configuration of the Thread Local Allocation Buffers (TLABs)

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

  event.set_oldCollector(conf.old_collector());
  event.set_parallelGCThreads(conf.num_parallel_gc_threads());
  event.set_concurrentGCThreads(conf.num_concurrent_gc_threads());
  event.set_usesDynamicGCThreads(conf.uses_dynamic_gc_threads());
  event.set_isExplicitGCConcurrent(conf.is_explicit_gc_concurrent());
  event.set_isExplicitGCDisabled(conf.is_explicit_gc_disabled());
  event.set_gcTimeRatio(conf.gc_time_ratio());
  event.set_pauseTarget((s8)pause_target);
  event.commit();
}

TRACE_REQUEST_FUNC(GCTLABConfiguration) {
  GCTLABConfiguration conf;
  EventGCTLABConfiguration event;
  event.set_usesTLABs(conf.uses_tlabs());
  event.set_minTLABSize(conf.min_tlab_size());
  event.set_tlabRefillWasteLimit(conf.tlab_refill_waste_limit());
  event.commit();
}

TRACE_REQUEST_FUNC(GCSurvivorConfiguration) {
  GCSurvivorConfiguration conf;
  EventGCSurvivorConfiguration event;
  event.set_maxTenuringThreshold(conf.max_tenuring_threshold());
  event.set_initialTenuringThreshold(conf.initial_tenuring_threshold());

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
usesTLABs boolean TLABs Used If Thread Local Allocation Buffers (TLABs) are in use
minTLABSize ulong: bytes Minimum TLAB Size
tlabRefillWasteLimit ulong: bytes TLAB Refill Waste Limit

Examples 3
minTLABSize ulong: bytes
2048
startTime long: millis
679524017408
tlabRefillWasteLimit ulong: bytes
64
usesTLABs boolean
true
minTLABSize ulong: bytes
2048
startTime long: millis
16528189929
tlabRefillWasteLimit ulong: bytes
64
usesTLABs boolean
true
minTLABSize ulong: bytes
2048
startTime long: millis
357788335187
tlabRefillWasteLimit ulong: bytes
64
usesTLABs boolean
true

GCHeapConfiguration

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Configuration

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

The configuration of the garbage collected heap

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

  event.commit();
}

TRACE_REQUEST_FUNC(GCSurvivorConfiguration) {
  GCSurvivorConfiguration conf;
  EventGCSurvivorConfiguration event;
  event.set_maxTenuringThreshold(conf.max_tenuring_threshold());
  event.set_initialTenuringThreshold(conf.initial_tenuring_threshold());
  event.commit();
}

TRACE_REQUEST_FUNC(GCHeapConfiguration) {
  GCHeapConfiguration conf;
  EventGCHeapConfiguration event;
  event.set_minSize(conf.min_size());
  event.set_maxSize(conf.max_size());
  event.set_initialSize(conf.initial_size());
  event.set_usesCompressedOops(conf.uses_compressed_oops());
  event.set_compressedOopsMode(conf.narrow_oop_mode());
  event.set_objectAlignment(conf.object_alignment_in_bytes());
  event.set_heapAddressBits(conf.heap_address_size_in_bits());
  event.commit();
}

TRACE_REQUEST_FUNC(YoungGenerationConfiguration) {

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
minSize ulong: bytes Minimum Heap Size
maxSize ulong: bytes Maximum Heap Size
initialSize ulong: bytes Initial Heap Size
usesCompressedOops boolean If Compressed Oops Are Used If compressed Oops (Ordinary Object Pointers) are enabled
compressedOopsMode NarrowOopMode Compressed Oops Mode The kind of compressed oops being used
objectAlignment ulong: bytes Object Alignment Object alignment (in bytes) on the heap
heapAddressBits ubyte Heap Address Size Heap Address Size (in bits)

Examples 3
compressedOopsMode NarrowOopMode
Zero based
heapAddressBits ubyte
32
initialSize ulong: bytes
262144000
maxSize ulong: bytes
4192206848
minSize ulong: bytes
8388608
objectAlignment ulong: bytes
8
startTime long: millis
366503458815
usesCompressedOops boolean
true
compressedOopsMode NarrowOopMode
Zero based
heapAddressBits ubyte
32
initialSize ulong: bytes
262144000
maxSize ulong: bytes
4192206848
minSize ulong: bytes
8388608
objectAlignment ulong: bytes
8
startTime long: millis
281154676
usesCompressedOops boolean
true
compressedOopsMode NarrowOopMode
Zero based
heapAddressBits ubyte
32
initialSize ulong: bytes
262144000
maxSize ulong: bytes
4192206848
minSize ulong: bytes
8388608
objectAlignment ulong: bytes
8
startTime long: millis
682543663793
usesCompressedOops boolean
true

YoungGenerationConfiguration

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Configuration

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

The configuration of the young generation of the garbage collected heap

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

  event.set_minSize(conf.min_size());
  event.set_maxSize(conf.max_size());
  event.set_initialSize(conf.initial_size());
  event.set_usesCompressedOops(conf.uses_compressed_oops());
  event.set_compressedOopsMode(conf.narrow_oop_mode());
  event.set_objectAlignment(conf.object_alignment_in_bytes());
  event.set_heapAddressBits(conf.heap_address_size_in_bits());
  event.commit();
}

TRACE_REQUEST_FUNC(YoungGenerationConfiguration) {
  GCYoungGenerationConfiguration conf;
  jlong max_size = conf.has_max_size_default_value() ? jmc_undefined_long : conf.max_size();
  EventYoungGenerationConfiguration event;
  event.set_maxSize((u8)max_size);
  event.set_minSize(conf.min_size());
  event.set_newRatio(conf.new_ratio());
  event.commit();
}

TRACE_REQUEST_FUNC(InitialSystemProperty) {
  SystemProperty* p = Arguments::system_properties();
  JfrTicks time_stamp = JfrTicks::now();
  while (p !=  NULL) {
    if (!p->internal()) {

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
minSize ulong: bytes Minimum Young Generation Size
maxSize ulong: bytes Maximum Young Generation Size
newRatio uint New Ratio The size of the young generation relative to the tenured generation

Examples 3
maxSize ulong: bytes
2514485248
minSize ulong: bytes
1363144
newRatio uint
2
startTime long: millis
360433040674
maxSize ulong: bytes
1396703232
minSize ulong: bytes
85983232
newRatio uint
2
startTime long: millis
644278700984
maxSize ulong: bytes
2514485248
minSize ulong: bytes
1363144
newRatio uint
2
startTime long: millis
16528191506

JVM: GC: Detailed

ZThreadDebug

internal startTime duration eventThread 18 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Temporary latency measurements used during development and debugging of ZGC

Only valid for the ZGC.

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/z/zTracer.cpp:

  NoSafepointVerifier nsv;

  EventZThreadPhase e(UNTIMED);
  if (e.should_commit()) {
    e.set_gcId(GCId::current_or_undefined());
    e.set_name(name);
    e.set_starttime(start);
    e.set_endtime(end);
    e.commit();
  }
}

void ZTracer::send_thread_debug(const char* name, const Ticks& start, const Ticks& end) {
  NoSafepointVerifier nsv;

  EventZThreadDebug e(UNTIMED);
  if (e.should_commit()) {
    e.set_gcId(GCId::current_or_undefined());
    e.set_name(name);
    e.set_starttime(start);
    e.set_endtime(end);
    e.commit();
  }
}

src/hotspot/share/gc/z/zTracer.inline.hpp:

inline void ZTracer::report_stat_sampler(const ZStatSampler& sampler, uint64_t value) {
  if (EventZStatisticsSampler::is_enabled()) {
    send_stat_sampler(sampler, value);
  }
}

inline void ZTracer::report_thread_phase(const char* name, const Ticks& start, const Ticks& end) {
  if (EventZThreadPhase::is_enabled()) {
    send_thread_phase(name, start, end);
  }
}

inline void ZTracer::report_thread_debug(const char* name, const Ticks& start, const Ticks& end) {
  if (EventZThreadDebug::is_enabled()) {
    send_thread_debug(name, start, end);
  }
}

inline ZTraceThreadDebug::ZTraceThreadDebug(const char* name) :
    _start(Ticks::now()),
    _name(name) {}

inline ZTraceThreadDebug::~ZTraceThreadDebug() {
  ZTracer::tracer()->report_thread_debug(_name, _start, Ticks::now());
}

Field Type Description
gcId uint GC Identifier
name string Name The name of the GC runner

G1MMU

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: graalvm_linux_G1GC, linux_G1GC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/g1/g1Trace.cpp:

void G1OldTracer::report_gc_start_impl(GCCause::Cause cause, const Ticks& timestamp) {
  _shared_gc_info.set_start_timestamp(timestamp);
}

void G1OldTracer::set_gc_cause(GCCause::Cause cause) {
  _shared_gc_info.set_cause(cause);
}

void G1MMUTracer::report_mmu(double time_slice_sec, double gc_time_sec, double max_time_sec) {
  send_g1_mmu_event(time_slice_sec * MILLIUNITS,
                    gc_time_sec * MILLIUNITS,
                    max_time_sec * MILLIUNITS);
}

void G1MMUTracer::send_g1_mmu_event(double time_slice_ms, double gc_time_ms, double max_time_ms) {
  EventG1MMU e;
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_timeSlice(time_slice_ms);
    e.set_gcTime(gc_time_ms);
    e.set_pauseTarget(max_time_ms);
    e.commit();
  }
}

Configuration enabled
profiling true
default true

Field Type Description
gcId uint GC Identifier
timeSlice long: millis Time Slice Time slice used to calculate MMU
gcTime long: millis GC Time Time stopped because of GC during last time slice
pauseTarget long: millis Pause Target Max time allowed to be spent on GC during last time slice

Examples 3
gcId uint
1192
gcTime long: millis
4
pauseTarget long: millis
200
startTime long: millis
467210452997
timeSlice long: millis
201
gcId uint
1210
gcTime long: millis
6
pauseTarget long: millis
200
startTime long: millis
352140664777
timeSlice long: millis
201
gcId uint
165
gcTime long: millis
6
pauseTarget long: millis
200
startTime long: millis
2475435121
timeSlice long: millis
201

EvacuationInformation

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: graalvm_linux_G1GC, linux_G1GC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/g1/g1Trace.cpp:

  G1GCPauseTypeHelper::assert_is_young_pause(_pause);

  EventG1GarbageCollection e(UNTIMED);
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_type(static_cast<uint>(_pause));
    e.set_starttime(_shared_gc_info.start_timestamp());
    e.set_endtime(_shared_gc_info.end_timestamp());
    e.commit();
  }
}

void G1NewTracer::send_evacuation_info_event(G1EvacInfo* info) {
  EventEvacuationInformation e;
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_cSetRegions(info->collectionset_regions());
    e.set_cSetUsedBefore(info->collectionset_used_before());
    e.set_cSetUsedAfter(info->collectionset_used_after());
    e.set_allocationRegions(info->allocation_regions());
    e.set_allocationRegionsUsedBefore(info->alloc_regions_used_before());
    e.set_allocationRegionsUsedAfter(info->alloc_regions_used_before() + info->bytes_used());
    e.set_bytesCopied(info->bytes_used());
    e.set_regionsFreed(info->regions_freed());
    e.commit();

Configuration enabled
profiling true
default true

Field Type Description
gcId uint GC Identifier
cSetRegions uint Collection Set Regions
cSetUsedBefore ulong: bytes Collection Set Before Memory usage before GC in the collection set regions
cSetUsedAfter ulong: bytes Collection Set After Memory usage after GC in the collection set regions
allocationRegions uint Allocation Regions Regions chosen as allocation regions during evacuation (includes survivors and old space regions)
allocationRegionsUsedBefore ulong: bytes Allocation Regions Before Memory usage before GC in allocation regions
allocationRegionsUsedAfter ulong: bytes Allocation Regions After Memory usage after GC in allocation regions
bytesCopied ulong: bytes Bytes Copied
regionsFreed uint Regions Freed

Examples 3
allocationRegions uint
3
allocationRegionsUsedAfter ulong: bytes
5649952
allocationRegionsUsedBefore ulong: bytes
0
bytesCopied ulong: bytes
5649952
cSetRegions uint
6
cSetUsedAfter ulong: bytes
0
cSetUsedBefore ulong: bytes
12579216
gcId uint
159
regionsFreed uint
6
startTime long: millis
2404970399
allocationRegions uint
2
allocationRegionsUsedAfter ulong: bytes
2382632
allocationRegionsUsedBefore ulong: bytes
0
bytesCopied ulong: bytes
2382632
cSetRegions uint
149
cSetUsedAfter ulong: bytes
0
cSetUsedBefore ulong: bytes
309591600
gcId uint
1174
regionsFreed uint
149
startTime long: millis
462597846750
allocationRegions uint
1
allocationRegionsUsedAfter ulong: bytes
1332688
allocationRegionsUsedBefore ulong: bytes
0
bytesCopied ulong: bytes
1332688
cSetRegions uint
35
cSetUsedAfter ulong: bytes
0
cSetUsedBefore ulong: bytes
70605032
gcId uint
1133
regionsFreed uint
35
startTime long: millis
336062092160

ObjectCountAfterGC

startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: graalvm_linux_native, linux_ShenandoahGC, linux_ZGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/objectCountEventSender.cpp:

#if INCLUDE_SERVICES

bool ObjectCountEventSender::should_send_event() {
#if INCLUDE_JFR
  return _should_send_requestable_event || EventObjectCountAfterGC::is_enabled();
#else
  return false;
#endif // INCLUDE_JFR
}

bool ObjectCountEventSender::_should_send_requestable_event = false;

void ObjectCountEventSender::enable_requestable_event() {
  _should_send_requestable_event = true;
}

src/hotspot/share/gc/shared/objectCountEventSender.cpp:

template <typename T>
void ObjectCountEventSender::send_event_if_enabled(Klass* klass, jlong count, julong size, const Ticks& timestamp) {
  T event(UNTIMED);
  if (event.should_commit()) {
    event.set_gcId(GCId::current());
    event.set_objectClass(klass);
    event.set_count(count);
    event.set_totalSize(size);
    event.set_endtime(timestamp);
    event.commit();
  }
}

void ObjectCountEventSender::send(const KlassInfoEntry* entry, const Ticks& timestamp) {
  Klass* klass = entry->klass();
  jlong count = entry->count();
  julong total_size = entry->words() * BytesPerWord;

  send_event_if_enabled<EventObjectCount>(klass, count, total_size, timestamp);
  send_event_if_enabled<EventObjectCountAfterGC>(klass, count, total_size, timestamp);
}

#endif // INCLUDE_SERVICES

Configuration enabled
profiling false
default false

Field Type Description
gcId uint GC Identifier
objectClass Class Object Class
count long Count
totalSize ulong: bytes Total Size

Examples 3
count long
4900
gcId uint
20
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
8
name string
java/util/HashMap$Node
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util
startTime long: millis
1073171219
totalSize ulong: bytes
117600
count long
44100
gcId uint
1107
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
16
name string
jdk/internal/util/WeakReferenceKey
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/util
startTime long: millis
331534797525
totalSize ulong: bytes
1411200
count long
84069
gcId uint
331
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
16
name string
java/lang/invoke/MemberName
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang/invoke
startTime long: millis
623944068198
totalSize ulong: bytes
3362760

G1EvacuationYoungStatistics

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: graalvm_linux_G1GC, linux_G1GC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Memory related evacuation statistics during GC for the young generation

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/g1/g1Trace.cpp:

  s.set_allocated(summary.allocated() * HeapWordSize);
  s.set_wasted(summary.wasted() * HeapWordSize);
  s.set_used(summary.used() * HeapWordSize);
  s.set_undoWaste(summary.undo_wasted() * HeapWordSize);
  s.set_regionEndWaste(summary.region_end_waste() * HeapWordSize);
  s.set_regionsRefilled(summary.regions_filled());
  s.set_directAllocated(summary.direct_allocated() * HeapWordSize);
  s.set_failureUsed(summary.failure_used() * HeapWordSize);
  s.set_failureWaste(summary.failure_waste() * HeapWordSize);
  return s;
}

void G1NewTracer::send_young_evacuation_statistics(const G1EvacSummary& summary) const {
  EventG1EvacuationYoungStatistics surv_evt;
  if (surv_evt.should_commit()) {
    surv_evt.set_statistics(create_g1_evacstats(GCId::current(), summary));
    surv_evt.commit();
  }
}

void G1NewTracer::send_old_evacuation_statistics(const G1EvacSummary& summary) const {
  EventG1EvacuationOldStatistics old_evt;
  if (old_evt.should_commit()) {
    old_evt.set_statistics(create_g1_evacstats(GCId::current(), summary));
    old_evt.commit();

Configuration enabled
profiling true
default true

Field Type Description
statistics G1EvacuationStatistics struct Evacuation Statistics

Examples 3
startTime long: millis
469780696117
statistics G1EvacuationStatistics
allocated ulong: bytes
45240
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
1199
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
12848
wasted ulong: bytes
0
startTime long: millis
1409385905
statistics G1EvacuationStatistics
allocated ulong: bytes
2097152
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
52
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
2043880
wasted ulong: bytes
53272
startTime long: millis
341261135012
statistics G1EvacuationStatistics
allocated ulong: bytes
212968
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
1160
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
154232
wasted ulong: bytes
72

G1EvacuationOldStatistics

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: graalvm_linux_G1GC, linux_G1GC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Memory related evacuation statistics during GC for the old generation

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/g1/g1Trace.cpp:

  s.set_failureWaste(summary.failure_waste() * HeapWordSize);
  return s;
}

void G1NewTracer::send_young_evacuation_statistics(const G1EvacSummary& summary) const {
  EventG1EvacuationYoungStatistics surv_evt;
  if (surv_evt.should_commit()) {
    surv_evt.set_statistics(create_g1_evacstats(GCId::current(), summary));
    surv_evt.commit();
  }
}

void G1NewTracer::send_old_evacuation_statistics(const G1EvacSummary& summary) const {
  EventG1EvacuationOldStatistics old_evt;
  if (old_evt.should_commit()) {
    old_evt.set_statistics(create_g1_evacstats(GCId::current(), summary));
    old_evt.commit();
  }
}

void G1NewTracer::send_basic_ihop_statistics(size_t threshold,
                                             size_t target_occupancy,
                                             size_t current_occupancy,
                                             size_t last_allocation_size,
                                             double last_allocation_duration,

Configuration enabled
profiling true
default true

Field Type Description
statistics G1EvacuationStatistics struct Evacuation Statistics

Examples 3
startTime long: millis
471922678062
statistics G1EvacuationStatistics
allocated ulong: bytes
0
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
1209
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
0
undoWaste ulong: bytes
0
used ulong: bytes
0
wasted ulong: bytes
0
startTime long: millis
348988542891
statistics G1EvacuationStatistics
allocated ulong: bytes
0
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
1199
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
0
undoWaste ulong: bytes
0
used ulong: bytes
0
wasted ulong: bytes
0
startTime long: millis
2647282015
statistics G1EvacuationStatistics
allocated ulong: bytes
0
directAllocated ulong: bytes
505776
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
182
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
0
wasted ulong: bytes
0

G1BasicIHOP

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: graalvm_linux_G1GC, linux_G1GC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Basic statistics related to current IHOP calculation

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/g1/g1Trace.cpp:

  EventG1EvacuationOldStatistics old_evt;
  if (old_evt.should_commit()) {
    old_evt.set_statistics(create_g1_evacstats(GCId::current(), summary));
    old_evt.commit();
  }
}

void G1NewTracer::send_basic_ihop_statistics(size_t threshold,
                                             size_t target_occupancy,
                                             size_t current_occupancy,
                                             size_t last_allocation_size,
                                             double last_allocation_duration,
                                             double last_marking_length) {
  EventG1BasicIHOP evt;
  if (evt.should_commit()) {
    evt.set_gcId(GCId::current());
    evt.set_threshold(threshold);
    evt.set_targetOccupancy(target_occupancy);
    evt.set_thresholdPercentage(target_occupancy > 0 ? ((double)threshold / target_occupancy) : 0.0);
    evt.set_currentOccupancy(current_occupancy);
    evt.set_recentMutatorAllocationSize(last_allocation_size);
    evt.set_recentMutatorDuration(last_allocation_duration * MILLIUNITS);
    evt.set_recentAllocationRate(last_allocation_duration != 0.0 ? last_allocation_size / last_allocation_duration : 0.0);
    evt.set_lastMarkingDuration(last_marking_length * MILLIUNITS);
    evt.commit();

Configuration enabled
profiling true
default true

Field Type Description
gcId uint GC Identifier
threshold ulong: bytes Current IHOP Threshold Current IHOP threshold
thresholdPercentage float: percentage Current IHOP Threshold Current IHOP threshold in percent of old generation
targetOccupancy ulong: bytes Target Occupancy Target old generation occupancy to reach at the start of mixed GC
currentOccupancy ulong: bytes Current Occupancy Current old generation occupancy
recentMutatorAllocationSize ulong: bytes 11 17 21 25 until JDK 27 Recent Mutator Allocation Size Mutator allocation during mutator operation in the most recent interval
recentMutatorDuration long: millis 11 17 21 25 until JDK 27 Recent Mutator Duration Time the mutator ran in the most recent interval
recentAllocationRate double: bytes-per-second 11 17 21 25 until JDK 27 Recent Allocation Rate Allocation rate of the mutator in the most recent interval in bytes/second
lastMarkingDuration long: millis 11 17 21 25 until JDK 27 Last Marking Duration Last time from the end of the last concurrent start to the first mixed GC

Examples 3
currentOccupancy ulong: bytes
254934936
gcId uint
1150
lastMarkingDuration long: millis
820
recentAllocationRate double: bytes-per-second
0.0
recentMutatorAllocationSize ulong: bytes
0
recentMutatorDuration long: millis
3
startTime long: millis
339742989695
targetOccupancy ulong: bytes
868220928
threshold ulong: bytes
0
thresholdPercentage float: percentage
0.0
currentOccupancy ulong: bytes
9154744
gcId uint
168
lastMarkingDuration long: millis
41
recentAllocationRate double: bytes-per-second
0.0
recentMutatorAllocationSize ulong: bytes
0
recentMutatorDuration long: millis
1
startTime long: millis
2500055097
targetOccupancy ulong: bytes
35651584
threshold ulong: bytes
16043212
thresholdPercentage float: percentage
0.45
currentOccupancy ulong: bytes
299030032
gcId uint
1250
lastMarkingDuration long: millis
1150
recentAllocationRate double: bytes-per-second
0.0
recentMutatorAllocationSize ulong: bytes
0
recentMutatorDuration long: millis
1244
startTime long: millis
487871338894
targetOccupancy ulong: bytes
910163968
threshold ulong: bytes
0
thresholdPercentage float: percentage
0.0

G1AdaptiveIHOP

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: graalvm_linux_G1GC, linux_G1GC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Statistics related to current adaptive IHOP calculation

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/g1/g1Trace.cpp:

    evt.set_recentAllocationRate(last_allocation_duration != 0.0 ? last_allocation_size / last_allocation_duration : 0.0);
    evt.set_lastMarkingDuration(last_marking_length * MILLIUNITS);
    evt.commit();
  }
}

void G1NewTracer::send_adaptive_ihop_statistics(size_t threshold,
                                                size_t internal_target_occupancy,
                                                size_t current_occupancy,
                                                size_t additional_buffer_size,
                                                double predicted_allocation_rate,
                                                double predicted_marking_length,
                                                bool prediction_active) {
  EventG1AdaptiveIHOP evt;
  if (evt.should_commit()) {
    evt.set_gcId(GCId::current());
    evt.set_threshold(threshold);
    evt.set_thresholdPercentage(internal_target_occupancy > 0 ? ((double)threshold / internal_target_occupancy) : 0.0);
    evt.set_ihopTargetOccupancy(internal_target_occupancy);
    evt.set_currentOccupancy(current_occupancy);
    evt.set_additionalBufferSize(additional_buffer_size);
    evt.set_predictedAllocationRate(predicted_allocation_rate);
    evt.set_predictedMarkingDuration(predicted_marking_length * MILLIUNITS);
    evt.set_predictionActive(prediction_active);
    evt.commit();

Configuration enabled
profiling true
default true

Field Type Description
gcId uint GC Identifier
threshold ulong: bytes Threshold Current IHOP Threshold
thresholdPercentage float: percentage Threshold Current IHOP threshold in percent of the internal target occupancy
ihopTargetOccupancy ulong: bytes IHOP Target Occupancy Internal target old generation occupancy to reach at the start of mixed GC
currentOccupancy ulong: bytes Current Occupancy Current old generation occupancy
additionalBufferSize ulong: bytes Additional Buffer Additional buffer size
predictedAllocationRate double: bytes-per-second 11 17 21 25 until JDK 27 Predicted Allocation Rate Current predicted allocation rate for the mutator in bytes/second
predictedMarkingDuration long: millis Predicted Marking Duration Current predicted time from the end of the last concurrent start to the first mixed GC
predictionActive boolean Prediction Active Indicates whether the adaptive IHOP prediction is active

Examples 3
additionalBufferSize ulong: bytes
362807296
currentOccupancy ulong: bytes
589817944
gcId uint
1181
ihopTargetOccupancy ulong: bytes
844732825
predictedAllocationRate double: bytes-per-second
3.3939853602235234E8
predictedMarkingDuration long: millis
1400
predictionActive boolean
true
startTime long: millis
345650325400
threshold ulong: bytes
6610021
thresholdPercentage float: percentage
0.007824984
additionalBufferSize ulong: bytes
8388608
currentOccupancy ulong: bytes
15949952
gcId uint
203
ihopTargetOccupancy ulong: bytes
27892121
predictedAllocationRate double: bytes-per-second
9.928602973985763E8
predictedMarkingDuration long: millis
64
predictionActive boolean
false
startTime long: millis
2916295382
threshold ulong: bytes
13212057
thresholdPercentage float: percentage
0.4736842
additionalBufferSize ulong: bytes
541065216
currentOccupancy ulong: bytes
280943528
gcId uint
1238
ihopTargetOccupancy ulong: bytes
856686592
predictedAllocationRate double: bytes-per-second
8.21372368457721E8
predictedMarkingDuration long: millis
1893
predictionActive boolean
true
startTime long: millis
480403073404
threshold ulong: bytes
0
thresholdPercentage float: percentage
0.0

PromoteObjectInNewPLAB

profiling startTime eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC

Missing in: graalvm_linux_native, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Object survived scavenge and was copied to a new Promotion Local Allocation Buffer (PLAB). Supported GCs are Parallel Scavange, G1 and CMS with Parallel New. Due to promotion being done in parallel an object might be reported multiple times as the GC threads race to copy all objects.

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

void YoungGCTracer::send_young_gc_event() const {
  EventYoungGarbageCollection e(UNTIMED);
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_tenuringThreshold(_tenuring_threshold);
    e.set_starttime(_shared_gc_info.start_timestamp());
    e.set_endtime(_shared_gc_info.end_timestamp());
    e.commit();
  }
}

bool YoungGCTracer::should_send_promotion_in_new_plab_event() const {
  return EventPromoteObjectInNewPLAB::is_enabled();
}

bool YoungGCTracer::should_send_promotion_outside_plab_event() const {
  return EventPromoteObjectOutsidePLAB::is_enabled();
}

void YoungGCTracer::send_promotion_in_new_plab_event(Klass* klass, size_t obj_size,
                                                     uint age, bool tenured,
                                                     size_t plab_size) const {

  EventPromoteObjectInNewPLAB event;
  if (event.should_commit()) {
    event.set_gcId(GCId::current());
    event.set_objectClass(klass);
    event.set_objectSize(obj_size);
    event.set_tenured(tenured);
    event.set_tenuringAge(age);
    event.set_plabSize(plab_size);
    event.commit();
  }
}

Configuration enabled
profiling true
default false

Field Type Description
gcId uint GC Identifier Identifier signifying GC during which the object was promoted
objectClass Class Object Class Class of promoted object
objectSize ulong: bytes Object Size Size of promoted object
tenuringAge uint Object Tenuring Age Tenuring age of a surviving object before being copied. The tenuring age of an object is a value between 0-15 and is incremented each scavange the object survives. Newly allocated objects have tenuring age 0.
tenured boolean Tenured True if object was promoted to Old space, otherwise the object was aged and copied to a Survivor space
plabSize ulong: bytes PLAB Size Size of the allocated PLAB to which the object was copied

Examples 3
gcId uint
2
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[I
package Package
null
objectSize ulong: bytes
16
plabSize ulong: bytes
6904
startTime long: millis
452528354
tenured boolean
true
tenuringAge uint
1
gcId uint
346
objectClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
breeze/linalg/DenseVector$mcD$sp
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
breeze/linalg
objectSize ulong: bytes
32
plabSize ulong: bytes
32760
startTime long: millis
652137198882
tenured boolean
false
tenuringAge uint
0
gcId uint
1106
objectClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
org/apache/spark/mllib/linalg/DenseMatrix
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/spark/mllib/linalg
objectSize ulong: bytes
24
plabSize ulong: bytes
2048
startTime long: millis
331204874123
tenured boolean
false
tenuringAge uint
0

PromoteObjectOutsidePLAB

profiling startTime eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC

Missing in: graalvm_linux_native, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Object survived scavenge and was copied directly to the heap. Supported GCs are Parallel Scavange, G1 and CMS with Parallel New. Due to promotion being done in parallel an object might be reported multiple times as the GC threads race to copy all objects.

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

    e.set_gcId(GCId::current());
    e.set_tenuringThreshold(_tenuring_threshold);
    e.set_starttime(_shared_gc_info.start_timestamp());
    e.set_endtime(_shared_gc_info.end_timestamp());
    e.commit();
  }
}

bool YoungGCTracer::should_send_promotion_in_new_plab_event() const {
  return EventPromoteObjectInNewPLAB::is_enabled();
}

bool YoungGCTracer::should_send_promotion_outside_plab_event() const {
  return EventPromoteObjectOutsidePLAB::is_enabled();
}

void YoungGCTracer::send_promotion_in_new_plab_event(Klass* klass, size_t obj_size,
                                                     uint age, bool tenured,
                                                     size_t plab_size) const {

  EventPromoteObjectInNewPLAB event;
  if (event.should_commit()) {
    event.set_gcId(GCId::current());
    event.set_objectClass(klass);
    event.set_objectSize(obj_size);
    event.set_tenured(tenured);
    event.set_tenuringAge(age);
    event.set_plabSize(plab_size);
    event.commit();
  }
}

void YoungGCTracer::send_promotion_outside_plab_event(Klass* klass, size_t obj_size,
                                                      uint age, bool tenured) const {

  EventPromoteObjectOutsidePLAB event;
  if (event.should_commit()) {
    event.set_gcId(GCId::current());
    event.set_objectClass(klass);
    event.set_objectSize(obj_size);
    event.set_tenured(tenured);
    event.set_tenuringAge(age);
    event.commit();
  }
}

void OldGCTracer::send_old_gc_event() const {

Configuration enabled
profiling true
default false

Field Type Description
gcId uint GC Identifier Identifier signifying GC during which the object was promoted
objectClass Class Object Class Class of promoted object
objectSize ulong: bytes Object Size Size of promoted object
tenuringAge uint Object Tenuring Age Tenuring age of a surviving object before being copied. The tenuring age of an object is a value between 0-15 and is incremented each scavange the object survives. Newly allocated objects have tenuring age 0.
tenured boolean Tenured True if object was promoted to Old space, otherwise the object was aged and copied to a Survivor space

Examples 3
gcId uint
1106
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[D
package Package
null
objectSize ulong: bytes
528
startTime long: millis
331204881153
tenured boolean
false
tenuringAge uint
0
gcId uint
1
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
objectSize ulong: bytes
4112
startTime long: millis
449539108
tenured boolean
true
tenuringAge uint
0
gcId uint
348
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
objectSize ulong: bytes
21352
startTime long: millis
655322009058
tenured boolean
false
tenuringAge uint
0

PromotionFailed

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Promotion of an object failed

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

static JfrStructCopyFailed to_struct(const CopyFailedInfo& cf_info) {
  JfrStructCopyFailed failed_info;
  failed_info.set_objectCount(cf_info.failed_count());
  failed_info.set_firstSize(cf_info.first_size());
  failed_info.set_smallestSize(cf_info.smallest_size());
  failed_info.set_totalSize(cf_info.total_size());
  return failed_info;
}

void YoungGCTracer::send_promotion_failed_event(const PromotionFailedInfo& pf_info) const {
  EventPromotionFailed e;
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_promotionFailed(to_struct(pf_info));
    e.set_thread(pf_info.thread_trace_id());
    e.commit();
  }
}

// G1
void OldGCTracer::send_concurrent_mode_failure_event() {
  EventConcurrentModeFailure e;

Configuration enabled
profiling true
default true

Field Type Description
gcId uint GC Identifier
promotionFailed CopyFailed struct Promotion Failed Data
thread Thread Running thread

EvacuationFailed

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Evacuation of an object failed

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/g1/g1Trace.cpp:

    e.set_cSetRegions(info->collectionset_regions());
    e.set_cSetUsedBefore(info->collectionset_used_before());
    e.set_cSetUsedAfter(info->collectionset_used_after());
    e.set_allocationRegions(info->allocation_regions());
    e.set_allocationRegionsUsedBefore(info->alloc_regions_used_before());
    e.set_allocationRegionsUsedAfter(info->alloc_regions_used_before() + info->bytes_used());
    e.set_bytesCopied(info->bytes_used());
    e.set_regionsFreed(info->regions_freed());
    e.commit();
  }
}

void G1NewTracer::send_evacuation_failed_event(const EvacuationFailedInfo& ef_info) const {
  EventEvacuationFailed e;
  if (e.should_commit()) {
    // Create JFR structured failure data
    JfrStructCopyFailed evac_failed;
    evac_failed.set_objectCount(ef_info.failed_count());
    evac_failed.set_firstSize(ef_info.first_size());
    evac_failed.set_smallestSize(ef_info.smallest_size());
    evac_failed.set_totalSize(ef_info.total_size());
    // Add to the event
    e.set_gcId(GCId::current());
    e.set_evacuationFailed(evac_failed);
    e.commit();

Configuration enabled
profiling true
default true

Field Type Description
gcId uint GC Identifier
evacuationFailed CopyFailed struct Evacuation Failed Data

ConcurrentModeFailure

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: graalvm_linux_G1GC, linux_G1GC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Concurrent Mode failed

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

void YoungGCTracer::send_promotion_failed_event(const PromotionFailedInfo& pf_info) const {
  EventPromotionFailed e;
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_promotionFailed(to_struct(pf_info));
    e.set_thread(pf_info.thread_trace_id());
    e.commit();
  }
}

// G1
void OldGCTracer::send_concurrent_mode_failure_event() {
  EventConcurrentModeFailure e;
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.commit();
  }
}

static JfrStructVirtualSpace to_struct(const VirtualSpaceSummary& summary) {
  JfrStructVirtualSpace space;
  space.set_start((TraceAddress)summary.start());
  space.set_committedEnd((TraceAddress)summary.committed_end());
  space.set_committedSize(summary.committed_size());

Configuration enabled
profiling true
default true

Field Type Description
gcId uint GC Identifier

Examples 3
gcId uint
1129
startTime long: millis
335926749259
gcId uint
1179
startTime long: millis
463411733255
gcId uint
614
startTime long: millis
6629628005

AllocationRequiringGC

startTime eventThread stackTrace 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: graalvm_linux_native, linux_ShenandoahGC, linux_ZGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/allocTracer.cpp:

    event.set_allocationSize(alloc_size);
    event.commit();
  }
}

void AllocTracer::send_allocation_in_new_tlab(Klass* klass, HeapWord* obj, size_t tlab_size, size_t alloc_size, JavaThread* thread) {
  JFR_ONLY(JfrAllocationTracer tracer(klass, obj, alloc_size, false, thread);)
  EventObjectAllocationInNewTLAB event;
  if (event.should_commit()) {
    event.set_objectClass(klass);
    event.set_allocationSize(alloc_size);
    event.set_tlabSize(tlab_size);
    event.commit();
  }
}

void AllocTracer::send_allocation_requiring_gc_event(size_t size, uint gcId) {
  EventAllocationRequiringGC event;
  if (event.should_commit()) {
    event.set_gcId(gcId);
    event.set_size(size);
    event.commit();
  }
}

Configuration enabled stackTrace
profiling false true
default false true

Field Type Description
gcId uint Pending GC Identifier
size ulong: bytes Allocation Size

Examples 3
gcId uint
1214
size ulong: bytes
32
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
339
method Method
descriptor string
()Ljava/util/stream/Collector;
hidden boolean
false
modifiers int
9
name string
joining
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/util/stream/Collectors
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util/stream
type FrameType
Inlined
truncated boolean
true
startTime long: millis
354113110981
gcId uint
358
size ulong: bytes
24
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
()Ljava/lang/Object;
hidden boolean
true
modifiers int
1
name string
get
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
true
modifiers int
4112
name string
java.util.stream.Collectors$$Lambda/0x000000005abe5000
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util/stream
type FrameType
JIT compiled
truncated boolean
true
startTime long: millis
667767806398
gcId uint
24
size ulong: bytes
524304
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
45
lineNumber int
496
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
allocateAndGC
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
1129162950

TenuringDistribution

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_SerialGC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_ShenandoahGC, linux_ZGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/ageTableTracer.cpp:

void AgeTableTracer::send_tenuring_distribution_event(uint age, size_t size) {
  EventTenuringDistribution e;
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_age(age);
    e.set_size(size);
    e.commit();
  }
}

bool AgeTableTracer::is_tenuring_distribution_event_enabled() {
  return EventTenuringDistribution::is_enabled();
}

Configuration enabled
profiling true
default true

Field Type Description
gcId uint GC Identifier
age uint Age
size ulong: bytes Size

Examples 3
age uint
4
gcId uint
1335
size ulong: bytes
0
startTime long: millis
574186610277
age uint
11
gcId uint
1104
size ulong: bytes
0
startTime long: millis
330366656675
age uint
8
gcId uint
6
size ulong: bytes
0
startTime long: millis
491144661

G1HeapRegionTypeChange

startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: graalvm_linux_G1GC, linux_G1GC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Information about a G1 heap region type change

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/g1/heapRegionTracer.cpp:

void HeapRegionTracer::send_region_type_change(uint index,
                                               G1HeapRegionTraceType::Type from,
                                               G1HeapRegionTraceType::Type to,
                                               uintptr_t start,
                                               size_t used) {
  EventG1HeapRegionTypeChange e;
  if (e.should_commit()) {
    e.set_index(index);
    e.set_from(from);
    e.set_to(to);
    e.set_start(start);
    e.set_used(used);
    e.commit();
  }
}

Configuration enabled
profiling false
default false

Field Type Description
index uint Index
from G1HeapRegionType From
to G1HeapRegionType To
start ulong: address Start
used ulong: bytes Used

Examples 3
from G1HeapRegionType
Free
index uint
120
start ulong: address
30419189760
startTime long: millis
330498353579
to G1HeapRegionType
Starts Humongous
used ulong: bytes
0
from G1HeapRegionType
Free
index uint
417
start ulong: address
31042043904
startTime long: millis
458981746481
to G1HeapRegionType
Survivor
used ulong: bytes
0
from G1HeapRegionType
Eden
index uint
8
start ulong: address
30184308736
startTime long: millis
491073979
to G1HeapRegionType
Free
used ulong: bytes
0

ObjectCount

startTime every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: graalvm_linux_native, linux_ShenandoahGC, linux_ZGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/objectCountEventSender.cpp:

template <typename T>
void ObjectCountEventSender::send_event_if_enabled(Klass* klass, jlong count, julong size, const Ticks& timestamp) {
  T event(UNTIMED);
  if (event.should_commit()) {
    event.set_gcId(GCId::current());
    event.set_objectClass(klass);
    event.set_count(count);
    event.set_totalSize(size);
    event.set_endtime(timestamp);
    event.commit();
  }
}

void ObjectCountEventSender::send(const KlassInfoEntry* entry, const Ticks& timestamp) {
  Klass* klass = entry->klass();
  jlong count = entry->count();
  julong total_size = entry->words() * BytesPerWord;

  send_event_if_enabled<EventObjectCount>(klass, count, total_size, timestamp);
  send_event_if_enabled<EventObjectCountAfterGC>(klass, count, total_size, timestamp);
}

#endif // INCLUDE_SERVICES

Configuration enabled period
profiling false everyChunk
default false everyChunk

Field Type Description
gcId uint GC Identifier
objectClass Class Object Class
count long Count
totalSize ulong: bytes Total Size

Examples 3
count long
54283
gcId uint
1101
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
16
name string
java/lang/invoke/ResolvedMethodName
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang/invoke
startTime long: millis
330254507356
totalSize ulong: bytes
1302792
count long
27204
gcId uint
334
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1040
name string
[Ljava/util/HashMap$Node;
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util
startTime long: millis
629833840412
totalSize ulong: bytes
2147056
count long
1456
gcId uint
18
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
sun/security/util/ObjectIdentifier
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
sun/security/util
startTime long: millis
1036050816
totalSize ulong: bytes
46592

G1HeapRegionInformation

startTime duration every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: graalvm_linux_G1GC, linux_G1GC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Information about a specific heap region in the G1 GC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/g1/g1HeapRegionEventSender.cpp:

class DumpEventInfoClosure : public HeapRegionClosure {
public:
  bool do_heap_region(HeapRegion* r) {
    EventG1HeapRegionInformation evt;
    evt.set_index(r->hrm_index());
    evt.set_type(r->get_trace_type());
    evt.set_start((uintptr_t)r->bottom());
    evt.set_used(r->used());
    evt.commit();
    return false;
  }
};

class VM_G1SendHeapRegionInfoEvents : public VM_Operation {
  virtual void doit() {
    DumpEventInfoClosure c;
    G1CollectedHeap::heap()->heap_region_iterate(&c);

Configuration enabled period
profiling false everyChunk
default false everyChunk

Field Type Description
index uint Index
type G1HeapRegionType Type
start ulong: address Start
used ulong: bytes Used

Examples 3
index uint
261
start ulong: address
30714888192
startTime long: millis
459191670448
type G1HeapRegionType
Free
used ulong: bytes
0
index uint
3
start ulong: address
30173822976
startTime long: millis
330321275722
type G1HeapRegionType
Old
used ulong: bytes
2097136
index uint
12
start ulong: address
30192697344
startTime long: millis
11227490714
type G1HeapRegionType
Old
used ulong: bytes
2094792

ZAllocationStall

profiling default startTime duration eventThread 15 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Time spent waiting for memory to become available

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/z/zPageAllocator.cpp:

  // Success
  return true;
}

static void check_out_of_memory_during_initialization() {
  if (!is_init_completed()) {
    vm_exit_during_initialization("java.lang.OutOfMemoryError", "Java heap too small");
  }
}

bool ZPageAllocator::alloc_page_stall(ZPageAllocation* allocation) {
  ZStatTimer timer(ZCriticalPhaseAllocationStall);
  EventZAllocationStall event;
  ZPageAllocationStall result;

  // We can only block if the VM is fully initialized
  check_out_of_memory_during_initialization();

  // Increment stalled counter
  Atomic::inc(&_nstalled);

  do {
    // Start asynchronous GC
    ZCollectedHeap::heap()->collect(GCCause::_z_allocation_stall);

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
type ZPageTypeType Type
size ulong: bytes Size

ZPageAllocation

profiling default startTime duration eventThread stackTrace 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Allocation of a ZPage

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/z/zPageAllocator.cpp:

    free_page_inner(page, false /* reclaimed */);
  }

  // Adjust capacity and used to reflect the failed capacity increase
  const size_t remaining = allocation->size() - freed;
  decrease_used(remaining, false /* reclaimed */);
  decrease_capacity(remaining, true /* set_max_capacity */);

  // Try satisfy stalled allocations
  satisfy_stalled();
}

ZPage* ZPageAllocator::alloc_page(uint8_t type, size_t size, ZAllocationFlags flags) {
  EventZPageAllocation event;

retry:
  ZPageAllocation allocation(type, size, flags);

  // Allocate one or more pages from the page cache. If the allocation
  // succeeds but the returned pages don't cover the complete allocation,
  // then finalize phase is allowed to allocate the remaining memory
  // directly from the physical memory manager. Note that this call might
  // block in a safepoint if the non-blocking flag is not set.
  if (!alloc_page_or_stall(&allocation)) {
    // Out of memory

Configuration enabled stackTrace threshold
profiling true true 15+ 1 ms
default true true 15+ 1 ms

Field Type Description
type ZPageTypeType 15+ Type
size ulong: bytes 15+ Size
flushed ulong: bytes 17 21 until JDK 25 Flushed
committed ulong: bytes 15+ Committed
segments uint 17 21 until JDK 25 Segments
nonBlocking boolean Non-blocking

Examples 2
committed ulong: bytes
0
nonBlocking boolean
false
size ulong: bytes
2097152
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
15
lineNumber int
3537
method Method
descriptor string
([BI)[B
hidden boolean
false
modifiers int
9
name string
copyOf
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/util/Arrays
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util
type FrameType
JIT compiled
truncated boolean
true
startTime long: millis
351715655896
type ZPageTypeType
Small
committed ulong: bytes
0
nonBlocking boolean
false
size ulong: bytes
2097152
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
24
lineNumber int
494
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
allocateAndGC
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
710264475
type ZPageTypeType
Small

ZRelocationSet

profiling default startTime duration eventThread 15 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/z/zRelocationSetSelector.cpp:

ZRelocationSetSelector::ZRelocationSetSelector() :
    _small("Small", ZPageTypeSmall, ZPageSizeSmall, ZObjectSizeLimitSmall),
    _medium("Medium", ZPageTypeMedium, ZPageSizeMedium, ZObjectSizeLimitMedium),
    _large("Large", ZPageTypeLarge, 0 /* page_size */, 0 /* object_size_limit */),
    _empty_pages() {}

void ZRelocationSetSelector::select() {
  // Select pages to relocate. The resulting relocation set will be
  // sorted such that medium pages comes first, followed by small
  // pages. Pages within each page group will be semi-sorted by live
  // bytes in ascending order. Relocating pages in this order allows
  // us to start reclaiming memory more quickly.

  EventZRelocationSet event;

  // Select pages from each group
  _large.select();
  _medium.select();
  _small.select();

  // Send event
  event.commit(total(), empty(), relocate());
}

ZRelocationSetSelectorStats ZRelocationSetSelector::stats() const {

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
total ulong: bytes Total
empty ulong: bytes Empty
relocate ulong: bytes 16+ Relocate

Examples 2
empty ulong: bytes
0
relocate ulong: bytes
2262000
startTime long: millis
352304881194
total ulong: bytes
377487360
empty ulong: bytes
54525952
relocate ulong: bytes
1736
startTime long: millis
1317940975
total ulong: bytes
65011712

ZRelocationSetGroup

profiling default startTime duration eventThread 15 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/z/zRelocationSetSelector.cpp:

  // Update statistics
  _stats._relocate = selected_live_bytes;

  log_trace(gc, reloc)("Relocation Set (%s Pages): %d->%d, %d skipped, " SIZE_FORMAT " forwarding entries",
                       _name, selected_from, selected_to, npages - selected_from, selected_forwarding_entries);
}

void ZRelocationSetSelectorGroup::select() {
  if (is_disabled()) {
    return;
  }

  EventZRelocationSetGroup event;

  if (is_selectable()) {
    select_inner();
  }

  // Send event
  event.commit(_page_type, _stats.npages(), _stats.total(), _stats.empty(), _stats.relocate());
}

ZRelocationSetSelector::ZRelocationSetSelector() :
    _small("Small", ZPageTypeSmall, ZPageSizeSmall, ZObjectSizeLimitSmall),

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
type ZPageTypeType Type
pages ulong 17 until JDK 21 Pages
total ulong: bytes Total
empty ulong: bytes Empty
relocate ulong: bytes 16+ Relocate

Examples 2
empty ulong: bytes
0
relocate ulong: bytes
803152
startTime long: millis
1181324320
total ulong: bytes
12582912
type ZPageTypeType
Small
empty ulong: bytes
0
relocate ulong: bytes
2262000
startTime long: millis
352304885410
total ulong: bytes
278921216
type ZPageTypeType
Small

ZStatisticsCounter

experimental startTime duration eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/z/zTracer.cpp:

ZTracer::ZTracer() :
    GCTracer(Z) {}

void ZTracer::initialize() {
  assert(_tracer == NULL, "Already initialized");
  _tracer = new (ResourceObj::C_HEAP, mtGC) ZTracer();
  JFR_ONLY(register_jfr_type_serializers());
}

void ZTracer::send_stat_counter(const ZStatCounter& counter, uint64_t increment, uint64_t value) {
  NoSafepointVerifier nsv;

  EventZStatisticsCounter e;
  if (e.should_commit()) {
    e.set_id(counter.id());
    e.set_increment(increment);
    e.set_value(value);
    e.commit();
  }
}

void ZTracer::send_stat_sampler(const ZStatSampler& sampler, uint64_t value) {
  NoSafepointVerifier nsv;

src/hotspot/share/gc/z/zTracer.inline.hpp:

#ifndef SHARE_GC_Z_ZTRACER_INLINE_HPP
#define SHARE_GC_Z_ZTRACER_INLINE_HPP

#include "gc/z/zTracer.hpp"

#include "jfr/jfrEvents.hpp"

inline ZTracer* ZTracer::tracer() {
  return _tracer;
}

inline void ZTracer::report_stat_counter(const ZStatCounter& counter, uint64_t increment, uint64_t value) {
  if (EventZStatisticsCounter::is_enabled()) {
    send_stat_counter(counter, increment, value);
  }
}

inline void ZTracer::report_stat_sampler(const ZStatSampler& sampler, uint64_t value) {
  if (EventZStatisticsSampler::is_enabled()) {
    send_stat_sampler(sampler, value);
  }
}

inline void ZTracer::report_thread_phase(const char* name, const Ticks& start, const Ticks& end) {

Configuration enabled threshold
profiling false 0 ms
default false 0 ms

Field Type Description
id ZStatisticsCounterType Id
increment ulong Increment
value ulong Value

Examples 2
id ZStatisticsCounterType
Allocation Rate
increment ulong
2097152
startTime long: millis
533209052
value ulong
27262976
id ZStatisticsCounterType
Allocation Rate
increment ulong
2097152
startTime long: millis
351672365391
value ulong
165675008

ZStatisticsSampler

experimental startTime duration eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/z/zTracer.cpp:

  EventZStatisticsCounter e;
  if (e.should_commit()) {
    e.set_id(counter.id());
    e.set_increment(increment);
    e.set_value(value);
    e.commit();
  }
}

void ZTracer::send_stat_sampler(const ZStatSampler& sampler, uint64_t value) {
  NoSafepointVerifier nsv;

  EventZStatisticsSampler e;
  if (e.should_commit()) {
    e.set_id(sampler.id());
    e.set_value(value);
    e.commit();
  }
}

void ZTracer::send_thread_phase(const char* name, const Ticks& start, const Ticks& end) {
  NoSafepointVerifier nsv;

  EventZThreadPhase e(UNTIMED);

src/hotspot/share/gc/z/zTracer.inline.hpp:

inline ZTracer* ZTracer::tracer() {
  return _tracer;
}

inline void ZTracer::report_stat_counter(const ZStatCounter& counter, uint64_t increment, uint64_t value) {
  if (EventZStatisticsCounter::is_enabled()) {
    send_stat_counter(counter, increment, value);
  }
}

inline void ZTracer::report_stat_sampler(const ZStatSampler& sampler, uint64_t value) {
  if (EventZStatisticsSampler::is_enabled()) {
    send_stat_sampler(sampler, value);
  }
}

inline void ZTracer::report_thread_phase(const char* name, const Ticks& start, const Ticks& end) {
  if (EventZThreadPhase::is_enabled()) {
    send_thread_phase(name, start, end);
  }
}

inline void ZTracer::report_thread_debug(const char* name, const Ticks& start, const Ticks& end) {

Configuration enabled threshold
profiling false 0 ms
default false 0 ms

Field Type Description
id ZStatisticsSamplerType Id
value ulong Value

Examples 2
id ZStatisticsSamplerType
Concurrent Roots CodeCache
startTime long: millis
1220622839
value ulong
480596
id ZStatisticsSamplerType
Concurrent Roots CodeCache
startTime long: millis
351634429457
value ulong
11232032

ZThreadPhase

experimental startTime duration eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/z/zTracer.cpp:

  NoSafepointVerifier nsv;

  EventZStatisticsSampler e;
  if (e.should_commit()) {
    e.set_id(sampler.id());
    e.set_value(value);
    e.commit();
  }
}

void ZTracer::send_thread_phase(const char* name, const Ticks& start, const Ticks& end) {
  NoSafepointVerifier nsv;

  EventZThreadPhase e(UNTIMED);
  if (e.should_commit()) {
    e.set_gcId(GCId::current_or_undefined());
    e.set_name(name);
    e.set_starttime(start);
    e.set_endtime(end);
    e.commit();
  }
}

void ZTracer::send_thread_debug(const char* name, const Ticks& start, const Ticks& end) {
  NoSafepointVerifier nsv;

src/hotspot/share/gc/z/zTracer.inline.hpp:

inline void ZTracer::report_stat_counter(const ZStatCounter& counter, uint64_t increment, uint64_t value) {
  if (EventZStatisticsCounter::is_enabled()) {
    send_stat_counter(counter, increment, value);
  }
}

inline void ZTracer::report_stat_sampler(const ZStatSampler& sampler, uint64_t value) {
  if (EventZStatisticsSampler::is_enabled()) {
    send_stat_sampler(sampler, value);
  }
}

inline void ZTracer::report_thread_phase(const char* name, const Ticks& start, const Ticks& end) {
  if (EventZThreadPhase::is_enabled()) {
    send_thread_phase(name, start, end);
  }
}

inline void ZTracer::report_thread_debug(const char* name, const Ticks& start, const Ticks& end) {
  if (EventZThreadDebug::is_enabled()) {
    send_thread_debug(name, start, end);
  }
}

inline ZTraceThreadDebug::ZTraceThreadDebug(const char* name) :

Configuration enabled threshold
profiling false 0 ms
default false 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 2
gcId uint
10
name string
Concurrent Roots OopStorageSet
startTime long: millis
1220077936
gcId uint
288
name string
Concurrent Relocate Remset FP
startTime long: millis
353250838190

ZUncommit

profiling default startTime duration eventThread 15 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Uncommitting of memory

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/z/zUncommitter.cpp:

bool ZUncommitter::should_continue() const {
  ZLocker<ZConditionLock> locker(&_lock);
  return !_stop;
}

void ZUncommitter::run_service() {
  uint64_t timeout = 0;

  while (wait(timeout)) {
    EventZUncommit event;
    size_t uncommitted = 0;

    while (should_continue()) {
      // Uncommit chunk
      const size_t flushed = _page_allocator->uncommit(&timeout);
      if (flushed == 0) {
        // Done
        break;
      }

      uncommitted += flushed;

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
uncommitted ulong: bytes Uncommitted

ZUnmap

profiling default startTime duration eventThread 17 21 until JDK 25

Category: Java Virtual Machine / GC / Detailed

Unmapping of memory

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/z/zUnmapper.cpp:

    ZPage* const page = _queue.remove_first();
    if (page != NULL) {
      return page;
    }

    _lock.wait();
  }
}

void ZUnmapper::do_unmap_and_destroy_page(ZPage* page) const {
  EventZUnmap event;
  const size_t unmapped = page->size();

  // Unmap and destroy
  _page_allocator->unmap_page(page);
  _page_allocator->destroy_page(page);

  // Send event
  event.commit(unmapped);
}

void ZUnmapper::unmap_and_destroy_page(ZPage* page) {

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
unmapped ulong: bytes Unmapped

ShenandoahHeapRegionStateChange

startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_ShenandoahGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ZGC

Information about a Shenandoah heap region state change

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.cpp:

void ShenandoahHeapRegion::do_uncommit() {
  ShenandoahHeap* heap = ShenandoahHeap::heap();
  if (!heap->is_heap_region_special() && !os::uncommit_memory((char *) bottom(), RegionSizeBytes)) {
    report_java_out_of_memory("Unable to uncommit region");
  }
  if (!heap->uncommit_bitmap_slice(this)) {
    report_java_out_of_memory("Unable to uncommit bitmaps for region");
  }
  heap->decrease_committed(ShenandoahHeapRegion::region_size_bytes());
}

void ShenandoahHeapRegion::set_state(RegionState to) {
  EventShenandoahHeapRegionStateChange evt;
  if (evt.should_commit()){
    evt.set_index((unsigned) index());
    evt.set_start((uintptr_t)bottom());
    evt.set_used(used());
    evt.set_from(_state);
    evt.set_to(to);
    evt.commit();
  }
  _state = to;
}

Configuration enabled
profiling false
default false

Field Type Description
index uint Index
from ShenandoahHeapRegionState From
to ShenandoahHeapRegionState To
start ulong: address Start
used ulong: bytes Used

Examples 2
from ShenandoahHeapRegionState
Empty Uncommitted
index uint
3739
start ulong: address
34088157184
startTime long: millis
609151024
to ShenandoahHeapRegionState
Regular
used ulong: bytes
0
from ShenandoahHeapRegionState
Empty Committed
index uint
3002
start ulong: address
33315356672
startTime long: millis
555845625558
to ShenandoahHeapRegionState
Empty Uncommitted
used ulong: bytes
0

ShenandoahHeapRegionInformation

startTime duration every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_ShenandoahGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ZGC

Information about a specific heap region in the Shenandoah GC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shenandoah/shenandoahJfrSupport.cpp:

void ShenandoahJFRSupport::register_jfr_type_serializers() {
  JfrSerializer::register_serializer(TYPE_SHENANDOAHHEAPREGIONSTATE,
                                     true,
                                     new ShenandoahHeapRegionStateConstant());
}
#endif

class ShenandoahDumpHeapRegionInfoClosure : public ShenandoahHeapRegionClosure {
public:
  virtual void heap_region_do(ShenandoahHeapRegion* r) {
    EventShenandoahHeapRegionInformation evt;
    evt.set_index((unsigned) r->index());
    evt.set_state((u8)r->state());
    evt.set_start((uintptr_t)r->bottom());
    evt.set_used(r->used());
    evt.commit();
  }
};

void VM_ShenandoahSendHeapRegionInfoEvents::doit() {
  ShenandoahDumpHeapRegionInfoClosure c;
  ShenandoahHeap::heap()->heap_region_iterate(&c);

Configuration enabled period
profiling false everyChunk
default false everyChunk

Field Type Description
index uint Index
state ShenandoahHeapRegionState State
start ulong: address Start
used ulong: bytes Used

Examples 2
index uint
3786
start ulong: address
34137440256
startTime long: millis
558550848004
state ShenandoahHeapRegionState
Regular
used ulong: bytes
1048576
index uint
57
start ulong: address
30227300352
startTime long: millis
385414582
state ShenandoahHeapRegionState
Empty Committed
used ulong: bytes
0

GCLocker

profiling default startTime eventThread stackTrace 17 21 until JDK 25

Category: Java Virtual Machine / GC / Detailed

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

Ticks GCLockerTracer::_needs_gc_start_timestamp;
volatile jint GCLockerTracer::_jni_lock_count = 0;
volatile jint GCLockerTracer::_stall_count = 0;

bool GCLockerTracer::is_started() {
  return _needs_gc_start_timestamp != Ticks();
}

void GCLockerTracer::start_gc_locker(const jint jni_lock_count) {
  assert(SafepointSynchronize::is_at_safepoint(), "sanity");
  assert(!is_started(), "sanity");
  assert(_jni_lock_count == 0, "sanity");
  assert(_stall_count == 0, "sanity");
  if (EventGCLocker::is_enabled()) {
    _needs_gc_start_timestamp.stamp();
    _jni_lock_count = jni_lock_count;
  }
}

void GCLockerTracer::inc_stall_count() {
  if (is_started()) {
    _stall_count++;
  }
}

void GCLockerTracer::report_gc_locker() {
  if (is_started()) {
    EventGCLocker event(UNTIMED);
    if (event.should_commit()) {
      event.set_starttime(_needs_gc_start_timestamp);
      event.set_lockCount(_jni_lock_count);
      event.set_stallCount(_stall_count);
      event.commit();
    }
    // reset
    _needs_gc_start_timestamp = Ticks();
    _jni_lock_count = 0;
    _stall_count = 0;

Configuration enabled stackTrace threshold
profiling true true 100 ms
default true true 1 s

Field Type Description
lockCount uint Lock Count The number of Java threads in a critical section when the GC locker is started
stallCount uint Stall Count The number of Java threads stalled by the GC locker

JVM: GC: Heap

GCHeapSummary

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Heap

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

  space.set_used(summary.used());
  space.set_size(summary.size());
  return space;
}

class GCHeapSummaryEventSender : public GCHeapSummaryVisitor {
  GCWhen::Type _when;
 public:
  GCHeapSummaryEventSender(GCWhen::Type when) : _when(when) {}

  void visit(const GCHeapSummary* heap_summary) const {
    const VirtualSpaceSummary& heap_space = heap_summary->heap();

    EventGCHeapSummary e;
    if (e.should_commit()) {
      e.set_gcId(GCId::current());
      e.set_when((u1)_when);
      e.set_heapSpace(to_struct(heap_space));
      e.set_heapUsed(heap_summary->used());
      e.commit();
    }
  }

  void visit(const G1HeapSummary* g1_heap_summary) const {
    visit((GCHeapSummary*)g1_heap_summary);

Configuration enabled
profiling true
default true

Field Type Description
gcId uint GC Identifier
when GCWhen When
heapSpace VirtualSpace struct Heap Space
heapUsed ulong: bytes Heap Used Bytes allocated by objects in the heap

Examples 3
gcId uint
34
heapSpace VirtualSpace
committedEnd ulong: address
30196891648
committedSize ulong: bytes
29360128
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520
heapUsed ulong: bytes
12538696
startTime long: millis
1213499954
when GCWhen
Before GC
gcId uint
348
heapSpace VirtualSpace
committedEnd ulong: address
32828817408
committedSize ulong: bytes
2661285888
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520
heapUsed ulong: bytes
1260660560
startTime long: millis
655321414286
when GCWhen
Before GC
gcId uint
1118
heapSpace VirtualSpace
committedEnd ulong: address
32361152512
committedSize ulong: bytes
2193620992
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520
heapUsed ulong: bytes
255543192
startTime long: millis
334031165424
when GCWhen
After GC

MetaspaceSummary

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Heap

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

  GCHeapSummaryEventSender visitor(when);
  heap_summary.accept(&visitor);
}

static JfrStructMetaspaceSizes to_struct(const MetaspaceStats& sizes) {
  JfrStructMetaspaceSizes meta_sizes;
  meta_sizes.set_committed(sizes.committed());
  meta_sizes.set_used(sizes.used());
  meta_sizes.set_reserved(sizes.reserved());
  return meta_sizes;
}

void GCTracer::send_meta_space_summary_event(GCWhen::Type when, const MetaspaceSummary& meta_space_summary) const {
  EventMetaspaceSummary e;
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_when((u1) when);
    e.set_gcThreshold(meta_space_summary.capacity_until_GC());
    e.set_metaspace(to_struct(meta_space_summary.stats())); // total stats (class + nonclass)
    e.set_dataSpace(to_struct(meta_space_summary.stats().non_class_space_stats())); // "dataspace" aka non-class space
    e.set_classSpace(to_struct(meta_space_summary.stats().class_space_stats()));
    e.commit();
  }
}

Configuration enabled
profiling true
default true

Field Type Description
gcId uint GC Identifier
when GCWhen When
gcThreshold ulong: bytes GC Threshold
metaspace MetaspaceSizes struct Total
dataSpace MetaspaceSizes struct Data
classSpace MetaspaceSizes struct Class

Examples 3
classSpace MetaspaceSizes
committed ulong: bytes
179306496
reserved ulong: bytes
1073741824
used ulong: bytes
177637536
dataSpace MetaspaceSizes
committed ulong: bytes
778764288
reserved ulong: bytes
805306368
used ulong: bytes
776960024
gcId uint
1128
gcThreshold ulong: bytes
1596784640
metaspace MetaspaceSizes
committed ulong: bytes
958070784
reserved ulong: bytes
1879048192
used ulong: bytes
954597560
startTime long: millis
335742705837
when GCWhen
After GC
classSpace MetaspaceSizes
committed ulong: bytes
179175424
reserved ulong: bytes
1073741824
used ulong: bytes
177540016
dataSpace MetaspaceSizes
committed ulong: bytes
778960896
reserved ulong: bytes
805306368
used ulong: bytes
777072336
gcId uint
342
gcThreshold ulong: bytes
1596719104
metaspace MetaspaceSizes
committed ulong: bytes
958136320
reserved ulong: bytes
1879048192
used ulong: bytes
954612352
startTime long: millis
641992690477
when GCWhen
Before GC
classSpace MetaspaceSizes
committed ulong: bytes
3014656
reserved ulong: bytes
1073741824
used ulong: bytes
2864144
dataSpace MetaspaceSizes
committed ulong: bytes
11993088
reserved ulong: bytes
67108864
used ulong: bytes
11868272
gcId uint
42
gcThreshold ulong: bytes
25034752
metaspace MetaspaceSizes
committed ulong: bytes
15007744
reserved ulong: bytes
1140850688
used ulong: bytes
14732416
startTime long: millis
1316497161
when GCWhen
Before GC

PSHeapSummary

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Heap

Appearing in: linux_ParallelGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

  void visit(const PSHeapSummary* ps_heap_summary) const {
    visit((GCHeapSummary*)ps_heap_summary);

    const VirtualSpaceSummary& old_summary = ps_heap_summary->old();
    const SpaceSummary& old_space = ps_heap_summary->old_space();
    const VirtualSpaceSummary& young_summary = ps_heap_summary->young();
    const SpaceSummary& eden_space = ps_heap_summary->eden();
    const SpaceSummary& from_space = ps_heap_summary->from();
    const SpaceSummary& to_space = ps_heap_summary->to();

    EventPSHeapSummary e;
    if (e.should_commit()) {
      e.set_gcId(GCId::current());
      e.set_when((u1)_when);

      e.set_oldSpace(to_struct(ps_heap_summary->old()));
      e.set_oldObjectSpace(to_struct(ps_heap_summary->old_space()));
      e.set_youngSpace(to_struct(ps_heap_summary->young()));
      e.set_edenSpace(to_struct(ps_heap_summary->eden()));
      e.set_fromSpace(to_struct(ps_heap_summary->from()));
      e.set_toSpace(to_struct(ps_heap_summary->to()));
      e.commit();

Configuration enabled
profiling true
default true

Field Type Description
gcId uint GC Identifier
when GCWhen When
oldSpace VirtualSpace struct Old Space
oldObjectSpace ObjectSpace struct Old Object Space
youngSpace VirtualSpace struct Young Space
edenSpace ObjectSpace struct Eden Space
fromSpace ObjectSpace struct From Space
toSpace ObjectSpace struct To Space

Examples 2
edenSpace ObjectSpace
end ulong: address
33483128832
size ulong: bytes
520093696
start ulong: address
32963035136
used ulong: bytes
27100608
fromSpace ObjectSpace
end ulong: address
33495711744
size ulong: bytes
6291456
start ulong: address
33489420288
used ulong: bytes
0
gcId uint
33
oldObjectSpace ObjectSpace
end ulong: address
30343692288
size ulong: bytes
176160768
start ulong: address
30167531520
used ulong: bytes
6550520
oldSpace VirtualSpace
committedEnd ulong: address
30343692288
committedSize ulong: bytes
176160768
reservedEnd ulong: address
32963035136
reservedSize ulong: bytes
2795503616
start ulong: address
30167531520
startTime long: millis
1748199612
toSpace ObjectSpace
end ulong: address
33489420288
size ulong: bytes
6291456
start ulong: address
33483128832
used ulong: bytes
0
when GCWhen
Before GC
youngSpace VirtualSpace
committedEnd ulong: address
33495711744
committedSize ulong: bytes
532676608
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
1396703232
start ulong: address
32963035136
edenSpace ObjectSpace
end ulong: address
33854324736
size ulong: bytes
891289600
start ulong: address
32963035136
used ulong: bytes
0
fromSpace ObjectSpace
end ulong: address
33923530752
size ulong: bytes
69206016
start ulong: address
33854324736
used ulong: bytes
3309600
gcId uint
357
oldObjectSpace ObjectSpace
end ulong: address
31826378752
size ulong: bytes
1658847232
start ulong: address
30167531520
used ulong: bytes
253904872
oldSpace VirtualSpace
committedEnd ulong: address
31826378752
committedSize ulong: bytes
1658847232
reservedEnd ulong: address
32963035136
reservedSize ulong: bytes
2795503616
start ulong: address
30167531520
startTime long: millis
667299394875
toSpace ObjectSpace
end ulong: address
34162606080
size ulong: bytes
65011712
start ulong: address
34097594368
used ulong: bytes
0
when GCWhen
After GC
youngSpace VirtualSpace
committedEnd ulong: address
34162606080
committedSize ulong: bytes
1199570944
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
1396703232
start ulong: address
32963035136

G1HeapSummary

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Heap

Appearing in: graalvm_linux_G1GC, linux_G1GC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

    EventGCHeapSummary e;
    if (e.should_commit()) {
      e.set_gcId(GCId::current());
      e.set_when((u1)_when);
      e.set_heapSpace(to_struct(heap_space));
      e.set_heapUsed(heap_summary->used());
      e.commit();
    }
  }

  void visit(const G1HeapSummary* g1_heap_summary) const {
    visit((GCHeapSummary*)g1_heap_summary);

    EventG1HeapSummary e;
    if (e.should_commit()) {
      e.set_gcId(GCId::current());
      e.set_when((u1)_when);
      e.set_edenUsedSize(g1_heap_summary->edenUsed());
      e.set_edenTotalSize(g1_heap_summary->edenCapacity());
      e.set_survivorUsedSize(g1_heap_summary->survivorUsed());
      e.set_numberOfRegions(g1_heap_summary->numberOfRegions());
      e.commit();
    }
  }

Configuration enabled
profiling true
default true

Field Type Description
gcId uint GC Identifier
when GCWhen When
edenUsedSize ulong: bytes Eden Used Size
edenTotalSize ulong: bytes Eden Total Size
survivorUsedSize ulong: bytes Survivor Used Size
numberOfRegions uint Number of Regions

Examples 3
edenTotalSize ulong: bytes
10485760
edenUsedSize ulong: bytes
0
gcId uint
21
numberOfRegions uint
17
startTime long: millis
1107399128
survivorUsedSize ulong: bytes
2097152
when GCWhen
After GC
edenTotalSize ulong: bytes
515899392
edenUsedSize ulong: bytes
0
gcId uint
1109
numberOfRegions uint
410
startTime long: millis
331871851786
survivorUsedSize ulong: bytes
0
when GCWhen
After GC
edenTotalSize ulong: bytes
553631136
edenUsedSize ulong: bytes
0
gcId uint
1202
numberOfRegions uint
440
startTime long: millis
469992766076
survivorUsedSize ulong: bytes
16992
when GCWhen
After GC

JVM: GC: Metaspace

MetaspaceGCThreshold

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Metaspace

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/memory/metaspaceTracer.cpp:

void MetaspaceTracer::report_gc_threshold(size_t old_val,
                                          size_t new_val,
                                          MetaspaceGCThresholdUpdater::Type updater) const {
  EventMetaspaceGCThreshold event;
  if (event.should_commit()) {
    event.set_oldValue(old_val);
    event.set_newValue(new_val);
    event.set_updater((u1)updater);
    event.commit();
  }
}

void MetaspaceTracer::report_metaspace_allocation_failure(ClassLoaderData *cld,
                                                          size_t word_size,
                                                          MetaspaceObj::Type objtype,
                                                          Metaspace::MetadataType mdtype) const {
  send_allocation_failure_event<EventMetaspaceAllocationFailure>(cld, word_size, objtype, mdtype);
}

Configuration enabled
profiling true
default true

Field Type Description
oldValue ulong: bytes Old Value
newValue ulong: bytes New Value
updater GCThresholdUpdater Updater

Examples 3
newValue ulong: bytes
1596260352
oldValue ulong: bytes
1595932672
startTime long: millis
637673682053
updater GCThresholdUpdater
compute_new_size
newValue ulong: bytes
1596391424
oldValue ulong: bytes
1595604992
startTime long: millis
333552354261
updater GCThresholdUpdater
compute_new_size
newValue ulong: bytes
25362432
oldValue ulong: bytes
25034752
startTime long: millis
9129227663
updater GCThresholdUpdater
compute_new_size

MetaspaceAllocationFailure

profiling default startTime stackTrace 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Metaspace

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/memory/metaspaceTracer.cpp:

  EventMetaspaceGCThreshold event;
  if (event.should_commit()) {
    event.set_oldValue(old_val);
    event.set_newValue(new_val);
    event.set_updater((u1)updater);
    event.commit();
  }
}

void MetaspaceTracer::report_metaspace_allocation_failure(ClassLoaderData *cld,
                                                          size_t word_size,
                                                          MetaspaceObj::Type objtype,
                                                          Metaspace::MetadataType mdtype) const {
  send_allocation_failure_event<EventMetaspaceAllocationFailure>(cld, word_size, objtype, mdtype);
}

void MetaspaceTracer::report_metadata_oom(ClassLoaderData *cld,
                                         size_t word_size,
                                         MetaspaceObj::Type objtype,
                                         Metaspace::MetadataType mdtype) const {
  send_allocation_failure_event<EventMetaspaceOOM>(cld, word_size, objtype, mdtype);
}

template <typename E>
void MetaspaceTracer::send_allocation_failure_event(ClassLoaderData *cld,

Configuration enabled stackTrace
profiling true true
default true true

Field Type Description
classLoader ClassLoader Class Loader
hiddenClassLoader boolean 15+ Hidden Class Loader
size ulong: bytes Size
metadataType MetadataType Metadata Type
metaspaceObjectType MetaspaceObjectType Metaspace Object Type

MetaspaceOOM

profiling default startTime stackTrace 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Metaspace

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/memory/metaspaceTracer.cpp:

void MetaspaceTracer::report_metaspace_allocation_failure(ClassLoaderData *cld,
                                                          size_t word_size,
                                                          MetaspaceObj::Type objtype,
                                                          Metaspace::MetadataType mdtype) const {
  send_allocation_failure_event<EventMetaspaceAllocationFailure>(cld, word_size, objtype, mdtype);
}

void MetaspaceTracer::report_metadata_oom(ClassLoaderData *cld,
                                         size_t word_size,
                                         MetaspaceObj::Type objtype,
                                         Metaspace::MetadataType mdtype) const {
  send_allocation_failure_event<EventMetaspaceOOM>(cld, word_size, objtype, mdtype);
}

template <typename E>
void MetaspaceTracer::send_allocation_failure_event(ClassLoaderData *cld,
                                                    size_t word_size,
                                                    MetaspaceObj::Type objtype,
                                                    Metaspace::MetadataType mdtype) const {
  E event;
  if (event.should_commit()) {
    event.set_classLoader(cld);
    event.set_hiddenClassLoader(cld->has_class_mirror_holder());

Configuration enabled stackTrace
profiling true true
default true true

Field Type Description
classLoader ClassLoader Class Loader
hiddenClassLoader boolean 15+ Hidden Class Loader
size ulong: bytes Size
metadataType MetadataType Metadata Type
metaspaceObjectType MetaspaceObjectType Metaspace Object Type

MetaspaceChunkFreeListSummary

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Metaspace

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

void GCTracer::send_reference_stats_event(ReferenceType type, size_t count) const {
  EventGCReferenceStatistics e;
  if (e.should_commit()) {
      e.set_gcId(GCId::current());
      e.set_type((u1)type);
      e.set_count(count);
      e.commit();
  }
}

void GCTracer::send_metaspace_chunk_free_list_summary(GCWhen::Type when, Metaspace::MetadataType mdtype,
                                                      const MetaspaceChunkFreeListSummary& summary) const {
  EventMetaspaceChunkFreeListSummary e;
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_when(when);
    e.set_metadataType(mdtype);

    e.set_specializedChunks(summary.num_specialized_chunks());
    e.set_specializedChunksTotalSize(summary.specialized_chunks_size_in_bytes());

    e.set_smallChunks(summary.num_small_chunks());
    e.set_smallChunksTotalSize(summary.small_chunks_size_in_bytes());

Configuration enabled
profiling true
default true

Field Type Description
gcId uint GC Identifier
when GCWhen When
metadataType MetadataType Metadata Type
specializedChunks ulong Specialized Chunks
specializedChunksTotalSize ulong: bytes Specialized Chunks Total Size
smallChunks ulong Small Chunks
smallChunksTotalSize ulong: bytes Small Chunks Total Size
mediumChunks ulong Medium Chunks
mediumChunksTotalSize ulong: bytes Medium Chunks Total Size
humongousChunks ulong Humongous Chunks
humongousChunksTotalSize ulong: bytes Humongous Chunks Total Size

Examples 3
gcId uint
347
humongousChunks ulong
0
humongousChunksTotalSize ulong: bytes
0
mediumChunks ulong
0
mediumChunksTotalSize ulong: bytes
0
metadataType MetadataType
Class
smallChunks ulong
0
smallChunksTotalSize ulong: bytes
0
specializedChunks ulong
0
specializedChunksTotalSize ulong: bytes
0
startTime long: millis
652169954427
when GCWhen
Before GC
gcId uint
1111
humongousChunks ulong
0
humongousChunksTotalSize ulong: bytes
0
mediumChunks ulong
0
mediumChunksTotalSize ulong: bytes
0
metadataType MetadataType
Metadata
smallChunks ulong
0
smallChunksTotalSize ulong: bytes
0
specializedChunks ulong
0
specializedChunksTotalSize ulong: bytes
0
startTime long: millis
331880270797
when GCWhen
After GC
gcId uint
9
humongousChunks ulong
0
humongousChunksTotalSize ulong: bytes
0
mediumChunks ulong
0
mediumChunksTotalSize ulong: bytes
0
metadataType MetadataType
Class
smallChunks ulong
0
smallChunksTotalSize ulong: bytes
0
specializedChunks ulong
0
specializedChunksTotalSize ulong: bytes
0
startTime long: millis
530303797
when GCWhen
After GC

JVM: GC: Phases

GCPhasePause

profiling default startTime duration eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Phases

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

    e.set_gcThreshold(meta_space_summary.capacity_until_GC());
    e.set_metaspace(to_struct(meta_space_summary.stats())); // total stats (class + nonclass)
    e.set_dataSpace(to_struct(meta_space_summary.stats().non_class_space_stats())); // "dataspace" aka non-class space
    e.set_classSpace(to_struct(meta_space_summary.stats().class_space_stats()));
    e.commit();
  }
}

class PhaseSender : public PhaseVisitor {
  void visit_pause(GCPhase* phase) {
    assert(phase->level() < PhasesStack::PHASE_LEVELS, "Need more event types for PausePhase");

    switch (phase->level()) {
      case 0: send_phase<EventGCPhasePause>(phase); break;
      case 1: send_phase<EventGCPhasePauseLevel1>(phase); break;
      case 2: send_phase<EventGCPhasePauseLevel2>(phase); break;
      case 3: send_phase<EventGCPhasePauseLevel3>(phase); break;
      case 4: send_phase<EventGCPhasePauseLevel4>(phase); break;
      default: /* Ignore sending this phase */ break;
    }
  }

  void visit_concurrent(GCPhase* phase) {
    assert(phase->level() < 2, "There is only two levels for ConcurrentPhase");

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
gcId uint
53
name string
GC Pause
startTime long: millis
1411214687
gcId uint
1136
name string
Pause Remark
startTime long: millis
336664953015
gcId uint
339
name string
GC Pause
startTime long: millis
638750630596

GCPhasePauseLevel1

profiling default startTime duration eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Phases

Appearing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Missing in: linux_ZGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

    e.set_metaspace(to_struct(meta_space_summary.stats())); // total stats (class + nonclass)
    e.set_dataSpace(to_struct(meta_space_summary.stats().non_class_space_stats())); // "dataspace" aka non-class space
    e.set_classSpace(to_struct(meta_space_summary.stats().class_space_stats()));
    e.commit();
  }
}

class PhaseSender : public PhaseVisitor {
  void visit_pause(GCPhase* phase) {
    assert(phase->level() < PhasesStack::PHASE_LEVELS, "Need more event types for PausePhase");

    switch (phase->level()) {
      case 0: send_phase<EventGCPhasePause>(phase); break;
      case 1: send_phase<EventGCPhasePauseLevel1>(phase); break;
      case 2: send_phase<EventGCPhasePauseLevel2>(phase); break;
      case 3: send_phase<EventGCPhasePauseLevel3>(phase); break;
      case 4: send_phase<EventGCPhasePauseLevel4>(phase); break;
      default: /* Ignore sending this phase */ break;
    }
  }

  void visit_concurrent(GCPhase* phase) {
    assert(phase->level() < 2, "There is only two levels for ConcurrentPhase");

    switch (phase->level()) {

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
gcId uint
338
name string
Marking Phase
startTime long: millis
637341602945
gcId uint
1110
name string
Phase 2: Prepare compaction
startTime long: millis
331812075564
gcId uint
20
name string
Phase 3: Adjust pointers
startTime long: millis
1073911912

GCPhasePauseLevel2

profiling default startTime duration eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Phases

Appearing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: linux_ShenandoahGC, linux_ZGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

    e.set_dataSpace(to_struct(meta_space_summary.stats().non_class_space_stats())); // "dataspace" aka non-class space
    e.set_classSpace(to_struct(meta_space_summary.stats().class_space_stats()));
    e.commit();
  }
}

class PhaseSender : public PhaseVisitor {
  void visit_pause(GCPhase* phase) {
    assert(phase->level() < PhasesStack::PHASE_LEVELS, "Need more event types for PausePhase");

    switch (phase->level()) {
      case 0: send_phase<EventGCPhasePause>(phase); break;
      case 1: send_phase<EventGCPhasePauseLevel1>(phase); break;
      case 2: send_phase<EventGCPhasePauseLevel2>(phase); break;
      case 3: send_phase<EventGCPhasePauseLevel3>(phase); break;
      case 4: send_phase<EventGCPhasePauseLevel4>(phase); break;
      default: /* Ignore sending this phase */ break;
    }
  }

  void visit_concurrent(GCPhase* phase) {
    assert(phase->level() < 2, "There is only two levels for ConcurrentPhase");

    switch (phase->level()) {
      case 0: send_phase<EventGCPhaseConcurrent>(phase); break;

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
gcId uint
1122
name string
Notify and keep alive finalizable
startTime long: millis
334592449821
gcId uint
331
name string
Flush Marking Stats
startTime long: millis
623863199929
gcId uint
33
name string
Phase 2: Determine work lists
startTime long: millis
1205614727

GCPhasePauseLevel3

startTime duration eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Phases

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: graalvm_linux_native, linux_ShenandoahGC, linux_ZGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

    e.set_classSpace(to_struct(meta_space_summary.stats().class_space_stats()));
    e.commit();
  }
}

class PhaseSender : public PhaseVisitor {
  void visit_pause(GCPhase* phase) {
    assert(phase->level() < PhasesStack::PHASE_LEVELS, "Need more event types for PausePhase");

    switch (phase->level()) {
      case 0: send_phase<EventGCPhasePause>(phase); break;
      case 1: send_phase<EventGCPhasePauseLevel1>(phase); break;
      case 2: send_phase<EventGCPhasePauseLevel2>(phase); break;
      case 3: send_phase<EventGCPhasePauseLevel3>(phase); break;
      case 4: send_phase<EventGCPhasePauseLevel4>(phase); break;
      default: /* Ignore sending this phase */ break;
    }
  }

  void visit_concurrent(GCPhase* phase) {
    assert(phase->level() < 2, "There is only two levels for ConcurrentPhase");

    switch (phase->level()) {
      case 0: send_phase<EventGCPhaseConcurrent>(phase); break;
      case 1: send_phase<EventGCPhaseConcurrentLevel1>(phase); break;

Configuration enabled threshold
profiling false 0 ms
default false 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
gcId uint
339
name string
Notify PhantomReferences
startTime long: millis
638835859814
gcId uint
18
name string
Trigger cleanups
startTime long: millis
1032847071
gcId uint
1138
name string
Purge Unlinked NMethods
startTime long: millis
337416269725

GCPhasePauseLevel4

startTime duration eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Phases

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC

Missing in: graalvm_linux_native, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

    e.commit();
  }
}

class PhaseSender : public PhaseVisitor {
  void visit_pause(GCPhase* phase) {
    assert(phase->level() < PhasesStack::PHASE_LEVELS, "Need more event types for PausePhase");

    switch (phase->level()) {
      case 0: send_phase<EventGCPhasePause>(phase); break;
      case 1: send_phase<EventGCPhasePauseLevel1>(phase); break;
      case 2: send_phase<EventGCPhasePauseLevel2>(phase); break;
      case 3: send_phase<EventGCPhasePauseLevel3>(phase); break;
      case 4: send_phase<EventGCPhasePauseLevel4>(phase); break;
      default: /* Ignore sending this phase */ break;
    }
  }

  void visit_concurrent(GCPhase* phase) {
    assert(phase->level() < 2, "There is only two levels for ConcurrentPhase");

    switch (phase->level()) {
      case 0: send_phase<EventGCPhaseConcurrent>(phase); break;
      case 1: send_phase<EventGCPhaseConcurrentLevel1>(phase); break;
      default: /* Ignore sending this phase */ break;

Configuration enabled threshold
profiling false 0 ms
default false 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
gcId uint
1253
name string
Balance queues
startTime long: millis
489498672701
gcId uint
1141
name string
Balance queues
startTime long: millis
338139105176
gcId uint
372
name string
Balance queues
startTime long: millis
695855484041

GCPhaseConcurrent

profiling default startTime duration eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Phases

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

      case 0: send_phase<EventGCPhasePause>(phase); break;
      case 1: send_phase<EventGCPhasePauseLevel1>(phase); break;
      case 2: send_phase<EventGCPhasePauseLevel2>(phase); break;
      case 3: send_phase<EventGCPhasePauseLevel3>(phase); break;
      case 4: send_phase<EventGCPhasePauseLevel4>(phase); break;
      default: /* Ignore sending this phase */ break;
    }
  }

  void visit_concurrent(GCPhase* phase) {
    assert(phase->level() < 2, "There is only two levels for ConcurrentPhase");

    switch (phase->level()) {
      case 0: send_phase<EventGCPhaseConcurrent>(phase); break;
      case 1: send_phase<EventGCPhaseConcurrentLevel1>(phase); break;
      default: /* Ignore sending this phase */ break;
    }
  }

 public:
  template<typename T>
  void send_phase(GCPhase* phase) {
    T event(UNTIMED);
    if (event.should_commit()) {
      event.set_gcId(GCId::current());

src/hotspot/share/gc/shenandoah/shenandoahUtils.hpp:

  ShenandoahWorkerSession(uint worker_id);
  ~ShenandoahWorkerSession();
public:
  static inline uint worker_id() {
    Thread* thr = Thread::current();
    uint id = ShenandoahThreadLocalData::worker_id(thr);
    assert(id != ShenandoahThreadLocalData::INVALID_WORKER_ID, "Worker session has not been created");
    return id;
  }
};

class ShenandoahConcurrentWorkerSession : public ShenandoahWorkerSession {
private:
  EventGCPhaseConcurrent _event;

public:
  ShenandoahConcurrentWorkerSession(uint worker_id) : ShenandoahWorkerSession(worker_id) { }
  ~ShenandoahConcurrentWorkerSession();
};

class ShenandoahParallelWorkerSession : public ShenandoahWorkerSession {
private:
  EventGCPhaseParallel _event;

public:

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
gcId uint
299
name string
Concurrent marking (unload classes)
startTime long: millis
564587435182
gcId uint
1161
name string
Concurrent Mark From Roots
startTime long: millis
341263116451
gcId uint
311
name string
Concurrent Scan Root Regions
startTime long: millis
3861514976

GCPhaseConcurrentLevel1

profiling default startTime duration eventThread 15 17 21 25 27 28

Category: Java Virtual Machine / GC / Phases

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

      case 1: send_phase<EventGCPhasePauseLevel1>(phase); break;
      case 2: send_phase<EventGCPhasePauseLevel2>(phase); break;
      case 3: send_phase<EventGCPhasePauseLevel3>(phase); break;
      case 4: send_phase<EventGCPhasePauseLevel4>(phase); break;
      default: /* Ignore sending this phase */ break;
    }
  }

  void visit_concurrent(GCPhase* phase) {
    assert(phase->level() < 2, "There is only two levels for ConcurrentPhase");

    switch (phase->level()) {
      case 0: send_phase<EventGCPhaseConcurrent>(phase); break;
      case 1: send_phase<EventGCPhaseConcurrentLevel1>(phase); break;
      default: /* Ignore sending this phase */ break;
    }
  }

 public:
  template<typename T>
  void send_phase(GCPhase* phase) {
    T event(UNTIMED);
    if (event.should_commit()) {
      event.set_gcId(GCId::current());
      event.set_name(phase->name());

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
gcId uint
1151
name string
Preclean SoftReferences
startTime long: millis
340084174704
gcId uint
302
name string
Trigger cleanups
startTime long: millis
571614381000
gcId uint
439
name string
Preclean WeakReferences
startTime long: millis
5005245201

GCPhaseParallel

profiling default startTime duration eventThread 12 17 21 25 27 28

Category: Java Virtual Machine / GC / Phases

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ShenandoahGC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ZGC

GC phases for parallel workers

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shenandoah/shenandoahUtils.hpp:

class ShenandoahConcurrentWorkerSession : public ShenandoahWorkerSession {
private:
  EventGCPhaseConcurrent _event;

public:
  ShenandoahConcurrentWorkerSession(uint worker_id) : ShenandoahWorkerSession(worker_id) { }
  ~ShenandoahConcurrentWorkerSession();
};

class ShenandoahParallelWorkerSession : public ShenandoahWorkerSession {
private:
  EventGCPhaseParallel _event;

public:
  ShenandoahParallelWorkerSession(uint worker_id) : ShenandoahWorkerSession(worker_id) { }
  ~ShenandoahParallelWorkerSession();
};

class ShenandoahSuspendibleThreadSetJoiner {
private:
  SuspendibleThreadSetJoiner _joiner;
public:
  ShenandoahSuspendibleThreadSetJoiner(bool active = true) : _joiner(active) {

src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.hpp:

  static const char* phase_name(Phase phase) {
    assert(phase >= 0 && phase < _num_phases, "Out of bound");
    return _phase_names[phase];
  }

  void print_cycle_on(outputStream* out) const;
  void print_global_on(outputStream* out) const;
};

class ShenandoahWorkerTimingsTracker : public StackObj {
private:
  ShenandoahPhaseTimings*          const _timings;
  ShenandoahPhaseTimings::Phase    const _phase;
  ShenandoahPhaseTimings::ParPhase const _par_phase;
  uint const _worker_id;

  double _start_time;
  EventGCPhaseParallel _event;
public:
  ShenandoahWorkerTimingsTracker(ShenandoahPhaseTimings::Phase phase, ShenandoahPhaseTimings::ParPhase par_phase, uint worker_id);
  ~ShenandoahWorkerTimingsTracker();
};

#endif // SHARE_GC_SHENANDOAH_SHENANDOAHPHASETIMINGS_HPP

src/hotspot/share/gc/g1/g1YoungGCPostEvacuateTasks.cpp:

    _before_used_bytes += used;
    _regions_freed += 1;
  }

  void account_rs_length(HeapRegion* r) {
    _rs_length += r->rem_set()->occupied();
  }
};

// Closure applied to all regions in the collection set.
class FreeCSetClosure : public HeapRegionClosure {
  // Helper to send JFR events for regions.
  class JFREventForRegion {
    EventGCPhaseParallel _event;

  public:
    JFREventForRegion(HeapRegion* region, uint worker_id) : _event() {
      _event.set_gcId(GCId::current());
      _event.set_gcWorkerId(worker_id);
      if (region->is_young()) {
        _event.set_name(G1GCPhaseTimes::phase_name(G1GCPhaseTimes::YoungFreeCSet));
      } else {
        _event.set_name(G1GCPhaseTimes::phase_name(G1GCPhaseTimes::NonYoungFreeCSet));
      }
    }

src/hotspot/share/gc/g1/g1GCParPhaseTimesTracker.hpp:

#ifndef SHARE_GC_G1_G1GCPARPHASETIMESTRACKER_HPP
#define SHARE_GC_G1_G1GCPARPHASETIMESTRACKER_HPP

#include "gc/g1/g1GCPhaseTimes.hpp"
#include "jfr/jfrEvents.hpp"
#include "utilities/ticks.hpp"

class G1GCParPhaseTimesTracker : public CHeapObj<mtGC> {
protected:
  Ticks _start_time;
  G1GCPhaseTimes::GCParPhases _phase;
  G1GCPhaseTimes* _phase_times;
  uint _worker_id;
  EventGCPhaseParallel _event;
  bool _allow_multiple_record;

public:
  G1GCParPhaseTimesTracker(G1GCPhaseTimes* phase_times, G1GCPhaseTimes::GCParPhases phase, uint worker_id, bool allow_multiple_record = false);
  virtual ~G1GCParPhaseTimesTracker();
};

class G1EvacPhaseTimesTracker : public G1GCParPhaseTimesTracker {
  Tickspan _total_time;
  Tickspan _trim_time;

src/hotspot/share/gc/g1/heapRegionManager.cpp:

      _worker_freelists[worker].~FreeRegionList();
    }
    FREE_C_HEAP_ARRAY(FreeRegionList, _worker_freelists);
  }

  FreeRegionList* worker_freelist(uint worker) {
    return &_worker_freelists[worker];
  }

  // Each worker creates a free list for a chunk of the heap. The chunks won't
  // be overlapping so we don't need to do any claiming.
  void work(uint worker_id) {
    Ticks start_time = Ticks::now();
    EventGCPhaseParallel event;

    uint start = worker_id * _worker_chunk_size;
    uint end = MIN2(start + _worker_chunk_size, _hrm->reserved_length());

    // If start is outside the heap, this worker has nothing to do.
    if (start > end) {
      return;
    }

    FreeRegionList *free_list = worker_freelist(worker_id);
    for (uint i = start; i < end; i++) {

src/hotspot/share/gc/g1/g1RemSet.cpp:

    _scanned_to = scan_memregion(region_idx_for_card, mr);

    _cards_scanned += num_cards;
  }

  ALWAYSINLINE void do_card_block(uint const region_idx, size_t const first_card, size_t const num_cards) {
    _ct->change_dirty_cards_to(first_card, num_cards, _scanned_card_value);
    do_claimed_block(region_idx, first_card, num_cards);
    _blocks_scanned++;
  }

   void scan_heap_roots(HeapRegion* r) {
    EventGCPhaseParallel event;
    uint const region_idx = r->hrm_index();

    ResourceMark rm;

    G1CardTableChunkClaimer claim(_scan_state, region_idx);

    // Set the current scan "finger" to NULL for every heap region to scan. Since
    // the claim value is monotonically increasing, the check to not scan below this
    // will filter out objects spanning chunks within the region too then, as opposed
    // to resetting this value for every claim.

src/hotspot/share/gc/g1/g1RemSet.cpp:

  size_t _opt_roots_scanned;
  size_t _opt_refs_scanned;
  size_t _opt_refs_memory_used;

  Tickspan _strong_code_root_scan_time;
  Tickspan _strong_code_trim_partially_time;

  Tickspan _rem_set_opt_root_scan_time;
  Tickspan _rem_set_opt_trim_partially_time;

  void scan_opt_rem_set_roots(HeapRegion* r) {
    EventGCPhaseParallel event;

    G1OopStarChunkedList* opt_rem_set_list = _pss->oops_into_optional_region(r);

    G1ScanCardClosure scan_cl(G1CollectedHeap::heap(), _pss, _opt_roots_scanned);
    G1ScanRSForOptionalClosure cl(G1CollectedHeap::heap(), &scan_cl);
    _opt_refs_scanned += opt_rem_set_list->oops_do(&cl, _pss->closures()->strong_oops());
    _opt_refs_memory_used += opt_rem_set_list->used_memory();

    event.commit(GCId::current(), _worker_id, G1GCPhaseTimes::phase_name(_scan_phase));
  }

src/hotspot/share/gc/g1/g1RemSet.cpp:

  bool do_heap_region(HeapRegion* r) {
    uint const region_idx = r->hrm_index();

    // The individual references for the optional remembered set are per-worker, so we
    // always need to scan them.
    if (r->has_index_in_opt_cset()) {
      G1EvacPhaseWithTrimTimeTracker timer(_pss, _rem_set_opt_root_scan_time, _rem_set_opt_trim_partially_time);
      scan_opt_rem_set_roots(r);
    }

    if (_scan_state->claim_collection_set_region(region_idx)) {
      EventGCPhaseParallel event;

      G1EvacPhaseWithTrimTimeTracker timer(_pss, _strong_code_root_scan_time, _strong_code_trim_partially_time);
      // Scan the strong code root list attached to the current region
      r->strong_code_roots_do(_pss->closures()->weak_codeblobs());

      event.commit(GCId::current(), _worker_id, G1GCPhaseTimes::phase_name(_code_roots_phase));
    }

    return false;
  }

src/hotspot/share/gc/g1/g1YoungCollector.cpp:

  G1CollectedHeap*              _g1h;
  G1ParScanThreadState*         _par_scan_state;
  G1ScannerTasksQueueSet*       _queues;
  TaskTerminator*               _terminator;
  G1GCPhaseTimes::GCParPhases   _phase;

  G1ParScanThreadState*   par_scan_state() { return _par_scan_state; }
  G1ScannerTasksQueueSet* queues()         { return _queues; }
  TaskTerminator*         terminator()     { return _terminator; }

  inline bool offer_termination() {
    EventGCPhaseParallel event;
    G1ParScanThreadState* const pss = par_scan_state();
    start_term_time();
    const bool res = (terminator() == nullptr) ? true : terminator()->offer_termination();
    end_term_time();
    event.commit(GCId::current(), pss->worker_id(), G1GCPhaseTimes::phase_name(G1GCPhaseTimes::Termination));
    return res;
  }

public:
  G1ParEvacuateFollowersClosure(G1CollectedHeap* g1h,
                                G1ParScanThreadState* par_scan_state,
                                G1ScannerTasksQueueSet* queues,
                                TaskTerminator* terminator,
                                G1GCPhaseTimes::GCParPhases phase)
    : _start_term(0.0), _term_time(0.0), _term_attempts(0),
      _g1h(g1h), _par_scan_state(par_scan_state),
      _queues(queues), _terminator(terminator), _phase(phase) {}

  void do_void() {
    EventGCPhaseParallel event;
    G1ParScanThreadState* const pss = par_scan_state();
    pss->trim_queue();
    event.commit(GCId::current(), pss->worker_id(), G1GCPhaseTimes::phase_name(_phase));
    do {
      EventGCPhaseParallel event;
      pss->steal_and_trim_queue(queues());
      event.commit(GCId::current(), pss->worker_id(), G1GCPhaseTimes::phase_name(_phase));
    } while (!offer_termination());
  }

  double term_time() const { return _term_time; }
  size_t term_attempts() const { return _term_attempts; }
};

class G1EvacuateRegionsBaseTask : public WorkerTask {

Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Field Type Description
gcId uint GC Identifier
gcWorkerId uint GC Worker Identifier
name string Name

Examples 3
gcId uint
316
gcWorkerId uint
1
name string
Finish Mark
startTime long: millis
592584893262
gcId uint
1099
gcWorkerId uint
1
name string
ClearLoggedCards
startTime long: millis
330123461438
gcId uint
2
gcWorkerId uint
3
name string
ThreadRoots
startTime long: millis
452429999

JVM: GC: Reference

GCReferenceStatistics

profiling default startTime 11 17 21 25 27 28

Category: Java Virtual Machine / GC / Reference

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Total count of processed references during GC

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/gcTraceSend.cpp:

  if (event.should_commit()) {
    event.set_gcId(GCId::current());
    event.set_name(_shared_gc_info.name());
    event.set_cause((u2) _shared_gc_info.cause());
    event.set_sumOfPauses(_shared_gc_info.sum_of_pauses());
    event.set_longestPause(_shared_gc_info.longest_pause());
    event.set_starttime(_shared_gc_info.start_timestamp());
    event.set_endtime(_shared_gc_info.end_timestamp());
    event.commit();
  }
}

void GCTracer::send_reference_stats_event(ReferenceType type, size_t count) const {
  EventGCReferenceStatistics e;
  if (e.should_commit()) {
      e.set_gcId(GCId::current());
      e.set_type((u1)type);
      e.set_count(count);
      e.commit();
  }
}

void GCTracer::send_metaspace_chunk_free_list_summary(GCWhen::Type when, Metaspace::MetadataType mdtype,
                                                      const MetaspaceChunkFreeListSummary& summary) const {
  EventMetaspaceChunkFreeListSummary e;

Configuration enabled
profiling true
default true

Field Type Description
gcId uint GC Identifier
type ReferenceType Type
count ulong Total Count

Examples 3
count ulong
56349
gcId uint
345
startTime long: millis
646945069894
type ReferenceType
Weak reference
count ulong
11
gcId uint
4
startTime long: millis
460044164
type ReferenceType
Weak reference
count ulong
0
gcId uint
1105
startTime long: millis
330681531579
type ReferenceType
Phantom reference

JVM: Internal

Duration

internal startTime duration eventThread 18 21 25 27 28

Category: Java Virtual Machine / Internal

Instant

internal startTime eventThread 18 21 25 27 28

Category: Java Virtual Machine / Internal

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/EventProvider.java:

    /**
     * Creates and returns an empty implementation for {@link CompilationEvent}.
     */
    static CompilerFailureEvent createEmptyCompilerFailureEvent() {
        return new EmptyCompilerFailureEvent();
    }

    /**
     * An instant event is an event that is not considered to have taken any time.
     */
    public interface InstantEvent {
        /**
         * Commits the event.
         */
        void commit();

        /**
         * Determines if this particular event instance would be committed to the data stream right
         * now if application called {@link #commit()}. This in turn depends on whether the event is
         * enabled and possible other factors.
         *
         * @return if this event would be committed on a call to {@link #commit()}.
         */
        boolean shouldWrite();
    }

    /**
     * Timed events describe an operation that somehow consumes time.
     */
    public interface TimedEvent extends InstantEvent {
        /**
         * Starts the timing for this event.
         */
        void begin();

        /**
         * Ends the timing period for this event.
         */
        void end();
    }

src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/EventProvider.java:

        void setIsOsr(boolean isOsr);

        void setCodeSize(int codeSize);

        void setInlinedBytes(int inlinedBytes);
    }

    /**
     * Creates a new {@link CompilerFailureEvent}.
     *
     * @return a compiler failure event
     */
    CompilerFailureEvent newCompilerFailureEvent();

    /**
     * A compiler failure event.
     */
    public interface CompilerFailureEvent extends InstantEvent {
        void setCompileId(int compileId);

        void setMessage(String message);
    }
}

Value

internal startTime eventThread 18 21 25 27 28

Category: Java Virtual Machine / Internal

Field Type Description
value ulong Value

Text

internal startTime eventThread 18 21 25 27 28

Category: Java Virtual Machine / Internal

Field Type Description
text string Text

JVM: Profiling

OldObjectSample

cutoff profiling default startTime eventThread stackTrace 11 17 21 25 27 28

Category: Java Virtual Machine / Profiling

Appearing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: linux_ShenandoahGC, linux_ZGC

A potential memory leak

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/leakprofiler/checkpoint/eventEmitter.cpp:

  assert(!sample->is_dead(), "invariant");
  assert(edge_store != NULL, "invariant");
  assert(_jfr_thread_local != NULL, "invariant");

  const StoredEdge* const edge = edge_store->get(sample);
  assert(edge != NULL, "invariant");
  assert(edge->pointee() == sample->object(), "invariant");
  const traceid object_id = edge_store->get_id(edge);
  assert(object_id != 0, "invariant");
  const traceid gc_root_id = edge->gc_root_id();

  Tickspan object_age = Ticks(_start_time.value()) - sample->allocation_time();

  EventOldObjectSample e(UNTIMED);
  e.set_starttime(_start_time);
  e.set_endtime(_end_time);
  e.set_allocationTime(sample->allocation_time());
  e.set_objectSize(sample->allocated());
  e.set_objectAge(object_age);
  e.set_lastKnownHeapUsage(sample->heap_used_at_last_gc());
  e.set_object(object_id);
  e.set_arrayElements(array_size(edge->pointee()));
  e.set_root(gc_root_id);

  // Temporarily assigning both the stack trace id and thread id

src/hotspot/share/jfr/leakprofiler/sampling/objectSampler.cpp:

  if (!tl->has_thread_blob()) {
    JfrCheckpointManager::create_thread_blob(thread);
  }
  assert(tl->has_thread_blob(), "invariant");
  return tl->thread_id();
}

class RecordStackTrace {
 private:
  JavaThread* _jt;
  bool _enabled;
 public:
  RecordStackTrace(JavaThread* jt) : _jt(jt),
    _enabled(JfrEventSetting::has_stacktrace(EventOldObjectSample::eventId)) {
    if (_enabled) {
      JfrStackTraceRepository::record_for_leak_profiler(jt);
    }
  }
  ~RecordStackTrace() {
    if (_enabled) {
      _jt->jfr_thread_local()->clear_cached_stack_trace();
    }
  }
};

src/hotspot/share/jfr/jni/jfrJniMethod.cpp:

NO_TRANSITION(jlong, jfr_elapsed_counter(JNIEnv* env, jobject jvm))
  return JfrTicks::now();
NO_TRANSITION_END

NO_TRANSITION(void, jfr_retransform_classes(JNIEnv* env, jobject jvm, jobjectArray classes))
  JfrJvmtiAgent::retransform_classes(env, classes, JavaThread::thread_from_jni_environment(env));
NO_TRANSITION_END

NO_TRANSITION(void, jfr_set_enabled(JNIEnv* env, jobject jvm, jlong event_type_id, jboolean enabled))
  JfrEventSetting::set_enabled(event_type_id, JNI_TRUE == enabled);
  if (EventOldObjectSample::eventId == event_type_id) {
    ThreadInVMfromNative transition(JavaThread::thread_from_jni_environment(env));
    if (JNI_TRUE == enabled) {
      LeakProfiler::start(JfrOptionSet::old_object_queue_size());
    } else {
      LeakProfiler::stop();
    }
  }
NO_TRANSITION_END

NO_TRANSITION(void, jfr_set_file_notification(JNIEnv* env, jobject jvm, jlong threshold))
  JfrChunkRotation::set_threshold(threshold);

Configuration cutoff enabled stackTrace
profiling 0 ns true true
default 0 ns true false

Field Type Description
allocationTime Ticks Allocation Time
objectSize ulong: bytes 18+ Object Size
objectAge Tickspan 14+ Object Age
lastKnownHeapUsage ulong: bytes Last Known Heap Usage
object OldObject Object
arrayElements int Array Elements If the object is an array, the number of elements, or -1 if it is not an array
root OldObjectGcRoot GC Root

Examples 3
allocationTime Ticks
684899924002
arrayElements int
-2147483648
lastKnownHeapUsage ulong: bytes
279053520
object OldObject
address ulong: address
30405830272
description string
Size: 1
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
8
name string
java/lang/ThreadLocal$ThreadLocalMap
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
objectAge Tickspan
10858521635
objectSize ulong: bytes
24
root OldObjectGcRoot
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
299
method Method
descriptor string
(Ljava/lang/Thread;Ljava/lang/Object;)V
hidden boolean
false
modifiers int
0
name string
createMap
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/ThreadLocal
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Inlined
truncated boolean
false
startTime long: millis
695758445637
allocationTime Ticks
25377558494
arrayElements int
4096
lastKnownHeapUsage ulong: bytes
6573120
object OldObject
address ulong: address
30173500224
description string
null
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
objectAge Tickspan
20047739
objectSize ulong: bytes
4112
root OldObjectGcRoot
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
24
lineNumber int
494
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
allocateAndGC
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
25397606233
allocationTime Ticks
365285568635
arrayElements int
80
lastKnownHeapUsage ulong: bytes
292947816
object OldObject
address ulong: address
30371962400
description string
null
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[Ljava/lang/Object;
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
objectAge Tickspan
7468323306
objectSize ulong: bytes
336
root OldObjectGcRoot
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
16
lineNumber int
52
method Method
descriptor string
(I)V
hidden boolean
false
modifiers int
1
name string
<init>
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
scala/collection/mutable/ArrayBuffer
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/collection/mutable
type FrameType
Inlined
truncated boolean
true
startTime long: millis
372753891941

ExecutionSample

profiling default startTime every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Profiling

Snapshot of a threads state

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/jni/jfrJniMethod.cpp:

JVM_ENTRY_NO_ENV(void, jfr_subscribe_log_level(JNIEnv* env, jobject jvm, jobject log_tag, jint id))
  JfrJavaLog::subscribe_log_level(log_tag, id, thread);
JVM_END

JVM_ENTRY_NO_ENV(void, jfr_set_output(JNIEnv* env, jobject jvm, jstring path))
  JfrRepository::set_chunk_path(path, thread);
JVM_END

JVM_ENTRY_NO_ENV(void, jfr_set_method_sampling_interval(JNIEnv* env, jobject jvm, jlong type, jlong intervalMillis))
  if (intervalMillis < 0) {
    intervalMillis = 0;
  }
  JfrEventId typed_event_id = (JfrEventId)type;
  assert(EventExecutionSample::eventId == typed_event_id || EventNativeMethodSample::eventId == typed_event_id, "invariant");
  if (intervalMillis > 0) {
    JfrEventSetting::set_enabled(typed_event_id, true); // ensure sampling event is enabled
  }
  if (EventExecutionSample::eventId == type) {
    JfrThreadSampling::set_java_sample_interval(intervalMillis);
  } else {
    JfrThreadSampling::set_native_sample_interval(intervalMillis);
  }
JVM_END

JVM_ENTRY_NO_ENV(void, jfr_store_metadata_descriptor(JNIEnv* env, jobject jvm, jbyteArray descriptor))
  JfrMetadataEvent::update(descriptor);
JVM_END

// trace thread id for a thread object

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

    case _thread_in_native_trans:
      break;
    case _thread_in_native:
      return true;
    default:
      ShouldNotReachHere();
      break;
  }
  return false;
}

class JfrThreadSampleClosure {
 public:
  JfrThreadSampleClosure(EventExecutionSample* events, EventNativeMethodSample* events_native);
  ~JfrThreadSampleClosure() {}
  EventExecutionSample* next_event() { return &_events[_added_java++]; }
  EventNativeMethodSample* next_event_native() { return &_events_native[_added_native++]; }
  void commit_events(JfrSampleType type);
  bool do_sample_thread(JavaThread* thread, JfrStackFrame* frames, u4 max_frames, JfrSampleType type);
  uint java_entries() { return _added_java; }
  uint native_entries() { return _added_native; }

 private:
  bool sample_thread_in_java(JavaThread* thread, JfrStackFrame* frames, u4 max_frames);
  bool sample_thread_in_native(JavaThread* thread, JfrStackFrame* frames, u4 max_frames);
  EventExecutionSample* _events;
  EventNativeMethodSample* _events_native;
  Thread* _self;
  uint _added_java;
  uint _added_native;
};

class OSThreadSampler : public os::SuspendedThreadTask {
 public:
  OSThreadSampler(JavaThread* thread,
                  JfrThreadSampleClosure& closure,
                  JfrStackFrame *frames,

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

  // Skip sample if we signaled a thread that moved to other state
  if (!thread_state_in_java(jth)) {
    return;
  }
  JfrGetCallTrace trace(true, jth);
  frame topframe;
  if (trace.get_topframe(context.ucontext(), topframe)) {
    if (_stacktrace.record_thread(*jth, topframe)) {
      /* If we managed to get a topframe and a stacktrace, create an event
      * and put it into our array. We can't call Jfr::_stacktraces.add()
      * here since it would allocate memory using malloc. Doing so while
      * the stopped thread is inside malloc would deadlock. */
      _success = true;
      EventExecutionSample *ev = _closure.next_event();
      ev->set_starttime(_suspend_time);
      ev->set_endtime(_suspend_time); // fake to not take an end time
      ev->set_sampledThread(JFR_THREAD_ID(jth));
      ev->set_state(static_cast<u8>(java_lang_Thread::get_thread_status(_thread_oop)));
    }
  }
}

void OSThreadSampler::take_sample() {
  run();
}

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

bool JfrThreadSampleClosure::sample_thread_in_java(JavaThread* thread, JfrStackFrame* frames, u4 max_frames) {
  OSThreadSampler sampler(thread, *this, frames, max_frames);
  sampler.take_sample();
  /* We don't want to allocate any memory using malloc/etc while the thread
  * is stopped, so everything is stored in stack allocated memory until this
  * point where the thread has been resumed again, if the sampling was a success
  * we need to store the stacktrace in the stacktrace repository and update
  * the event with the id that was returned. */
  if (!sampler.success()) {
    return false;
  }
  EventExecutionSample *event = &_events[_added_java - 1];
  traceid id = JfrStackTraceRepository::add(sampler.stacktrace());
  assert(id != 0, "Stacktrace id should not be 0");
  event->set_stackTrace(id);
  return true;
}

bool JfrThreadSampleClosure::sample_thread_in_native(JavaThread* thread, JfrStackFrame* frames, u4 max_frames) {
  JfrNativeSamplerCallback cb(*this, thread, frames, max_frames);
  if (JfrOptionSet::sample_protection()) {
    os::ThreadCrashProtection crash_protection;
    if (!crash_protection.call(cb)) {

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

    assert(_added_java > 0 && _added_java <= MAX_NR_OF_JAVA_SAMPLES, "invariant");
    for (uint i = 0; i < _added_java; ++i) {
      _events[i].commit();
    }
  } else {
    assert(NATIVE_SAMPLE == type, "invariant");
    assert(_added_native > 0 && _added_native <= MAX_NR_OF_NATIVE_SAMPLES, "invariant");
    for (uint i = 0; i < _added_native; ++i) {
      _events_native[i].commit();
    }
  }
}

JfrThreadSampleClosure::JfrThreadSampleClosure(EventExecutionSample* events, EventNativeMethodSample* events_native) :
  _events(events),
  _events_native(events_native),
  _self(Thread::current()),
  _added_java(0),
  _added_native(0) {
}

class JfrThreadSampler : public NonJavaThread {
  friend class JfrThreadSampling;
 private:
  Semaphore _sample;

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

const JfrBuffer* JfrThreadSampler::get_enqueue_buffer() {
  const JfrBuffer* buffer = JfrTraceIdLoadBarrier::get_enqueue_buffer(this);
  return buffer != nullptr ? renew_if_full(buffer) : JfrTraceIdLoadBarrier::renew_enqueue_buffer(_renew_size, this);
}

const JfrBuffer* JfrThreadSampler::renew_if_full(const JfrBuffer* enqueue_buffer) {
  assert(enqueue_buffer != nullptr, "invariant");
  return enqueue_buffer->free_size() < _min_size ? JfrTraceIdLoadBarrier::renew_enqueue_buffer(_renew_size, this) : enqueue_buffer;
}

void JfrThreadSampler::task_stacktrace(JfrSampleType type, JavaThread** last_thread) {
  ResourceMark rm;
  EventExecutionSample samples[MAX_NR_OF_JAVA_SAMPLES];
  EventNativeMethodSample samples_native[MAX_NR_OF_NATIVE_SAMPLES];
  JfrThreadSampleClosure sample_task(samples, samples_native);

  const uint sample_limit = JAVA_SAMPLE == type ? MAX_NR_OF_JAVA_SAMPLES : MAX_NR_OF_NATIVE_SAMPLES;
  uint num_samples = 0;
  JavaThread* start = NULL;
  {
    elapsedTimer sample_time;
    sample_time.start();
    {
      MutexLocker tlock(Threads_lock);

Configuration enabled period
profiling true 10 ms
default true 20 ms

Field Type Description
sampledThread Thread Thread
stackTrace StackTrace Stack Trace
state ThreadState Thread State

Examples 3
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Executor task launch worker for task 0.0 in stage 49.0 (TID 190)
javaThreadId long
1707
osName string
Executor task launch worker for task 0.0 in stage 49.0 (TID 190)
osThreadId long
4212
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
162
lineNumber int
3387
method Method
descriptor string
(Lbreeze/linalg/DenseMatrix;Lbreeze/linalg/Vector;)Lbreeze/linalg/DenseVector;
hidden boolean
false
modifiers int
1
name string
bindingMissing
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
17
name string
breeze/linalg/operators/DenseMatrixMultOps$$anon$178
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
breeze/linalg/operators
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
330935180979
state ThreadState
STATE_RUNNABLE
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
block-manager-storage-async-thread-pool-41
javaThreadId long
1914
osName string
block-manager-storage-async-thread-pool-41
osThreadId long
4693
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
4
lineNumber int
879
method Method
descriptor string
(Lorg/apache/spark/storage/BlockId;Lorg/apache/spark/storage/BlockInfo;)Lorg/apache/spark/storage/BlockStatus;
hidden boolean
false
modifiers int
1
name string
org$apache$spark$storage$BlockManager$$getCurrentBlockStatus
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
org/apache/spark/storage/BlockManager
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/spark/storage
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
624039054078
state ThreadState
STATE_RUNNABLE
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
pool-1-thread-4
javaThreadId long
37
osName string
pool-1-thread-4
osThreadId long
4607
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
11
lineNumber int
121
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
1
name string
putLong
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/jfr/internal/event/EventWriter
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.4.1
name string
jdk/jfr/internal/event
type FrameType
Inlined
truncated boolean
false
startTime long: millis
3213712822
state ThreadState
STATE_RUNNABLE

NativeMethodSample

profiling default startTime every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Profiling

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Snapshot of a threads state when in native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/jni/jfrJniMethod.cpp:

JVM_ENTRY_NO_ENV(void, jfr_subscribe_log_level(JNIEnv* env, jobject jvm, jobject log_tag, jint id))
  JfrJavaLog::subscribe_log_level(log_tag, id, thread);
JVM_END

JVM_ENTRY_NO_ENV(void, jfr_set_output(JNIEnv* env, jobject jvm, jstring path))
  JfrRepository::set_chunk_path(path, thread);
JVM_END

JVM_ENTRY_NO_ENV(void, jfr_set_method_sampling_interval(JNIEnv* env, jobject jvm, jlong type, jlong intervalMillis))
  if (intervalMillis < 0) {
    intervalMillis = 0;
  }
  JfrEventId typed_event_id = (JfrEventId)type;
  assert(EventExecutionSample::eventId == typed_event_id || EventNativeMethodSample::eventId == typed_event_id, "invariant");
  if (intervalMillis > 0) {
    JfrEventSetting::set_enabled(typed_event_id, true); // ensure sampling event is enabled
  }
  if (EventExecutionSample::eventId == type) {
    JfrThreadSampling::set_java_sample_interval(intervalMillis);
  } else {
    JfrThreadSampling::set_native_sample_interval(intervalMillis);
  }
JVM_END

JVM_ENTRY_NO_ENV(void, jfr_store_metadata_descriptor(JNIEnv* env, jobject jvm, jbyteArray descriptor))

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

    case _thread_in_native_trans:
      break;
    case _thread_in_native:
      return true;
    default:
      ShouldNotReachHere();
      break;
  }
  return false;
}

class JfrThreadSampleClosure {
 public:
  JfrThreadSampleClosure(EventExecutionSample* events, EventNativeMethodSample* events_native);
  ~JfrThreadSampleClosure() {}
  EventExecutionSample* next_event() { return &_events[_added_java++]; }
  EventNativeMethodSample* next_event_native() { return &_events_native[_added_native++]; }
  void commit_events(JfrSampleType type);
  bool do_sample_thread(JavaThread* thread, JfrStackFrame* frames, u4 max_frames, JfrSampleType type);
  uint java_entries() { return _added_java; }
  uint native_entries() { return _added_native; }

 private:
  bool sample_thread_in_java(JavaThread* thread, JfrStackFrame* frames, u4 max_frames);
  bool sample_thread_in_native(JavaThread* thread, JfrStackFrame* frames, u4 max_frames);
  EventExecutionSample* _events;
  EventNativeMethodSample* _events_native;
  Thread* _self;
  uint _added_java;
  uint _added_native;
};

class OSThreadSampler : public os::SuspendedThreadTask {
 public:
  OSThreadSampler(JavaThread* thread,
                  JfrThreadSampleClosure& closure,
                  JfrStackFrame *frames,
                  u4 max_frames) : os::SuspendedThreadTask((Thread*)thread),

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

  virtual void call();
  bool success() { return _success; }
  JfrStackTrace& stacktrace() { return _stacktrace; }

 private:
  JfrThreadSampleClosure& _closure;
  JavaThread* _jt;
  oop _thread_oop;
  JfrStackTrace _stacktrace;
  bool _success;
};

static void write_native_event(JfrThreadSampleClosure& closure, JavaThread* jt, oop thread_oop) {
  EventNativeMethodSample *ev = closure.next_event_native();
  ev->set_starttime(JfrTicks::now());
  ev->set_sampledThread(JFR_THREAD_ID(jt));
  ev->set_state(static_cast<u8>(java_lang_Thread::get_thread_status(thread_oop)));
}

void JfrNativeSamplerCallback::call() {
  // When a thread is only attach it will be native without a last java frame
  if (!_jt->has_last_Java_frame()) {
    return;
  }

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

bool JfrThreadSampleClosure::sample_thread_in_native(JavaThread* thread, JfrStackFrame* frames, u4 max_frames) {
  JfrNativeSamplerCallback cb(*this, thread, frames, max_frames);
  if (JfrOptionSet::sample_protection()) {
    os::ThreadCrashProtection crash_protection;
    if (!crash_protection.call(cb)) {
      log_error(jfr)("Thread method sampler crashed for native");
    }
  } else {
    cb.call();
  }
  if (!cb.success()) {
    return false;
  }
  EventNativeMethodSample *event = &_events_native[_added_native - 1];
  traceid id = JfrStackTraceRepository::add(cb.stacktrace());
  assert(id != 0, "Stacktrace id should not be 0");
  event->set_stackTrace(id);
  return true;
}

static const uint MAX_NR_OF_JAVA_SAMPLES = 5;
static const uint MAX_NR_OF_NATIVE_SAMPLES = 1;

void JfrThreadSampleClosure::commit_events(JfrSampleType type) {
  if (JAVA_SAMPLE == type) {

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

    assert(_added_java > 0 && _added_java <= MAX_NR_OF_JAVA_SAMPLES, "invariant");
    for (uint i = 0; i < _added_java; ++i) {
      _events[i].commit();
    }
  } else {
    assert(NATIVE_SAMPLE == type, "invariant");
    assert(_added_native > 0 && _added_native <= MAX_NR_OF_NATIVE_SAMPLES, "invariant");
    for (uint i = 0; i < _added_native; ++i) {
      _events_native[i].commit();
    }
  }
}

JfrThreadSampleClosure::JfrThreadSampleClosure(EventExecutionSample* events, EventNativeMethodSample* events_native) :
  _events(events),
  _events_native(events_native),
  _self(Thread::current()),
  _added_java(0),
  _added_native(0) {
}

class JfrThreadSampler : public NonJavaThread {
  friend class JfrThreadSampling;
 private:
  Semaphore _sample;

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

const JfrBuffer* JfrThreadSampler::get_enqueue_buffer() {
  const JfrBuffer* buffer = JfrTraceIdLoadBarrier::get_enqueue_buffer(this);
  return buffer != nullptr ? renew_if_full(buffer) : JfrTraceIdLoadBarrier::renew_enqueue_buffer(_renew_size, this);
}

const JfrBuffer* JfrThreadSampler::renew_if_full(const JfrBuffer* enqueue_buffer) {
  assert(enqueue_buffer != nullptr, "invariant");
  return enqueue_buffer->free_size() < _min_size ? JfrTraceIdLoadBarrier::renew_enqueue_buffer(_renew_size, this) : enqueue_buffer;
}

void JfrThreadSampler::task_stacktrace(JfrSampleType type, JavaThread** last_thread) {
  ResourceMark rm;
  EventExecutionSample samples[MAX_NR_OF_JAVA_SAMPLES];
  EventNativeMethodSample samples_native[MAX_NR_OF_NATIVE_SAMPLES];
  JfrThreadSampleClosure sample_task(samples, samples_native);

  const uint sample_limit = JAVA_SAMPLE == type ? MAX_NR_OF_JAVA_SAMPLES : MAX_NR_OF_NATIVE_SAMPLES;
  uint num_samples = 0;
  JavaThread* start = NULL;
  {
    elapsedTimer sample_time;
    sample_time.start();
    {
      MutexLocker tlock(Threads_lock);
      ThreadsListHandle tlh;

Configuration enabled period
profiling true 20 ms
default true 20 ms

Field Type Description
sampledThread Thread Thread
stackTrace StackTrace Stack Trace
state ThreadState Thread State

Examples 3
sampledThread Thread
group ThreadGroup
name string
finagle/netty4
parent ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
finagle/netty4-2-4
javaThreadId long
1030
osName string
finagle/netty4-2-4
osThreadId long
3719
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(IJII)I
hidden boolean
false
modifiers int
266
name string
epollWait
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
17
name string
io/netty/channel/epoll/Native
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
io/netty/channel/epoll
type FrameType
Native
truncated boolean
false
startTime long: millis
624270626473
state ThreadState
STATE_RUNNABLE
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
3
osName string
main
osThreadId long
4574
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(Ljava/io/FileDescriptor;Z)I
hidden boolean
false
modifiers int
264
name string
force0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
sun/nio/ch/UnixFileDispatcherImpl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
sun/nio/ch
type FrameType
Native
truncated boolean
false
startTime long: millis
1463338761
state ThreadState
STATE_RUNNABLE
sampledThread Thread
group ThreadGroup
name string
finagle/netty4
parent ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
finagle/netty4-2-2
javaThreadId long
888
osName string
finagle/netty4-2-2
osThreadId long
3281
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(IJII)I
hidden boolean
false
modifiers int
266
name string
epollWait
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
17
name string
io/netty/channel/epoll/Native
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
io/netty/channel/epoll
type FrameType
Native
truncated boolean
false
startTime long: millis
331115610215
state ThreadState
STATE_RUNNABLE

JVM: Runtime

ReservedStackActivation

profiling default startTime eventThread stackTrace 11 17 21 25 27 28

Category: Java Virtual Machine / Runtime

Activation of Reserved Stack Area caused by stack overflow with ReservedStackAccess annotated method in call stack

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/sharedRuntime.cpp:

        for (ScopeDesc *sd = nm->scope_desc_near(fr.pc()); sd != NULL; sd = sd->sender()) {
          method = sd->method();
          if (method != NULL && method->has_reserved_stack_access()) {
            found = true;
      }
    }
      }
    }
    if (found) {
      activation = fr;
      warning("Potentially dangerous stack overflow in "
              "ReservedStackAccess annotated method %s [%d]",
              method->name_and_sig_as_C_string(), count++);
      EventReservedStackActivation event;
      if (event.should_commit()) {
        event.set_method(method);
        event.commit();
      }
    }
    if (fr.is_first_java_frame()) {
      break;
    } else {
      fr = fr.java_sender();
    }
  }

Configuration enabled stackTrace
profiling true true
default true true

Field Type Description
method Method Java Method

SafepointBegin

profiling default startTime duration eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / Runtime / Safepoint

Safepointing begin

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/safepoint.cpp:

static void post_safepoint_begin_event(EventSafepointBegin& event,
                                       uint64_t safepoint_id,
                                       int thread_count,
                                       int critical_thread_count) {
  if (event.should_commit()) {
    event.set_safepointId(safepoint_id);
    event.set_totalThreadCount(thread_count);
    event.set_jniCriticalThreadCount(critical_thread_count);
    event.commit();
  }
}

src/hotspot/share/runtime/safepoint.cpp:

  OrderAccess::storestore(); // storestore, global state -> local state
  for (JavaThreadIteratorWithHandle jtiwh; JavaThread *cur = jtiwh.next(); ) {
    // Make sure the threads start polling, it is time to yield.
    SafepointMechanism::arm_local_poll(cur);
  }

  OrderAccess::fence(); // storestore|storeload, global state -> local state
}

// Roll all threads forward to a safepoint and suspend them all
void SafepointSynchronize::begin() {
  assert(Thread::current()->is_VM_thread(), "Only VM thread may execute a safepoint");

  EventSafepointBegin begin_event;
  SafepointTracing::begin(VMThread::vm_op_type());

  Universe::heap()->safepoint_synchronize_begin();

  // By getting the Threads_lock, we assure that no threads are about to start or
  // exit. It is released again in SafepointSynchronize::end().
  Threads_lock->lock();

  assert( _state == _not_synchronized, "trying to safepoint synchronize with wrong state");

  int nof_threads = Threads::number_of_threads();

Configuration enabled threshold
profiling true 0 ms
default true 10 ms

Field Type Description
safepointId ulong Safepoint Identifier
totalThreadCount int Total Threads The total number of threads at the start of safe point
jniCriticalThreadCount int JNI Critical Threads The number of threads in JNI critical sections

Examples 3
jniCriticalThreadCount int
0
safepointId ulong
13
startTime long: millis
469751176
totalThreadCount int
24
jniCriticalThreadCount int
0
safepointId ulong
1617
startTime long: millis
331416574718
totalThreadCount int
300
jniCriticalThreadCount int
0
safepointId ulong
543
startTime long: millis
670211909914
totalThreadCount int
47

SafepointStateSynchronization

startTime duration eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / Runtime / Safepoint

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Synchronize run state of threads

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/safepoint.cpp:

    event.set_totalThreadCount(thread_count);
    event.set_jniCriticalThreadCount(critical_thread_count);
    event.commit();
  }
}

static void post_safepoint_cleanup_event(EventSafepointCleanup& event, uint64_t safepoint_id) {
  if (event.should_commit()) {
    event.set_safepointId(safepoint_id);
    event.commit();
  }
}

static void post_safepoint_synchronize_event(EventSafepointStateSynchronization& event,
                                             uint64_t safepoint_id,
                                             int initial_number_of_threads,
                                             int threads_waiting_to_block,
                                             uint64_t iterations) {
  if (event.should_commit()) {
    event.set_safepointId(safepoint_id);
    event.set_initialThreadCount(initial_number_of_threads);
    event.set_runningThreadCount(threads_waiting_to_block);
    event.set_iterations(iterations);
    event.commit();
  }

src/hotspot/share/runtime/safepoint.cpp:

  _current_jni_active_count = 0;

  // Set number of threads to wait for
  _waiting_to_block = nof_threads;

  jlong safepoint_limit_time = 0;
  if (SafepointTimeout) {
    // Set the limit time, so that it can be compared to see if this has taken
    // too long to complete.
    safepoint_limit_time = SafepointTracing::start_of_safepoint() + (jlong)SafepointTimeoutDelay * (NANOUNITS / MILLIUNITS);
    timeout_error_printed = false;
  }

  EventSafepointStateSynchronization sync_event;
  int initial_running = 0;

  // Arms the safepoint, _current_jni_active_count and _waiting_to_block must be set before.
  arm_safepoint();

  // Will spin until all threads are safe.
  int iterations = synchronize_threads(safepoint_limit_time, nof_threads, &initial_running);
  assert(_waiting_to_block == 0, "No thread should be running");

#ifndef PRODUCT
  // Mark all threads

Configuration enabled threshold
profiling false 0 ms
default false 10 ms

Field Type Description
safepointId ulong Safepoint Identifier
initialThreadCount int Initial Threads The number of threads running at the beginning of state check
runningThreadCount int Running Threads The number of threads still running
iterations int Iterations Number of state check iterations

Examples 3
initialThreadCount int
1
iterations int
3
runningThreadCount int
0
safepointId ulong
547
startTime long: millis
675523784586
initialThreadCount int
1
iterations int
2
runningThreadCount int
0
safepointId ulong
47
startTime long: millis
1231400262
initialThreadCount int
0
iterations int
1
runningThreadCount int
0
safepointId ulong
1642
startTime long: millis
335373772233

SafepointCleanup

startTime duration eventThread 11 17 21 until JDK 23

Category: Java Virtual Machine / Runtime / Safepoint

Safepointing begin running cleanup tasks

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/safepoint.cpp:

static void post_safepoint_begin_event(EventSafepointBegin& event,
                                       uint64_t safepoint_id,
                                       int thread_count,
                                       int critical_thread_count) {
  if (event.should_commit()) {
    event.set_safepointId(safepoint_id);
    event.set_totalThreadCount(thread_count);
    event.set_jniCriticalThreadCount(critical_thread_count);
    event.commit();
  }
}

static void post_safepoint_cleanup_event(EventSafepointCleanup& event, uint64_t safepoint_id) {
  if (event.should_commit()) {
    event.set_safepointId(safepoint_id);
    event.commit();
  }
}

static void post_safepoint_synchronize_event(EventSafepointStateSynchronization& event,
                                             uint64_t safepoint_id,
                                             int initial_number_of_threads,
                                             int threads_waiting_to_block,
                                             uint64_t iterations) {

src/hotspot/share/runtime/safepoint.cpp:

  // Update the count of active JNI critical regions
  GCLocker::set_jni_lock_count(_current_jni_active_count);

  post_safepoint_synchronize_event(sync_event,
                                   _safepoint_id,
                                   initial_running,
                                   _waiting_to_block, iterations);

  SafepointTracing::synchronized(nof_threads, initial_running, _nof_threads_hit_polling_page);

  // We do the safepoint cleanup first since a GC related safepoint
  // needs cleanup to be completed before running the GC op.
  EventSafepointCleanup cleanup_event;
  do_cleanup_tasks();
  post_safepoint_cleanup_event(cleanup_event, _safepoint_id);

  post_safepoint_begin_event(begin_event, _safepoint_id, nof_threads, _current_jni_active_count);
  SafepointTracing::cleanup();
}

void SafepointSynchronize::disarm_safepoint() {
  uint64_t active_safepoint_counter = _safepoint_counter;
  {
    JavaThreadIteratorWithHandle jtiwh;

Configuration enabled threshold
profiling false 0 ms
default false 10 ms

Field Type Description
safepointId ulong Safepoint Identifier

SafepointCleanupTask

startTime duration eventThread 11 17 21 until JDK 23

Category: Java Virtual Machine / Runtime / Safepoint

Safepointing begin running cleanup tasks

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/safepoint.cpp:

                                             uint64_t safepoint_id,
                                             int initial_number_of_threads,
                                             int threads_waiting_to_block,
                                             uint64_t iterations) {
  if (event.should_commit()) {
    event.set_safepointId(safepoint_id);
    event.set_initialThreadCount(initial_number_of_threads);
    event.set_runningThreadCount(threads_waiting_to_block);
    event.set_iterations(iterations);
    event.commit();
  }
}

static void post_safepoint_cleanup_task_event(EventSafepointCleanupTask& event,
                                              uint64_t safepoint_id,
                                              const char* name) {
  if (event.should_commit()) {
    event.set_safepointId(safepoint_id);
    event.set_name(name);
    event.commit();
  }
}

static void post_safepoint_end_event(EventSafepointEnd& event, uint64_t safepoint_id) {
  if (event.should_commit()) {

src/hotspot/share/runtime/safepoint.cpp:

class ParallelSPCleanupTask : public WorkerTask {
private:
  SubTasksDone _subtasks;
  uint _num_workers;
  bool _do_lazy_roots;

  class Tracer {
  private:
    const char*               _name;
    EventSafepointCleanupTask _event;
    TraceTime                 _timer;

  public:
    Tracer(const char* name) :
        _name(name),
        _event(),
        _timer(name, TRACETIME_LOG(Info, safepoint, cleanup)) {}
    ~Tracer() {
      post_safepoint_cleanup_task_event(_event, SafepointSynchronize::safepoint_id(), _name);
    }
  };

Configuration enabled threshold
profiling false 0 ms
default false 10 ms

Field Type Description
safepointId ulong Safepoint Identifier
name string Task Name The task name

SafepointEnd

startTime duration eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / Runtime / Safepoint

Safepointing end

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/safepoint.cpp:

static void post_safepoint_cleanup_task_event(EventSafepointCleanupTask& event,
                                              uint64_t safepoint_id,
                                              const char* name) {
  if (event.should_commit()) {
    event.set_safepointId(safepoint_id);
    event.set_name(name);
    event.commit();
  }
}

static void post_safepoint_end_event(EventSafepointEnd& event, uint64_t safepoint_id) {
  if (event.should_commit()) {
    event.set_safepointId(safepoint_id);
    event.commit();
  }
}

// SafepointCheck
SafepointStateTracker::SafepointStateTracker(uint64_t safepoint_id, bool at_safepoint)
  : _safepoint_id(safepoint_id), _at_safepoint(at_safepoint) {}

bool SafepointStateTracker::safepoint_state_changed() {

src/hotspot/share/runtime/safepoint.cpp:

  } // ~JavaThreadIteratorWithHandle

  // Release threads lock, so threads can be created/destroyed again.
  Threads_lock->unlock();

  // Wake threads after local state is correctly set.
  _wait_barrier->disarm();
}

// Wake up all threads, so they are ready to resume execution after the safepoint
// operation has been carried out
void SafepointSynchronize::end() {
  assert(Threads_lock->owned_by_self(), "must hold Threads_lock");
  EventSafepointEnd event;
  assert(Thread::current()->is_VM_thread(), "Only VM thread can execute a safepoint");

  disarm_safepoint();

  Universe::heap()->safepoint_synchronize_end();

  SafepointTracing::end();

  post_safepoint_end_event(event, safepoint_id());
}

Configuration enabled threshold
profiling false 0 ms
default false 10 ms

Field Type Description
safepointId ulong Safepoint Identifier

Examples 3
safepointId ulong
509
startTime long: millis
637678556926
safepointId ulong
1621
startTime long: millis
331871700014
safepointId ulong
15
startTime long: millis
501541653

ExecuteVMOperation

profiling default startTime duration eventThread 11 17 21 25 27 28

Category: Java Virtual Machine / Runtime

Execution of a VM Operation

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/vmThread.cpp:

  // Wait until VM thread is terminated
  // Note: it should be OK to use Terminator_lock here. But this is called
  // at a very delicate time (VM shutdown) and we are operating in non- VM
  // thread at Safepoint. It's safer to not share lock with other threads.
  {
    MonitorLocker ml(_terminate_lock, Mutex::_no_safepoint_check_flag);
    while (!VMThread::is_terminated()) {
      ml.wait();
    }
  }
}

static void post_vm_operation_event(EventExecuteVMOperation* event, VM_Operation* op) {
  assert(event != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  assert(op != NULL, "invariant");
  const bool evaluate_at_safepoint = op->evaluate_at_safepoint();
  event->set_operation(op->type());
  event->set_safepoint(evaluate_at_safepoint);
  event->set_blocking(true);
  event->set_caller(JFR_THREAD_ID(op->calling_thread()));
  event->set_safepointId(evaluate_at_safepoint ? SafepointSynchronize::safepoint_id() : 0);
  event->commit();
}

void VMThread::evaluate_operation(VM_Operation* op) {
  ResourceMark rm;

  {
    PerfTraceTime vm_op_timer(perf_accumulated_vm_operation_time());
    HOTSPOT_VMOPS_BEGIN(
                     (char *) op->name(), strlen(op->name()),
                     op->evaluate_at_safepoint() ? 0 : 1);

    EventExecuteVMOperation event;
    op->evaluate();
    if (event.should_commit()) {
      post_vm_operation_event(&event, op);
    }

    HOTSPOT_VMOPS_END(
                     (char *) op->name(), strlen(op->name()),
                     op->evaluate_at_safepoint() ? 0 : 1);
  }

}

Configuration enabled threshold
profiling true 0 ms
default true 10 ms

Field Type Description
operation VMOperationType Operation
safepoint boolean At Safepoint If the operation occured at a safepoint
blocking boolean Caller Blocked If the calling thread was blocked until the operation was complete
caller Thread Caller Thread requesting operation. If non-blocking, will be set to 0 indicating thread is unknown
safepointId ulong Safepoint Identifier The safepoint (if any) under which this operation was completed

Examples 3
blocking boolean
true
caller Thread
group ThreadGroup
null
javaName string
null
javaThreadId long
0
osName string
G1 Main Marker
osThreadId long
2138
virtual boolean
false
operation VMOperationType
G1PauseRemark
safepoint boolean
true
safepointId ulong
1691
startTime long: millis
341565635696
blocking boolean
true
caller Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
3
osName string
main
osThreadId long
2386
virtual boolean
false
operation VMOperationType
HandshakeAllThreads
safepoint boolean
false
safepointId ulong
0
startTime long: millis
674154607259
blocking boolean
true
caller Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
pool-1-thread-3
javaThreadId long
36
osName string
pool-1-thread-3
osThreadId long
4606
virtual boolean
false
operation VMOperationType
G1CollectForAllocation
safepoint boolean
true
safepointId ulong
40
startTime long: millis
1169561896

Shutdown

profiling default startTime eventThread stackTrace 11 17 21 25 27 28

Category: Java Virtual Machine / Runtime

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

JVM shutting down

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/thread.cpp:

  JavaThread* thread = JavaThread::current();

#ifdef ASSERT
  _vm_complete = false;
#endif
  // Wait until we are the last non-daemon thread to execute
  {
    MonitorLocker nu(Threads_lock);
    while (Threads::number_of_non_daemon_threads() > 1)
      // This wait should make safepoint checks, wait without a timeout.
      nu.wait(0);
  }

  EventShutdown e;
  if (e.should_commit()) {
    e.set_reason("No remaining non-daemon Java threads");
    e.commit();
  }

  // Hang forever on exit if we are reporting an error.
  if (ShowMessageBoxOnError && VMError::is_error_reported()) {
    os::infinite_sleep();
  }
  os::wait_for_keypress_at_exit();

src/hotspot/share/prims/jvm.cpp:

// java.lang.Runtime /////////////////////////////////////////////////////////////////////////

extern volatile jint vm_created;

JVM_ENTRY_NO_ENV(void, JVM_BeforeHalt())
#if INCLUDE_CDS
  // Link all classes for dynamic CDS dumping before vm exit.
  if (DynamicArchive::should_dump_at_vm_exit()) {
    DynamicArchive::prepare_for_dump_at_exit();
  }
#endif
  EventShutdown event;
  if (event.should_commit()) {
    event.set_reason("Shutdown requested from Java");
    event.commit();
  }
JVM_END


JVM_ENTRY_NO_ENV(void, JVM_Halt(jint code))
  before_exit(thread);
  vm_exit(code);
JVM_END

src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.cpp:

  void transition_to_native() {
    if (_jt != NULL) {
      assert(_jt->thread_state() == _thread_in_vm, "invariant");
      _jt->set_thread_state(_thread_in_native);
    }
  }
};

static void post_events(bool exception_handler, Thread* thread) {
  if (exception_handler) {
    EventShutdown e;
    e.set_reason("VM Error");
    e.commit();
  } else {
    // OOM
    LeakProfiler::emit_events(max_jlong, false, false);
  }
  EventDumpReason event;
  event.set_reason(exception_handler ? "Crash" : "Out of Memory");
  event.set_recordingId(-1);
  event.commit();
}

Configuration enabled stackTrace
profiling true true
default true true

Field Type Description
reason string Reason Reason for JVM shutdown

Examples 3
reason string
No remaining non-daemon Java threads
stackTrace StackTrace
null
startTime long: millis
372753216957
reason string
No remaining non-daemon Java threads
stackTrace StackTrace
null
startTime long: millis
25397212686
reason string
No remaining non-daemon Java threads
stackTrace StackTrace
null
startTime long: millis
695757235743

SymbolTableStatistics

profiling default startTime duration every chunk 13 17 21 25 27 28

Category: Java Virtual Machine / Runtime / Tables

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

  event.set_entryCount(statistics._number_of_entries);
  event.set_totalFootprint(statistics._total_footprint);
  event.set_bucketCountMaximum(statistics._maximum_bucket_size);
  event.set_bucketCountAverage(statistics._average_bucket_size);
  event.set_bucketCountVariance(statistics._variance_of_bucket_size);
  event.set_bucketCountStandardDeviation(statistics._stddev_of_bucket_size);
  event.set_insertionRate(statistics._add_rate);
  event.set_removalRate(statistics._remove_rate);
  event.commit();
}

TRACE_REQUEST_FUNC(SymbolTableStatistics) {
  TableStatistics statistics = SymbolTable::get_table_statistics();
  emit_table_statistics<EventSymbolTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(StringTableStatistics) {
  TableStatistics statistics = StringTable::get_table_statistics();
  emit_table_statistics<EventStringTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(PlaceholderTableStatistics) {
  TableStatistics statistics = SystemDictionary::placeholders_statistics();
  emit_table_statistics<EventPlaceholderTableStatistics>(statistics);
}

Configuration enabled period
profiling true 10 s
default true 10 s

Field Type Description
bucketCount ulong Bucket Count Number of buckets
entryCount ulong Entry Count Number of all entries
totalFootprint ulong: bytes Total Footprint Total memory footprint (the table itself plus all of the entries)
bucketCountMaximum ulong Maximum Bucket Count The maximum bucket length (entries in a single bucket)
bucketCountAverage float Average Bucket Count The average bucket length
bucketCountVariance float Bucket Count Variance How far bucket lengths are spread out from their average value
bucketCountStandardDeviation float Bucket Count Standard Deviation How far bucket lengths are spread out from their mean (expected) value
insertionRate float Insertion Rate How many items were added since last event (per second)
removalRate float Removal Rate How many items were removed since last event (per second)

Examples 3
bucketCount ulong
131072
bucketCountAverage float
5.2175293
bucketCountMaximum ulong
17
bucketCountStandardDeviation float
2.2880855
bucketCountVariance float
5.235335
entryCount ulong
683872
insertionRate float
1534.9684
removalRate float
4.191328
startTime long: millis
675147479547
totalFootprint ulong: bytes
74568712
bucketCount ulong
32768
bucketCountAverage float
1.1372986
bucketCountMaximum ulong
7
bucketCountStandardDeviation float
1.0597289
bucketCountVariance float
1.1230253
entryCount ulong
37267
insertionRate float
42.186695
removalRate float
41.99048
startTime long: millis
20660977536
totalFootprint ulong: bytes
2451880
bucketCount ulong
131072
bucketCountAverage float
4.8567734
bucketCountMaximum ulong
18
bucketCountStandardDeviation float
2.207315
bucketCountVariance float
4.8722396
entryCount ulong
636587
insertionRate float
22.483818
removalRate float
9.759856
startTime long: millis
338309730205
totalFootprint ulong: bytes
70778640

StringTableStatistics

profiling default startTime duration every chunk 13 17 21 25 27 28

Category: Java Virtual Machine / Runtime / Tables

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

  event.set_bucketCountStandardDeviation(statistics._stddev_of_bucket_size);
  event.set_insertionRate(statistics._add_rate);
  event.set_removalRate(statistics._remove_rate);
  event.commit();
}

TRACE_REQUEST_FUNC(SymbolTableStatistics) {
  TableStatistics statistics = SymbolTable::get_table_statistics();
  emit_table_statistics<EventSymbolTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(StringTableStatistics) {
  TableStatistics statistics = StringTable::get_table_statistics();
  emit_table_statistics<EventStringTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(PlaceholderTableStatistics) {
  TableStatistics statistics = SystemDictionary::placeholders_statistics();
  emit_table_statistics<EventPlaceholderTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(LoaderConstraintsTableStatistics) {
  TableStatistics statistics = SystemDictionary::loader_constraints_statistics();
  emit_table_statistics<EventLoaderConstraintsTableStatistics>(statistics);
}

Configuration enabled period
profiling true 10 s
default true 10 s

Field Type Description
bucketCount ulong Bucket Count Number of buckets
entryCount ulong Entry Count Number of all entries
totalFootprint ulong: bytes Total Footprint Total memory footprint (the table itself plus all of the entries)
bucketCountMaximum ulong Maximum Bucket Count The maximum bucket length (entries in a single bucket)
bucketCountAverage float Average Bucket Count The average bucket length
bucketCountVariance float Bucket Count Variance How far bucket lengths are spread out from their average value
bucketCountStandardDeviation float Bucket Count Standard Deviation How far bucket lengths are spread out from their mean (expected) value
insertionRate float Insertion Rate How many items were added since last event (per second)
removalRate float Removal Rate How many items were removed since last event (per second)

Examples 3
bucketCount ulong
65536
bucketCountAverage float
1.810318
bucketCountMaximum ulong
13
bucketCountStandardDeviation float
1.3438128
bucketCountVariance float
1.8058329
entryCount ulong
118641
insertionRate float
18.416216
removalRate float
9.696417
startTime long: millis
352661991470
totalFootprint ulong: bytes
12918904
bucketCount ulong
65536
bucketCountAverage float
0.09643555
bucketCountMaximum ulong
3
bucketCountStandardDeviation float
0.3110937
bucketCountVariance float
0.09677929
entryCount ulong
6320
insertionRate float
5535.0
removalRate float
26.0
startTime long: millis
10469165884
totalFootprint ulong: bytes
1033808
bucketCount ulong
65536
bucketCountAverage float
1.9351501
bucketCountMaximum ulong
12
bucketCountStandardDeviation float
1.3890462
bucketCountVariance float
1.9294493
entryCount ulong
126822
insertionRate float
302.48105
removalRate float
5.327773
startTime long: millis
675184192266
totalFootprint ulong: bytes
13734384

PlaceholderTableStatistics

profiling default startTime duration every chunk 17 until JDK 20

Category: Java Virtual Machine / Runtime / Tables

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

TRACE_REQUEST_FUNC(SymbolTableStatistics) {
  TableStatistics statistics = SymbolTable::get_table_statistics();
  emit_table_statistics<EventSymbolTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(StringTableStatistics) {
  TableStatistics statistics = StringTable::get_table_statistics();
  emit_table_statistics<EventStringTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(PlaceholderTableStatistics) {
  TableStatistics statistics = SystemDictionary::placeholders_statistics();
  emit_table_statistics<EventPlaceholderTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(LoaderConstraintsTableStatistics) {
  TableStatistics statistics = SystemDictionary::loader_constraints_statistics();
  emit_table_statistics<EventLoaderConstraintsTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(ProtectionDomainCacheTableStatistics) {
  TableStatistics statistics = SystemDictionary::protection_domain_cache_statistics();
  emit_table_statistics<EventProtectionDomainCacheTableStatistics>(statistics);
}

Configuration enabled period
profiling true 10 s
default true 10 s

Field Type Description
bucketCount ulong Bucket Count Number of buckets
entryCount ulong Entry Count Number of all entries
totalFootprint ulong: bytes Total Footprint Total memory footprint (the table itself plus all of the entries)
bucketCountMaximum ulong Maximum Bucket Count The maximum bucket length (entries in a single bucket)
bucketCountAverage float Average Bucket Count The average bucket length
bucketCountVariance float Bucket Count Variance How far bucket lengths are spread out from their average value
bucketCountStandardDeviation float Bucket Count Standard Deviation How far bucket lengths are spread out from their mean (expected) value
insertionRate float Insertion Rate How many items were added since last event (per second)
removalRate float Removal Rate How many items were removed since last event (per second)

LoaderConstraintsTableStatistics

profiling default startTime duration every chunk 17 until JDK 20

Category: Java Virtual Machine / Runtime / Tables

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

TRACE_REQUEST_FUNC(StringTableStatistics) {
  TableStatistics statistics = StringTable::get_table_statistics();
  emit_table_statistics<EventStringTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(PlaceholderTableStatistics) {
  TableStatistics statistics = SystemDictionary::placeholders_statistics();
  emit_table_statistics<EventPlaceholderTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(LoaderConstraintsTableStatistics) {
  TableStatistics statistics = SystemDictionary::loader_constraints_statistics();
  emit_table_statistics<EventLoaderConstraintsTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(ProtectionDomainCacheTableStatistics) {
  TableStatistics statistics = SystemDictionary::protection_domain_cache_statistics();
  emit_table_statistics<EventProtectionDomainCacheTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(CompilerStatistics) {
  EventCompilerStatistics event;
  event.set_compileCount(CompileBroker::get_total_compile_count());
  event.set_bailoutCount(CompileBroker::get_total_bailout_count());

Configuration enabled period
profiling true 10 s
default true 10 s

Field Type Description
bucketCount ulong Bucket Count
entryCount ulong Entry Count Number of all entries
totalFootprint ulong: bytes Total Footprint Total memory footprint (the table itself plus all of the entries)
bucketCountMaximum ulong Maximum Bucket Count The maximum bucket length (entries in a single bucket)
bucketCountAverage float Average Bucket Count The average bucket length
bucketCountVariance float Bucket Count Variance How far bucket lengths are spread out from their average value
bucketCountStandardDeviation float Bucket Count Standard Deviation How far bucket lengths are spread out from their mean (expected) value
insertionRate float Insertion Rate How many items were added since last event (per second)
removalRate float Removal Rate How many items were removed since last event (per second)

ProtectionDomainCacheTableStatistics

profiling default startTime duration every chunk 17 until JDK 20

Category: Java Virtual Machine / Runtime / Tables

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

TRACE_REQUEST_FUNC(PlaceholderTableStatistics) {
  TableStatistics statistics = SystemDictionary::placeholders_statistics();
  emit_table_statistics<EventPlaceholderTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(LoaderConstraintsTableStatistics) {
  TableStatistics statistics = SystemDictionary::loader_constraints_statistics();
  emit_table_statistics<EventLoaderConstraintsTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(ProtectionDomainCacheTableStatistics) {
  TableStatistics statistics = SystemDictionary::protection_domain_cache_statistics();
  emit_table_statistics<EventProtectionDomainCacheTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(CompilerStatistics) {
  EventCompilerStatistics event;
  event.set_compileCount(CompileBroker::get_total_compile_count());
  event.set_bailoutCount(CompileBroker::get_total_bailout_count());
  event.set_invalidatedCount(CompileBroker::get_total_invalidated_count());
  event.set_osrCompileCount(CompileBroker::get_total_osr_compile_count());
  event.set_standardCompileCount(CompileBroker::get_total_standard_compile_count());
  event.set_osrBytesCompiled(CompileBroker::get_sum_osr_bytes_compiled());
  event.set_standardBytesCompiled(CompileBroker::get_sum_standard_bytes_compiled());

Configuration enabled period
profiling true 10 s
default true 10 s

Field Type Description
bucketCount ulong Bucket Count Number of buckets
entryCount ulong Entry Count Number of all entries
totalFootprint ulong: bytes Total Footprint Total memory footprint (the table itself plus all of the entries)
bucketCountMaximum ulong Maximum Bucket Count The maximum bucket length (entries in a single bucket)
bucketCountAverage float Average Bucket Count The average bucket length
bucketCountVariance float Bucket Count Variance How far bucket lengths are spread out from their average value
bucketCountStandardDeviation float Bucket Count Standard Deviation How far bucket lengths are spread out from their mean (expected) value
insertionRate float Insertion Rate How many items were added since last event (per second)
removalRate float Removal Rate How many items were removed since last event (per second)

ThreadDump

profiling default startTime duration every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Runtime

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

/*
 * This is left empty on purpose, having ExecutionSample as a requestable
 * is a way of getting the period. The period is passed to ThreadSampling::update_period.
 * Implementation in jfrSamples.cpp
 */
TRACE_REQUEST_FUNC(ExecutionSample) {
}
TRACE_REQUEST_FUNC(NativeMethodSample) {
}

TRACE_REQUEST_FUNC(ThreadDump) {
  ResourceMark rm;
  EventThreadDump event;
  event.set_result(JfrDcmdEvent::thread_dump());
  event.commit();
}

static int _native_library_callback(const char* name, address base, address top, void *param) {
  EventNativeLibrary event(UNTIMED);
  event.set_name(name);
  event.set_baseAddress((u8)base);
  event.set_topAddress((u8)top);
  event.set_endtime(*(JfrTicks*) param);
  event.commit();

src/hotspot/share/jfr/periodic/jfrThreadDumpEvent.cpp:

  JavaThread* THREAD = JavaThread::current(); // For exception macros.
  assert(!HAS_PENDING_EXCEPTION, "dcmd does not expect pending exceptions on entry!");
  // delegate to DCmd execution
  DCmd::parse_and_execute(DCmd_Source_Internal, &st, cmd, ' ', THREAD);
  if (HAS_PENDING_EXCEPTION) {
    log_debug(jfr, system)("unable to create jfr event for DCMD %s", cmd);
    log_debug(jfr, system)("exception type: %s", PENDING_EXCEPTION->klass()->external_name());
    // don't unwind this exception
    CLEAR_PENDING_EXCEPTION;
    // if exception occurred,
    // reset stream.
    st.reset();
    return false;
  }
  return true;
}

// caller needs ResourceMark
const char* JfrDcmdEvent::thread_dump() {
  assert(EventThreadDump::is_enabled(), "invariant");
  bufferedStream st;
  execute_dcmd(st, "Thread.print");
  return st.as_string();
}

Configuration enabled period
profiling true 60 s
default true everyChunk

Field Type Description
result string Thread Dump

Examples 3
result string
2026-08-30 00:33:17 Full thread dump OpenJDK 64-Bit Server VM (25.0.4.1+1-LTS mixed mode, sharing): Threads class SMR info: _java_thread_list=0x00007ff291f8b6c0, length=53, elements={ 0x00007ff2cc053c00, 0x00007ff2cc1421a0, 0x00007ff2cc144020, 0x00007ff2cc145e30, 0x00007ff2cc147c70, 0x00007ff2cc149
startTime long: millis
362922484892
result string
2026-08-30 00:38:28 Full thread dump OpenJDK 64-Bit Server VM (25.0.4.1+1-LTS mixed mode, sharing): Threads class SMR info: _java_thread_list=0x00007f3ed10db320, length=45, elements={ 0x00007f3ef8053be0, 0x00007f3ef80ca390, 0x00007f3ef80cbf80, 0x00007f3ef80cdfc0, 0x00007f3ef80cfdd0, 0x00007f3ef80d1
startTime long: millis
675184201590
result string
2026-08-30 00:33:51 Full thread dump OpenJDK 64-Bit Server VM (25.0.4.1+1-LTS mixed mode, sharing): Threads class SMR info: _java_thread_list=0x00007f52be128200, length=25, elements={ 0x00007f52bc055900, 0x00007f52bc155cf0, 0x00007f52bc157b50, 0x00007f52bc15a020, 0x00007f52bc15c0b0, 0x00007f52bc15d
startTime long: millis
20677166488

NativeLibrary

profiling default startTime every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Runtime

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

TRACE_REQUEST_FUNC(ExecutionSample) {
}
TRACE_REQUEST_FUNC(NativeMethodSample) {
}

TRACE_REQUEST_FUNC(ThreadDump) {
  ResourceMark rm;
  EventThreadDump event;
  event.set_result(JfrDcmdEvent::thread_dump());
  event.commit();
}

static int _native_library_callback(const char* name, address base, address top, void *param) {
  EventNativeLibrary event(UNTIMED);
  event.set_name(name);
  event.set_baseAddress((u8)base);
  event.set_topAddress((u8)top);
  event.set_endtime(*(JfrTicks*) param);
  event.commit();
  return 0;
}

TRACE_REQUEST_FUNC(NativeLibrary) {
  JfrTicks ts= JfrTicks::now();
  os::get_loaded_modules_info(&_native_library_callback, (void *)&ts);

Configuration enabled period
profiling true everyChunk
default true everyChunk

Field Type Description
name string Name
baseAddress ulong: address Base Address Starting address of the module
topAddress ulong: address Top Address Ending address of the module

Examples 3
baseAddress ulong: address
139992782045184
name string
/opt/hostedtoolcache/Java_SapMachine_jdk/25.0.4-1/x64/lib/libsimdsort.so
startTime long: millis
11196542626
topAddress ulong: address
139992782311424
baseAddress ulong: address
140680921759744
name string
/opt/hostedtoolcache/Java_SapMachine_jdk/25.0.4-1/x64/lib/libjaas.so
startTime long: millis
331414257887
topAddress ulong: address
140680921776128
baseAddress ulong: address
139908583161856
name string
/lib/x86_64-linux-gnu/libm.so.6
startTime long: millis
627354071795
topAddress ulong: address
139908584116224

ModuleRequire

profiling default startTime every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Runtime / Modules

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

A directed edge representing a dependency

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrModuleEvent.cpp:

   ModuleDependencyClosure(const ModuleEntry* module, EventFunc ef) : ModuleEventCallbackClosure(ef), _module(module) {}
   void do_module(ModuleEntry* entry);
};

class ModuleExportClosure : public ModuleEventCallbackClosure {
 private:
  const PackageEntry* const _package;
 public:
  ModuleExportClosure(const PackageEntry* pkg, EventFunc ef) : ModuleEventCallbackClosure(ef), _package(pkg) {}
  void do_module(ModuleEntry* entry);
};

static void write_module_dependency_event(const void* from_module, const ModuleEntry* to_module) {
  EventModuleRequire event(UNTIMED);
  event.set_endtime(invocation_time);
  event.set_source((const ModuleEntry* const)from_module);
  event.set_requiredModule(to_module);
  event.commit();
}

static void write_module_export_event(const void* package, const ModuleEntry* qualified_export) {
  EventModuleExport event(UNTIMED);
  event.set_endtime(invocation_time);
  event.set_exportedPackage((const PackageEntry*)package);
  event.set_targetModule(qualified_export);

Configuration enabled period
profiling true endChunk
default true endChunk

Field Type Description
source Module Source Module
requiredModule Module Required Module

Examples 3
requiredModule Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.xml
name string
java.xml
version string
25.0.4.1
source Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
jrt:/jdk.jpackage
name string
jdk.jpackage
version string
25.0.4.1
startTime long: millis
5571237849
requiredModule Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
source Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
jrt:/jdk.jartool
name string
jdk.jartool
version string
25.0.4.1
startTime long: millis
331414278191
requiredModule Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
source Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
jdk.proxy7
version string
null
startTime long: millis
625340774118

ModuleExport

profiling default startTime every chunk 11 17 21 25 27 28

Category: Java Virtual Machine / Runtime / Modules

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrModuleEvent.cpp:

  ModuleExportClosure(const PackageEntry* pkg, EventFunc ef) : ModuleEventCallbackClosure(ef), _package(pkg) {}
  void do_module(ModuleEntry* entry);
};

static void write_module_dependency_event(const void* from_module, const ModuleEntry* to_module) {
  EventModuleRequire event(UNTIMED);
  event.set_endtime(invocation_time);
  event.set_source((const ModuleEntry* const)from_module);
  event.set_requiredModule(to_module);
  event.commit();
}

static void write_module_export_event(const void* package, const ModuleEntry* qualified_export) {
  EventModuleExport event(UNTIMED);
  event.set_endtime(invocation_time);
  event.set_exportedPackage((const PackageEntry*)package);
  event.set_targetModule(qualified_export);
  event.commit();
}

void ModuleDependencyClosure::do_module(ModuleEntry* to_module) {
  assert_locked_or_safepoint(Module_lock);
  assert(to_module != NULL, "invariant");
  assert(_module != NULL, "invariant");
  assert(_event_func != NULL, "invariant");

Configuration enabled period
profiling true endChunk
default true endChunk

Field Type Description
exportedPackage Package Exported Package
targetModule Module Target Module Module to which the package is qualifiedly exported. If null or N/A, the package is unqualifiedly exported

Examples 3
exportedPackage Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/reflect
startTime long: millis
5571266937
targetModule Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.logging
name string
java.logging
version string
25.0.4.1
exportedPackage Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
javax/security/cert
startTime long: millis
331414759059
targetModule Module
null
exportedPackage Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
jrt:/jdk.compiler
name string
jdk.compiler
version string
25.0.4.1
name string
com/sun/source/util
startTime long: millis
625341212027
targetModule Module
null

Java Application

ThreadStart

profiling default startTime eventThread stackTrace 11 17 21 25 27 28

Category: Java Application

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/support/jfrThreadLocal.cpp:

void JfrThreadLocal::set_thread_blob(const JfrBlobHandle& ref) {
  assert(!_thread.valid(), "invariant");
  _thread = ref;
}

const JfrBlobHandle& JfrThreadLocal::thread_blob() const {
  return _thread;
}

static void send_java_thread_start_event(JavaThread* jt) {
  EventThreadStart event;
  event.set_thread(jt->jfr_thread_local()->thread_id());
  event.set_parentThread(jt->jfr_thread_local()->parent_thread_id());
  event.commit();
}

void JfrThreadLocal::on_start(Thread* t) {
  assert(t != NULL, "invariant");
  assert(Thread::current() == t, "invariant");
  JfrJavaSupport::on_thread_start(t);
  if (JfrRecorder::is_recording()) {
    JfrCheckpointManager::write_thread_checkpoint(t);

src/hotspot/share/prims/jni.cpp:

#if INCLUDE_JNI_CHECK
  if (CheckJNICalls) return jni_functions_check();
#endif // INCLUDE_JNI_CHECK
  return &jni_NativeInterface;
}

// Returns the function structure
struct JNINativeInterface_* jni_functions_nocheck() {
  return &jni_NativeInterface;
}

static void post_thread_start_event(const JavaThread* jt) {
  assert(jt != NULL, "invariant");
  EventThreadStart event;
  if (event.should_commit()) {
    event.set_thread(JFR_THREAD_ID(jt));
    event.set_parentThread((traceid)0);
#if INCLUDE_JFR
    if (EventThreadStart::is_stacktrace_enabled()) {
      jt->jfr_thread_local()->set_cached_stack_trace_id((traceid)0);
      event.commit();
      jt->jfr_thread_local()->clear_cached_stack_trace();
    } else
#endif
    {
      event.commit();
    }
  }
}

src/hotspot/share/prims/jvm.cpp:

                            JavaThread::name_for(JNIHandles::resolve_non_null(jthread)));
    // No one should hold a reference to the 'native_thread'.
    native_thread->smr_delete();
    if (JvmtiExport::should_post_resource_exhausted()) {
      JvmtiExport::post_resource_exhausted(
        JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR | JVMTI_RESOURCE_EXHAUSTED_THREADS,
        os::native_thread_creation_failed_msg());
    }
    THROW_MSG(vmSymbols::java_lang_OutOfMemoryError(),
              os::native_thread_creation_failed_msg());
  }

#if INCLUDE_JFR
  if (Jfr::is_recording() && EventThreadStart::is_enabled() &&
      EventThreadStart::is_stacktrace_enabled()) {
    JfrThreadLocal* tl = native_thread->jfr_thread_local();
    // skip Thread.start() and Thread.start0()
    tl->set_cached_stack_trace_id(JfrStackTraceRepository::record(thread, 2));
  }
#endif

  Thread::start(native_thread);

JVM_END

Configuration enabled stackTrace
profiling true true
default true true

Field Type Description
thread Thread New Java Thread
parentThread Thread Parent Java Thread

Examples 3
parentThread Thread
group ThreadGroup
name string
UnboundedFuturePool
parent ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
scala-execution-context-global-2097
javaThreadId long
2097
osName string
scala-execution-context-global-2097
osThreadId long
4905
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
2
lineNumber int
2231
method Method
descriptor string
(Ljava/lang/Thread;Ljdk/internal/vm/ThreadContainer;)V
hidden boolean
false
modifiers int
1
name string
start
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
java/lang/System$1
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
686566612876
thread Thread
group ThreadGroup
name string
UnboundedFuturePool
parent ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
scala-execution-context-global-2098
javaThreadId long
2098
osName string
scala-execution-context-global-2098
osThreadId long
4906
virtual boolean
false
parentThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
3
osName string
main
osThreadId long
2136
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
12
lineNumber int
150
method Method
descriptor string
(Lscala/collection/immutable/List;Ldotty/tools/dotc/core/Contexts$Context;)Lscala/collection/immutable/List;
hidden boolean
false
modifiers int
1
name string
runOn
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
dotty/tools/dotc/transform/Pickler
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
dotty/tools/dotc/transform
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
360614861228
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Thread-302
javaThreadId long
1935
osName string
Thread-302
osThreadId long
4455
virtual boolean
false
parentThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
3
osName string
main
osThreadId long
4574
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
41
lineNumber int
550
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
socketIO
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1178718773
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Thread-2
javaThreadId long
59
osName string
Thread-2
osThreadId long
4639
virtual boolean
false

ThreadEnd

profiling default startTime eventThread 11 17 21 25 27 28

Category: Java Application

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/support/jfrThreadLocal.cpp:

  if (t->jfr_thread_local()->has_cached_stack_trace()) {
    t->jfr_thread_local()->clear_cached_stack_trace();
  }
}

static void send_java_thread_end_events(traceid id, JavaThread* jt) {
  assert(jt != NULL, "invariant");
  assert(Thread::current() == jt, "invariant");
  assert(jt->jfr_thread_local()->trace_id() == id, "invariant");
  if (JfrRecorder::is_recording()) {
    EventThreadEnd event;
    event.set_thread(id);
    event.commit();
    JfrThreadCPULoadEvent::send_event_for_thread(jt);
  }
}

void JfrThreadLocal::release(Thread* t) {
  if (has_java_event_writer()) {
    assert(t->is_Java_thread(), "invariant");
    JfrJavaSupport::destroy_global_jni_handle(java_event_writer());
    _java_event_writer = NULL;

src/hotspot/share/runtime/java.cpp:

#if INCLUDE_JVMCI
  if (EnableJVMCI) {
    JVMCI::shutdown();
  }
#endif

  // Hang forever on exit if we're reporting an error.
  if (ShowMessageBoxOnError && VMError::is_error_reported()) {
    os::infinite_sleep();
  }

  EventThreadEnd event;
  if (event.should_commit()) {
    event.set_thread(JFR_THREAD_ID(thread));
    event.commit();
  }

  JFR_ONLY(Jfr::on_vm_shutdown();)

  // Stop the WatcherThread. We do this before disenrolling various
  // PeriodicTasks to reduce the likelihood of races.
  if (PeriodicTask::num_tasks() > 0) {
    WatcherThread::stop();

Configuration enabled
profiling true
default true

Field Type Description
thread Thread Java Thread

Examples 3
startTime long: millis
351762956419
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Spark Context Cleaner
javaThreadId long
1700
osName string
Spark Context Cleaner
osThreadId long
4200
virtual boolean
false
startTime long: millis
1659241861
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Thread-13
javaThreadId long
70
osName string
Thread-13
osThreadId long
4650
virtual boolean
false
startTime long: millis
664224146173
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
block-manager-storage-async-thread-pool-66
javaThreadId long
1957
osName string
block-manager-storage-async-thread-pool-66
osThreadId long
4736
virtual boolean
false

ThreadSleep

profiling default startTime duration eventThread stackTrace 11 17 21 25 27 28

Category: Java Application

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/prims/jvm.cpp:

  // Implied else: If the JavaThread hasn't started yet, then the
  // priority set in the java.lang.Thread object above will be pushed
  // down when it does start.
JVM_END


JVM_ENTRY(void, JVM_Yield(JNIEnv *env, jclass threadClass))
  if (os::dont_yield()) return;
  HOTSPOT_THREAD_YIELD();
  os::naked_yield();
JVM_END

static void post_thread_sleep_event(EventThreadSleep* event, jlong millis) {
  assert(event != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  event->set_time(millis);
  event->commit();
}

JVM_ENTRY(void, JVM_Sleep(JNIEnv* env, jclass threadClass, jlong millis))
  if (millis < 0) {
    THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "timeout value is negative");
  }

  if (thread->is_interrupted(true) && !HAS_PENDING_EXCEPTION) {
    THROW_MSG(vmSymbols::java_lang_InterruptedException(), "sleep interrupted");
  }

  // Save current thread state and restore it at the end of this block.
  // And set new thread state to SLEEPING.
  JavaThreadSleepState jtss(thread);

  HOTSPOT_THREAD_SLEEP_BEGIN(millis);
  EventThreadSleep event;

  if (millis == 0) {
    os::naked_yield();
  } else {
    ThreadState old_state = thread->osthread()->get_state();
    thread->osthread()->set_state(SLEEPING);
    if (!thread->sleep(millis)) { // interrupted
      // An asynchronous exception (e.g., ThreadDeathException) could have been thrown on
      // us while we were sleeping. We do not overwrite those.
      if (!HAS_PENDING_EXCEPTION) {
        if (event.should_commit()) {

Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Field Type Description
time long: millis Sleep Time

Examples 3
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
91
lineNumber int
598
method Method
descriptor string
()J
hidden boolean
false
modifiers int
2
name string
waitForNextTick
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
18
name string
io/netty/util/HashedWheelTimer$Worker
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
io/netty/util
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
623717016503
time long: millis
10000000
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
91
lineNumber int
598
method Method
descriptor string
()J
hidden boolean
false
modifiers int
2
name string
waitForNextTick
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
18
name string
io/netty/util/HashedWheelTimer$Worker
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
io/netty/util
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
330653268960
time long: millis
10000000
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
12
lineNumber int
49
method Method
descriptor string
()V
hidden boolean
false
modifiers int
4106
name string
lambda$main$0
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
793621039
time long: millis
5000000

ThreadPark

profiling default startTime duration eventThread stackTrace 11 17 21 25 27 28

Category: Java Application

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/prims/unsafe.cpp:

UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSetInt(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jint e, jint x)) {
  oop p = JNIHandles::resolve(obj);
  volatile jint* addr = (volatile jint*)index_oop_from_field_offset_long(p, offset);
  return Atomic::cmpxchg(addr, e, x) == e;
} UNSAFE_END

UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSetLong(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jlong e, jlong x)) {
  oop p = JNIHandles::resolve(obj);
  volatile jlong* addr = (volatile jlong*)index_oop_from_field_offset_long(p, offset);
  return Atomic::cmpxchg(addr, e, x) == e;
} UNSAFE_END

static void post_thread_park_event(EventThreadPark* event, const oop obj, jlong timeout_nanos, jlong until_epoch_millis) {
  assert(event != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  event->set_parkedClass((obj != NULL) ? obj->klass() : NULL);
  event->set_timeout(timeout_nanos);
  event->set_until(until_epoch_millis);
  event->set_address((obj != NULL) ? (u8)cast_from_oop<uintptr_t>(obj) : 0);
  event->commit();
}

UNSAFE_ENTRY(void, Unsafe_Park(JNIEnv *env, jobject unsafe, jboolean isAbsolute, jlong time)) {
  HOTSPOT_THREAD_PARK_BEGIN((uintptr_t) thread->parker(), (int) isAbsolute, time);
  EventThreadPark event;

  JavaThreadParkedState jtps(thread, time != 0);
  thread->parker()->park(isAbsolute != 0, time);
  if (event.should_commit()) {
    const oop obj = thread->current_park_blocker();
    if (time == 0) {
      post_thread_park_event(&event, obj, min_jlong, min_jlong);
    } else {
      if (isAbsolute != 0) {
        post_thread_park_event(&event, obj, min_jlong, time);
      } else {

Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Field Type Description
parkedClass Class Class Parked On
timeout long: nanos Park Timeout
until long: epochmillis Park Until
address ulong: address Address of Object Parked

Examples 3
address ulong: address
0
parkedClass Class
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(ZJ)V
hidden boolean
false
modifiers int
257
name string
park
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/internal/misc/Unsafe
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/misc
type FrameType
Native
truncated boolean
false
startTime long: millis
491216174
timeout long: nanos
-9223372036854775808
until long: epochmillis
-9223372036854775808
address ulong: address
30391535096
parkedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util/concurrent/locks
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(ZJ)V
hidden boolean
false
modifiers int
257
name string
park
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/internal/misc/Unsafe
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/misc
type FrameType
Native
truncated boolean
false
startTime long: millis
623437160704
timeout long: nanos
-9223372036854775808
until long: epochmillis
-9223372036854775808
address ulong: address
30366847000
parkedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util/concurrent/locks
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(ZJ)V
hidden boolean
false
modifiers int
257
name string
park
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/internal/misc/Unsafe
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/misc
type FrameType
Native
truncated boolean
false
startTime long: millis
330134311702
timeout long: nanos
-9223372036854775808
until long: epochmillis
-9223372036854775808

JavaMonitorEnter

profiling default startTime duration eventThread stackTrace 11 17 21 25 27 28

Category: Java Application

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/objectMonitor.cpp:

    // above lost the race to async deflation. Undo the work and
    // force the caller to retry.
    const oop l_object = object();
    if (l_object != NULL) {
      // Attempt to restore the header/dmw to the object's header so that
      // we only retry once if the deflater thread happens to be slow.
      install_displaced_markword_in_object(l_object);
    }
    current->_Stalled = 0;
    add_to_contentions(-1);
    return false;
  }

  JFR_ONLY(JfrConditionalFlushWithStacktrace<EventJavaMonitorEnter> flush(current);)
  EventJavaMonitorEnter event;
  if (event.is_started()) {
    event.set_monitorClass(object()->klass());
    // Set an address that is 'unique enough', such that events close in
    // time and with the same address are likely (but not guaranteed) to
    // belong to the same object.
    event.set_address((uintptr_t)this);
  }

  { // Change java thread status to indicate blocked on monitor enter.
    JavaThreadBlockedOnMonitorEnterState jtbmes(current, this);

src/hotspot/share/runtime/objectMonitor.cpp:

  if (_recursions != 0) {
    _recursions--;        // this is simple recursive enter
    return;
  }

  // Invariant: after setting Responsible=null an thread must execute
  // a MEMBAR or other serializing instruction before fetching EntryList|cxq.
  _Responsible = NULL;

#if INCLUDE_JFR
  // get the owner's thread id for the MonitorEnter event
  // if it is enabled and the thread isn't suspended
  if (not_suspended && EventJavaMonitorEnter::is_enabled()) {
    _previous_owner_tid = JFR_THREAD_ID(current);
  }
#endif

  for (;;) {
    assert(current == owner_raw(), "invariant");

    // Drop the lock.
    // release semantics: prior loads and stores from within the critical section
    // must not float (reorder) past the following store that drops the lock.
    // Uses a storeload to separate release_store(owner) from the

Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Field Type Description
monitorClass Class Monitor Class
previousOwner Thread Previous Monitor Owner
address ulong: address Monitor Address

Examples 3
address ulong: address
139993340652784
monitorClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/jfr/internal/PlatformRecorder
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.4.1
name string
jdk/jfr/internal
previousOwner Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
3
osName string
main
osThreadId long
4574
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
15
lineNumber int
495
method Method
descriptor string
()V
hidden boolean
false
modifiers int
2
name string
periodicTask
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/jfr/internal/PlatformRecorder
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.4.1
name string
jdk/jfr/internal
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
281033369
address ulong: address
94089107366720
monitorClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
org/apache/spark/scheduler/TaskSchedulerImpl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/spark/scheduler
previousOwner Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
task-result-getter-0
javaThreadId long
1840
osName string
task-result-getter-0
osThreadId long
4619
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
334
method Method
descriptor string
(IZLjava/lang/String;)V
hidden boolean
false
modifiers int
33
name string
killAllTaskAttempts
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
org/apache/spark/scheduler/TaskSchedulerImpl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/spark/scheduler
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
626136678628
address ulong: address
94669859503488
monitorClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
org/apache/spark/rpc/netty/Dispatcher
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/spark/rpc/netty
previousOwner Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
dispatcher-BlockManagerMaster
javaThreadId long
1675
osName string
dispatcher-BlockManagerMaster
osThreadId long
4177
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
4
lineNumber int
173
method Method
descriptor string
(Ljava/lang/String;Lorg/apache/spark/rpc/netty/InboxMessage;Lscala/Function1;)V
hidden boolean
false
modifiers int
2
name string
postMessage
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
org/apache/spark/rpc/netty/Dispatcher
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/spark/rpc/netty
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
330628478768

JavaMonitorWait

profiling default startTime duration eventThread stackTrace 11 17 21 25 27 28

Category: Java Application

Waiting on a Java monitor

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/objectMonitor.cpp:

  void* cur = owner_raw();
  if (cur == current) {
    return true;
  }
  if (current->is_lock_owned((address)cur)) {
    set_owner_from_BasicLock(cur, current);  // Convert from BasicLock* to Thread*.
    _recursions = 0;
    return true;
  }
  THROW_MSG_(vmSymbols::java_lang_IllegalMonitorStateException(),
             "current thread is not owner", false);
}

static void post_monitor_wait_event(EventJavaMonitorWait* event,
                                    ObjectMonitor* monitor,
                                    uint64_t notifier_tid,
                                    jlong timeout,
                                    bool timedout) {
  assert(event != NULL, "invariant");
  assert(monitor != NULL, "invariant");
  event->set_monitorClass(monitor->object()->klass());
  event->set_timeout(timeout);
  // Set an address that is 'unique enough', such that events close in
  // time and with the same address are likely (but not guaranteed) to
  // belong to the same object.

src/hotspot/share/runtime/objectMonitor.cpp:

// -----------------------------------------------------------------------------
// Wait/Notify/NotifyAll
//
// Note: a subset of changes to ObjectMonitor::wait()
// will need to be replicated in complete_exit
void ObjectMonitor::wait(jlong millis, bool interruptible, TRAPS) {
  JavaThread* current = THREAD;

  assert(InitDone, "Unexpectedly not initialized");

  CHECK_OWNER();  // Throws IMSE if not owner.

  EventJavaMonitorWait event;

  // check for a pending interrupt
  if (interruptible && current->is_interrupted(true) && !HAS_PENDING_EXCEPTION) {
    // post monitor waited event.  Note that this is past-tense, we are done waiting.
    if (JvmtiExport::should_post_monitor_waited()) {
      // Note: 'false' parameter is passed here because the
      // wait was not timed out due to thread interrupt.
      JvmtiExport::post_monitor_waited(current, this, false);

      // In this short circuit of the monitor wait protocol, the
      // current thread never drops ownership of the monitor and

Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Field Type Description
monitorClass Class Monitor Class Class of object waited on
notifier Thread Notifier Thread Notifying Thread
timeout long: millis Timeout Maximum wait time
timedOut boolean Timed Out Wait has been timed out
address ulong: address Monitor Address Address of object waited on

Examples 3
address ulong: address
139993339688032
monitorClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Thread
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
notifier Thread
group ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Secondary finalizer
javaThreadId long
57
osName string
Secondary finalizer
osThreadId long
4637
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
274
name string
wait0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Object
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
1042768602
timedOut boolean
false
timeout long: millis
0
address ulong: address
140679295671408
monitorClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
java/lang/ref/ReferenceQueue$Lock
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang/ref
notifier Thread
group ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Reference Handler
javaThreadId long
13
osName string
Reference Handler
osThreadId long
2146
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
274
name string
wait0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Object
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
332857511839
timedOut boolean
false
timeout long: millis
100
address ulong: address
94089003267536
monitorClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
java/lang/ref/ReferenceQueue$Lock
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang/ref
notifier Thread
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
274
name string
wait0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Object
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
628025134675
timedOut boolean
true
timeout long: millis
100

JavaMonitorInflate

profiling startTime duration eventThread stackTrace 11 17 21 25 27 28

Category: Java Application

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/runtime/synchronizer.cpp:

  if (!ret_code) {
    log_info(monitorinflation)("Async Deflation DID NOT happen after %d checks.", N_CHECKS);
  }

  return ret_code;
}

jlong ObjectSynchronizer::time_since_last_async_deflation_ms() {
  return (os::javaTimeNanos() - last_async_deflation_time_ns()) / (NANOUNITS / MILLIUNITS);
}

static void post_monitor_inflate_event(EventJavaMonitorInflate* event,
                                       const oop obj,
                                       ObjectSynchronizer::InflateCause cause) {
  assert(event != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  event->set_monitorClass(obj->klass());
  event->set_address((uintptr_t)(void*)obj);
  event->set_cause((u1)cause);
  event->commit();
}

// Fast path code shared by multiple functions

src/hotspot/share/runtime/synchronizer.cpp:

void ObjectSynchronizer::inflate_helper(oop obj) {
  markWord mark = obj->mark_acquire();
  if (mark.has_monitor()) {
    ObjectMonitor* monitor = mark.monitor();
    markWord dmw = monitor->header();
    assert(dmw.is_neutral(), "sanity check: header=" INTPTR_FORMAT, dmw.value());
    return;
  }
  (void)inflate(Thread::current(), obj, inflate_cause_vm_internal);
}

ObjectMonitor* ObjectSynchronizer::inflate(Thread* current, oop object,
                                           const InflateCause cause) {
  EventJavaMonitorInflate event;

  for (;;) {
    const markWord mark = object->mark_acquire();

    // The mark can be in one of the following states:
    // *  Inflated     - just return
    // *  Stack-locked - coerce it to inflated
    // *  INFLATING    - busy wait for conversion to complete
    // *  Neutral      - aggressively inflate the object.

    // CASE: inflated

Configuration enabled stackTrace threshold
profiling true true 10 ms
default false true 20 ms

Field Type Description
monitorClass Class Monitor Class
address ulong: address Monitor Address
cause InflateCause Monitor Inflation Cause Cause of inflation

Examples 3
address ulong: address
31012310344
cause InflateCause
Monitor Wait
monitorClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Object
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
274
name string
wait0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Object
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
330873407164
address ulong: address
33438298936
cause InflateCause
Monitor Wait
monitorClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Object
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
274
name string
wait0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Object
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
634182754111
address ulong: address
30199437592
cause InflateCause
Monitor Wait
monitorClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Thread
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
274
name string
wait0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Object
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
4905628908

ObjectAllocationInNewTLAB

startTime eventThread stackTrace 11 17 21 25 27 28

Category: Java Application

Allocation in new Thread Local Allocation Buffer

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/allocTracer.cpp:

void AllocTracer::send_allocation_outside_tlab(Klass* klass, HeapWord* obj, size_t alloc_size, JavaThread* thread) {
  JFR_ONLY(JfrAllocationTracer tracer(klass, obj, alloc_size, true, thread);)
  EventObjectAllocationOutsideTLAB event;
  if (event.should_commit()) {
    event.set_objectClass(klass);
    event.set_allocationSize(alloc_size);
    event.commit();
  }
}

void AllocTracer::send_allocation_in_new_tlab(Klass* klass, HeapWord* obj, size_t tlab_size, size_t alloc_size, JavaThread* thread) {
  JFR_ONLY(JfrAllocationTracer tracer(klass, obj, alloc_size, false, thread);)
  EventObjectAllocationInNewTLAB event;
  if (event.should_commit()) {
    event.set_objectClass(klass);
    event.set_allocationSize(alloc_size);
    event.set_tlabSize(tlab_size);
    event.commit();
  }
}

void AllocTracer::send_allocation_requiring_gc_event(size_t size, uint gcId) {
  EventAllocationRequiringGC event;
  if (event.should_commit()) {

Configuration enabled stackTrace
profiling false true
default false true

Field Type Description
objectClass Class Object Class Class of allocated object
allocationSize ulong: bytes Allocation Size
tlabSize ulong: bytes TLAB Size

Examples 3
allocationSize ulong: bytes
16
objectClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
17
name string
scala/util/Success
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/util
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
103
lineNumber int
467
method Method
descriptor string
()V
hidden boolean
false
modifiers int
17
name string
run
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
25
name string
scala/concurrent/impl/Promise$Transformation
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/concurrent/impl
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
329691220950
tlabSize ulong: bytes
78232
allocationSize ulong: bytes
4112
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
24
lineNumber int
494
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
allocateAndGC
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
458685253
tlabSize ulong: bytes
21264
allocationSize ulong: bytes
32
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
24
name string
java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util/concurrent/locks
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
10
lineNumber int
1667
method Method
descriptor string
()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode;
hidden boolean
false
modifiers int
2
name string
newConditionNode
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util/concurrent/locks
type FrameType
Inlined
truncated boolean
false
startTime long: millis
624027012467
tlabSize ulong: bytes
267568

ObjectAllocationOutsideTLAB

startTime eventThread stackTrace 11 17 21 25 27 28

Category: Java Application

Allocation outside Thread Local Allocation Buffers

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/gc/shared/allocTracer.cpp:

#if INCLUDE_JFR
#include "jfr/support/jfrAllocationTracer.hpp"
#endif

void AllocTracer::send_allocation_outside_tlab(Klass* klass, HeapWord* obj, size_t alloc_size, JavaThread* thread) {
  JFR_ONLY(JfrAllocationTracer tracer(klass, obj, alloc_size, true, thread);)
  EventObjectAllocationOutsideTLAB event;
  if (event.should_commit()) {
    event.set_objectClass(klass);
    event.set_allocationSize(alloc_size);
    event.commit();
  }
}

void AllocTracer::send_allocation_in_new_tlab(Klass* klass, HeapWord* obj, size_t tlab_size, size_t alloc_size, JavaThread* thread) {
  JFR_ONLY(JfrAllocationTracer tracer(klass, obj, alloc_size, false, thread);)
  EventObjectAllocationInNewTLAB event;
  if (event.should_commit()) {
    event.set_objectClass(klass);

Configuration enabled stackTrace
profiling false true
default false true

Field Type Description
objectClass Class Object Class Class of allocated object
allocationSize ulong: bytes Allocation Size

Examples 3
allocationSize ulong: bytes
26584
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
28
lineNumber int
319
method Method
descriptor string
(Ljava/io/InputStream;Z)[B
hidden boolean
false
modifiers int
10
name string
readStream
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
org/apache/xbean/asm9/ClassReader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/xbean/asm9
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
330630528180
allocationSize ulong: bytes
32784
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
31
lineNumber int
102
method Method
descriptor string
(Ljava/io/OutputStream;ILnet/jpountz/lz4/LZ4Compressor;Ljava/util/zip/Checksum;Z)V
hidden boolean
false
modifiers int
1
name string
<init>
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
net/jpountz/lz4/LZ4BlockOutputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
net/jpountz/lz4
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
624732995631
allocationSize ulong: bytes
4112
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
24
lineNumber int
494
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
allocateAndGC
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
445119391

ObjectAllocationSample

throttle profiling default startTime eventThread stackTrace 16 17 21 25 27 28

Category: Java Application

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/support/jfrObjectAllocationSample.cpp:

static THREAD_LOCAL int64_t _last_allocated_bytes = 0;

inline void send_allocation_sample(const Klass* klass, int64_t allocated_bytes) {
  assert(allocated_bytes > 0, "invariant");
  EventObjectAllocationSample event;
  if (event.should_commit()) {
    const int64_t weight = allocated_bytes - _last_allocated_bytes;
    assert(weight > 0, "invariant");
    event.set_objectClass(klass);
    event.set_weight(weight);
    event.commit();
    _last_allocated_bytes = allocated_bytes;
  }
}

inline bool send_allocation_sample_with_result(const Klass* klass, int64_t allocated_bytes) {
  assert(allocated_bytes > 0, "invariant");
  EventObjectAllocationSample event;
  if (event.should_commit()) {
    const int64_t weight = allocated_bytes - _last_allocated_bytes;
    assert(weight > 0, "invariant");
    event.set_objectClass(klass);
    event.set_weight(weight);
    event.commit();
    _last_allocated_bytes = allocated_bytes;
    return true;
  }
  return false;
}

Configuration enabled stackTrace throttle
profiling true true 300/s
default true true 150/s

Field Type Description
objectClass Class Object Class Class of allocated object
weight long: bytes Sample Weight The relative weight of the sample. Aggregating the weights for a large number of samples, for a particular class, thread or stack trace, gives a statistically accurate representation of the allocation pressure

Examples 3
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
24
lineNumber int
494
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
allocateAndGC
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
446147279
weight long: bytes
69904
objectClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
9
name string
scala/collection/JavaConverters$AsScala
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/collection
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
261
method Method
descriptor string
(Ljava/util/Collection;)Lscala/collection/JavaConverters$AsScala;
hidden boolean
false
modifiers int
1
name string
collectionAsScalaIterableConverter
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
17
name string
scala/collection/JavaConverters$
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/collection
type FrameType
Inlined
truncated boolean
false
startTime long: millis
329701228472
weight long: bytes
24624
objectClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
true
modifiers int
4112
name string
org.apache.spark.status.ElementTrackingStore$$Lambda/0x00000000615dcc00
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/spark/status
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
12
lineNumber int
500
method Method
descriptor string
(Ljava/lang/Object;)Ljava/lang/Object;
hidden boolean
false
modifiers int
8
name string
allocateInstance
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
java/lang/invoke/DirectMethodHandle
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang/invoke
type FrameType
Inlined
truncated boolean
false
startTime long: millis
623214419475
weight long: bytes
3776

FileRead

profiling default startTime duration stackTrace 11 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/FileReadEvent.java

Category: Java Application

Reading data from a file

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

public final class JDKEvents {
    private static final Class<?>[] mirrorEventClasses = {
        DeserializationEvent.class,
        ProcessStartEvent.class,
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,
        ErrorThrownEvent.class,
        ActiveSettingEvent.class,
        ActiveRecordingEvent.class,
        jdk.internal.event.DeserializationEvent.class,
        jdk.internal.event.ProcessStartEvent.class,
        jdk.internal.event.SecurityPropertyModificationEvent.class,

src/jdk.jfr/share/classes/jdk/jfr/events/FileReadEvent.java:

package jdk.jfr.events;

import jdk.jfr.Category;
import jdk.jfr.Description;
import jdk.jfr.Label;
import jdk.jfr.DataAmount;
import jdk.jfr.Name;
import jdk.jfr.internal.Type;

@Name(Type.EVENT_NAME_PREFIX + "FileRead")
@Label("File Read")
@Category("Java Application")
@Description("Reading data from a file")
public final class FileReadEvent extends AbstractJDKEvent {

    // The order of these fields must be the same as the parameters in
    // EventHandler::write(..., String, long, boolean)

    @Label("Path")
    @Description("Full path of the file")
    public String path;

    @Label("Bytes Read")
    @Description("Number of bytes read from the file (possibly 0)")
    @DataAmount

src/jdk.jfr/share/classes/jdk/jfr/events/Handlers.java:

package jdk.jfr.events;
import jdk.jfr.internal.handlers.EventHandler;
import jdk.jfr.internal.Utils;

public final class Handlers {
    public static final EventHandler SOCKET_READ = Utils.getHandler(SocketReadEvent.class);
    public static final EventHandler SOCKET_WRITE = Utils.getHandler(SocketWriteEvent.class);
    public static final EventHandler FILE_READ = Utils.getHandler(FileReadEvent.class);
    public static final EventHandler FILE_WRITE = Utils.getHandler(FileWriteEvent.class);
    public static final EventHandler FILE_FORCE = Utils.getHandler(FileForceEvent.class);
    public static final EventHandler ERROR_THROWN = Utils.getHandler(ErrorThrownEvent.class);
    public static final EventHandler EXCEPTION_THROWN = Utils.getHandler(ExceptionThrownEvent.class);
}

src/jdk.jfr/share/classes/jdk/jfr/internal/handlers/EventHandler.java:

    public void write(long start, long duration, String host, String address, int port, long timeout, long bytesRead, boolean endOfSTream) {
        throwError("SocketReadEvent");
    }

    public void write(long start, long duration, String host, String address, int port, long bytesWritten) {
        throwError("SocketWriteEvent");
    }

    public void write(long start, long duration, String path, boolean metadata) {
        throwError("FileForceEvent");
    }

    public void write(long start, long duration, String path, long bytesRead, boolean endOfFile) {
        throwError("FileReadEvent");
    }

    public void write(long start, long duration, String path, long bytesWritten) {
        throwError("FileWriteEvent");
    }

    public void write(long start, long duration, String path, Class<?> exceptionClass)  {
        throwError("ExceptionThrownEvent or ErrorThrownEvent");
    }

    private void throwError(String classes) {

Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Field Type Description
path string Path Full path of the file
bytesRead long: bytes Bytes Read Number of bytes read from the file (possibly 0)
endOfFile boolean End of File If end of file was reached

Examples 3
bytesRead long: bytes
11034
endOfFile boolean
false
path string
/tmp/jar_cache7603049483496356334.tmp
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
24
lineNumber int
1588
method Method
descriptor string
([BIIJ)I
hidden boolean
false
modifiers int
18
name string
readAt
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
java/util/zip/ZipFile$Source
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util/zip
type FrameType
Inlined
truncated boolean
false
startTime long: millis
624851920726
bytesRead long: bytes
1493
endOfFile boolean
false
path string
/tmp/jar_cache7325961630893982477.tmp
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
24
lineNumber int
1588
method Method
descriptor string
([BIIJ)I
hidden boolean
false
modifiers int
18
name string
readAt
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
java/util/zip/ZipFile$Source
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util/zip
type FrameType
Inlined
truncated boolean
true
startTime long: millis
331193781079
bytesRead long: bytes
1024
endOfFile boolean
false
path string
/tmp/jfr_sample9952681845271421524.tmp
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
68
lineNumber int
528
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
fileIO
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1713677062

SocketWrite

profiling default startTime duration stackTrace 11 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/SocketWriteEvent.java

Category: Java Application

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Writing data to a socket

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

        DeserializationEvent.class,
        ProcessStartEvent.class,
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,
        ErrorThrownEvent.class,
        ActiveSettingEvent.class,
        ActiveRecordingEvent.class,
        jdk.internal.event.DeserializationEvent.class,
        jdk.internal.event.ProcessStartEvent.class,
        jdk.internal.event.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,
        jdk.internal.event.X509CertificateEvent.class,
        jdk.internal.event.X509ValidationEvent.class,

src/jdk.jfr/share/classes/jdk/jfr/events/SocketWriteEvent.java:

package jdk.jfr.events;

import jdk.jfr.Category;
import jdk.jfr.Description;
import jdk.jfr.Label;
import jdk.jfr.DataAmount;
import jdk.jfr.Name;
import jdk.jfr.internal.Type;

@Name(Type.EVENT_NAME_PREFIX + "SocketWrite")
@Label("Socket Write")
@Category("Java Application")
@Description("Writing data to a socket")
public final class SocketWriteEvent extends AbstractJDKEvent {

    // The order of these fields must be the same as the parameters in
    // EventHandler::write(..., String, String, int, long)

    @Label("Remote Host")
    public String host;

    @Label("Remote Address")
    public String address;

    @Label("Remote Port")

src/jdk.jfr/share/classes/jdk/jfr/events/Handlers.java:

package jdk.jfr.events;
import jdk.jfr.internal.handlers.EventHandler;
import jdk.jfr.internal.Utils;

public final class Handlers {
    public static final EventHandler SOCKET_READ = Utils.getHandler(SocketReadEvent.class);
    public static final EventHandler SOCKET_WRITE = Utils.getHandler(SocketWriteEvent.class);
    public static final EventHandler FILE_READ = Utils.getHandler(FileReadEvent.class);
    public static final EventHandler FILE_WRITE = Utils.getHandler(FileWriteEvent.class);
    public static final EventHandler FILE_FORCE = Utils.getHandler(FileForceEvent.class);
    public static final EventHandler ERROR_THROWN = Utils.getHandler(ErrorThrownEvent.class);
    public static final EventHandler EXCEPTION_THROWN = Utils.getHandler(ExceptionThrownEvent.class);
}

src/jdk.jfr/share/classes/jdk/jfr/internal/handlers/EventHandler.java:

    public boolean isRegistered() {
        return platformEventType.isRegistered();
    }

    public boolean setRegistered(boolean registered) {
       return platformEventType.setRegistered(registered);
    }

    public void write(long start, long duration, String host, String address, int port, long timeout, long bytesRead, boolean endOfSTream) {
        throwError("SocketReadEvent");
    }

    public void write(long start, long duration, String host, String address, int port, long bytesWritten) {
        throwError("SocketWriteEvent");
    }

    public void write(long start, long duration, String path, boolean metadata) {
        throwError("FileForceEvent");
    }

    public void write(long start, long duration, String path, long bytesRead, boolean endOfFile) {
        throwError("FileReadEvent");
    }

    public void write(long start, long duration, String path, long bytesWritten) {

Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Field Type Description
host string Remote Host
address string Remote Address
port int Remote Port
bytesWritten long: bytes Bytes Written Number of bytes written to the socket

Examples 3
address string
127.0.0.1
bytesWritten long: bytes
64
host string
127.0.0.1
port int
34069
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
20
lineNumber int
546
method Method
descriptor string
(I)V
hidden boolean
false
modifiers int
4106
name string
lambda$socketIO$0
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
2827210338
address string
127.0.0.1
bytesWritten long: bytes
64
host string
127.0.0.1
port int
33999
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
20
lineNumber int
546
method Method
descriptor string
(I)V
hidden boolean
false
modifiers int
4106
name string
lambda$socketIO$0
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1542858558
address string
127.0.0.1
bytesWritten long: bytes
64
host string
127.0.0.1
port int
53874
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
69
lineNumber int
553
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
socketIO
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
3228246153

SocketRead

profiling default startTime duration stackTrace 11 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/SocketReadEvent.java

Category: Java Application

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Reading data from a socket

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

    private static final Class<?>[] mirrorEventClasses = {
        DeserializationEvent.class,
        ProcessStartEvent.class,
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,
        ErrorThrownEvent.class,
        ActiveSettingEvent.class,
        ActiveRecordingEvent.class,
        jdk.internal.event.DeserializationEvent.class,
        jdk.internal.event.ProcessStartEvent.class,
        jdk.internal.event.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,
        jdk.internal.event.X509CertificateEvent.class,

src/jdk.jfr/share/classes/jdk/jfr/events/SocketReadEvent.java:

@Name(Type.EVENT_NAME_PREFIX + "SocketRead")
@Label("Socket Read")
@Category("Java Application")
@Description("Reading data from a socket")
public final class SocketReadEvent extends AbstractJDKEvent {

    // The order of these fields must be the same as the parameters in
    // EventHandler::write(..., String, String, int, long, long, boolean)

    @Label("Remote Host")
    public String host;

    @Label("Remote Address")
    public String address;

    @Label("Remote Port")

src/jdk.jfr/share/classes/jdk/jfr/events/Handlers.java:

package jdk.jfr.events;
import jdk.jfr.internal.handlers.EventHandler;
import jdk.jfr.internal.Utils;

public final class Handlers {
    public static final EventHandler SOCKET_READ = Utils.getHandler(SocketReadEvent.class);
    public static final EventHandler SOCKET_WRITE = Utils.getHandler(SocketWriteEvent.class);
    public static final EventHandler FILE_READ = Utils.getHandler(FileReadEvent.class);
    public static final EventHandler FILE_WRITE = Utils.getHandler(FileWriteEvent.class);
    public static final EventHandler FILE_FORCE = Utils.getHandler(FileForceEvent.class);
    public static final EventHandler ERROR_THROWN = Utils.getHandler(ErrorThrownEvent.class);
    public static final EventHandler EXCEPTION_THROWN = Utils.getHandler(ExceptionThrownEvent.class);
}

src/jdk.jfr/share/classes/jdk/jfr/internal/handlers/EventHandler.java:

    private final void readObject(ObjectInputStream in) throws IOException {
        throw new IOException("Class cannot be deserialized");
    }

    public boolean isRegistered() {
        return platformEventType.isRegistered();
    }

    public boolean setRegistered(boolean registered) {
       return platformEventType.setRegistered(registered);
    }

    public void write(long start, long duration, String host, String address, int port, long timeout, long bytesRead, boolean endOfSTream) {
        throwError("SocketReadEvent");
    }

    public void write(long start, long duration, String host, String address, int port, long bytesWritten) {
        throwError("SocketWriteEvent");
    }

    public void write(long start, long duration, String path, boolean metadata) {
        throwError("FileForceEvent");
    }

    public void write(long start, long duration, String path, long bytesRead, boolean endOfFile) {

Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Field Type Description
host string Remote Host
address string Remote Address
port int Remote Port
timeout long: millis Timeout Value
bytesRead long: bytes Bytes Read Number of bytes read from the socket
endOfStream boolean End of Stream If end of stream was reached

Examples 3
address string
127.0.0.1
bytesRead long: bytes
64
endOfStream boolean
false
host string
127.0.0.1
port int
44945
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
31
lineNumber int
547
method Method
descriptor string
(I)V
hidden boolean
false
modifiers int
4106
name string
lambda$socketIO$0
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
2212384652
timeout long: millis
0
address string
127.0.0.1
bytesRead long: bytes
64
endOfStream boolean
false
host string
127.0.0.1
port int
35290
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
57
lineNumber int
552
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
socketIO
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1516648004
timeout long: millis
0
address string
127.0.0.1
bytesRead long: bytes
64
endOfStream boolean
false
host string
127.0.0.1
port int
35985
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
31
lineNumber int
547
method Method
descriptor string
(I)V
hidden boolean
false
modifiers int
4106
name string
lambda$socketIO$0
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1137227204
timeout long: millis
0

JavaErrorThrow

profiling default startTime duration stackTrace 11 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/ErrorThrownEvent.java

Category: Java Application

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

An object derived from java.lang.Error has been created. OutOfMemoryErrors are ignored

Configuration enabled stackTrace
profiling true true
default true true

Field Type Description
message string Message
thrownClass Class Class

Examples 3
message string
Native Library /opt/hostedtoolcache/Java_SapMachine_jdk/25.0.4-1/x64/lib/libnio.so already loaded in another classloader
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
16
lineNumber int
74
method Method
descriptor string
(Ljava/lang/String;)V
hidden boolean
false
modifiers int
1
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Error
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1043534101
thrownClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/UnsatisfiedLinkError
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
message string
'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, int, java.lang.Object)'
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
16
lineNumber int
74
method Method
descriptor string
(Ljava/lang/String;)V
hidden boolean
false
modifiers int
1
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Error
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Inlined
truncated boolean
false
startTime long: millis
355610576555
thrownClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/NoSuchMethodError
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
message string
'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(java.lang.Object, int, int, int, java.lang.Object)'
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
16
lineNumber int
74
method Method
descriptor string
(Ljava/lang/String;)V
hidden boolean
false
modifiers int
1
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Error
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Inlined
truncated boolean
true
startTime long: millis
673713739834
thrownClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/NoSuchMethodError
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang

FileForce

profiling default startTime duration stackTrace 11 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/FileForceEvent.java

Category: Java Application

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Force updates to be written to file

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

public final class JDKEvents {
    private static final Class<?>[] mirrorEventClasses = {
        DeserializationEvent.class,
        ProcessStartEvent.class,
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,
        ErrorThrownEvent.class,
        ActiveSettingEvent.class,
        ActiveRecordingEvent.class,
        jdk.internal.event.DeserializationEvent.class,
        jdk.internal.event.ProcessStartEvent.class,

src/jdk.jfr/share/classes/jdk/jfr/events/FileForceEvent.java:

package jdk.jfr.events;

import jdk.jfr.Category;
import jdk.jfr.Description;
import jdk.jfr.Label;
import jdk.jfr.Name;
import jdk.jfr.internal.Type;

@Name(Type.EVENT_NAME_PREFIX + "FileForce")
@Label("File Force")
@Category("Java Application")
@Description("Force updates to be written to file")
public final class FileForceEvent extends AbstractJDKEvent {

    // The order of these fields must be the same as the parameters in
    // EventHandler::write(..., String, boolean)

    @Label("Path")
    @Description("Full path of the file")
    public String path;

    @Label("Update Metadata")
    @Description("Whether the file metadata is updated")
    public boolean metaData;

src/jdk.jfr/share/classes/jdk/jfr/events/Handlers.java:

package jdk.jfr.events;
import jdk.jfr.internal.handlers.EventHandler;
import jdk.jfr.internal.Utils;

public final class Handlers {
    public static final EventHandler SOCKET_READ = Utils.getHandler(SocketReadEvent.class);
    public static final EventHandler SOCKET_WRITE = Utils.getHandler(SocketWriteEvent.class);
    public static final EventHandler FILE_READ = Utils.getHandler(FileReadEvent.class);
    public static final EventHandler FILE_WRITE = Utils.getHandler(FileWriteEvent.class);
    public static final EventHandler FILE_FORCE = Utils.getHandler(FileForceEvent.class);
    public static final EventHandler ERROR_THROWN = Utils.getHandler(ErrorThrownEvent.class);
    public static final EventHandler EXCEPTION_THROWN = Utils.getHandler(ExceptionThrownEvent.class);
}

src/jdk.jfr/share/classes/jdk/jfr/internal/handlers/EventHandler.java:

    public boolean setRegistered(boolean registered) {
       return platformEventType.setRegistered(registered);
    }

    public void write(long start, long duration, String host, String address, int port, long timeout, long bytesRead, boolean endOfSTream) {
        throwError("SocketReadEvent");
    }

    public void write(long start, long duration, String host, String address, int port, long bytesWritten) {
        throwError("SocketWriteEvent");
    }

    public void write(long start, long duration, String path, boolean metadata) {
        throwError("FileForceEvent");
    }

    public void write(long start, long duration, String path, long bytesRead, boolean endOfFile) {
        throwError("FileReadEvent");
    }

    public void write(long start, long duration, String path, long bytesWritten) {
        throwError("FileWriteEvent");
    }

    public void write(long start, long duration, String path, Class<?> exceptionClass)  {

Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Field Type Description
path string Path Full path of the file
metaData boolean Update Metadata Whether the file metadata is updated

Examples 3
metaData boolean
true
path string
/tmp/jfr_sample3451218038982396527.tmp
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
47
lineNumber int
536
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
fileForce
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
4836356270
metaData boolean
true
path string
/tmp/jfr_sample9952681845271421524.tmp
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
47
lineNumber int
536
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
fileForce
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
3554449115
metaData boolean
true
path string
/tmp/jfr_sample13477713470374668379.tmp
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
47
lineNumber int
536
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
fileForce
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1515728681

FileWrite

profiling default startTime duration stackTrace 11 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/FileWriteEvent.java

Category: Java Application

Writing data to a file

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

public final class JDKEvents {
    private static final Class<?>[] mirrorEventClasses = {
        DeserializationEvent.class,
        ProcessStartEvent.class,
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,
        ErrorThrownEvent.class,
        ActiveSettingEvent.class,
        ActiveRecordingEvent.class,
        jdk.internal.event.DeserializationEvent.class,
        jdk.internal.event.ProcessStartEvent.class,
        jdk.internal.event.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,

src/jdk.jfr/share/classes/jdk/jfr/events/FileWriteEvent.java:

package jdk.jfr.events;

import jdk.jfr.Category;
import jdk.jfr.Description;
import jdk.jfr.Label;
import jdk.jfr.DataAmount;
import jdk.jfr.Name;
import jdk.jfr.internal.Type;

@Name(Type.EVENT_NAME_PREFIX + "FileWrite")
@Label("File Write")
@Category("Java Application")
@Description("Writing data to a file")
public final class FileWriteEvent extends AbstractJDKEvent {

    // The order of these fields must be the same as the parameters in
    // EventHandler::write(..., String, long)

    @Label("Path")
    @Description("Full path of the file")
    public String path;

    @Label("Bytes Written")
    @Description("Number of bytes written to the file")
    @DataAmount

src/jdk.jfr/share/classes/jdk/jfr/events/Handlers.java:

package jdk.jfr.events;
import jdk.jfr.internal.handlers.EventHandler;
import jdk.jfr.internal.Utils;

public final class Handlers {
    public static final EventHandler SOCKET_READ = Utils.getHandler(SocketReadEvent.class);
    public static final EventHandler SOCKET_WRITE = Utils.getHandler(SocketWriteEvent.class);
    public static final EventHandler FILE_READ = Utils.getHandler(FileReadEvent.class);
    public static final EventHandler FILE_WRITE = Utils.getHandler(FileWriteEvent.class);
    public static final EventHandler FILE_FORCE = Utils.getHandler(FileForceEvent.class);
    public static final EventHandler ERROR_THROWN = Utils.getHandler(ErrorThrownEvent.class);
    public static final EventHandler EXCEPTION_THROWN = Utils.getHandler(ExceptionThrownEvent.class);
}

src/jdk.jfr/share/classes/jdk/jfr/internal/handlers/EventHandler.java:

    public void write(long start, long duration, String host, String address, int port, long bytesWritten) {
        throwError("SocketWriteEvent");
    }

    public void write(long start, long duration, String path, boolean metadata) {
        throwError("FileForceEvent");
    }

    public void write(long start, long duration, String path, long bytesRead, boolean endOfFile) {
        throwError("FileReadEvent");
    }

    public void write(long start, long duration, String path, long bytesWritten) {
        throwError("FileWriteEvent");
    }

    public void write(long start, long duration, String path, Class<?> exceptionClass)  {
        throwError("ExceptionThrownEvent or ErrorThrownEvent");
    }

    private void throwError(String classes) {
        throw new InternalError("Method parameters don't match fields in class " + classes);
    }
}

Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Field Type Description
path string Path Full path of the file
bytesWritten long: bytes Bytes Written Number of bytes written to the file

Examples 3
bytesWritten long: bytes
8434
path string
/tmp/jar_cache654401752169320692.tmp
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
38
lineNumber int
796
method Method
descriptor string
(Ljava/io/OutputStream;)J
hidden boolean
false
modifiers int
1
name string
transferTo
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1025
name string
java/io/InputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/io
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
668398579558
bytesWritten long: bytes
1
path string
/tmp/jfr_agent17265025421583405949.jar
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
40
lineNumber int
845
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
2
name string
writeInt
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/zip/ZipOutputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util/zip
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
301233822
bytesWritten long: bytes
8211
path string
/tmp/jar_cache7609655321695097645.tmp
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
38
lineNumber int
796
method Method
descriptor string
(Ljava/io/OutputStream;)J
hidden boolean
false
modifiers int
1
name string
transferTo
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1025
name string
java/io/InputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/io
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
354765599149

JavaExceptionThrow

startTime duration stackTrace 11 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/ExceptionThrownEvent.java

Category: Java Application

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

An object derived from java.lang.Exception has been created

Configuration enabled stackTrace
profiling false true
default false true

Field Type Description
message string Message
thrownClass Class Class

Examples 3
message string
java.lang.Object.writeReplace()
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
44
lineNumber int
286
method Method
descriptor string
(Ljava/lang/String;)V
hidden boolean
false
modifiers int
1
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Throwable
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
905547087
thrownClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/NoSuchMethodException
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
message string
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
39
lineNumber int
266
method Method
descriptor string
()V
hidden boolean
false
modifiers int
1
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Throwable
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
Inlined
truncated boolean
false
startTime long: millis
623462826404
thrownClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Exception
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
message string
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
71
lineNumber int
399
method Method
descriptor string
(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
hidden boolean
false
modifiers int
4
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Throwable
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
330514351432
thrownClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
scala/runtime/NonLocalReturnControl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/runtime

Java Application Statistics

JavaThreadStatistics

profiling default startTime duration every chunk 11 17 21 25 27 28

Category: Java Application / Statistics

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

 *
 *  If running inside a guest OS on top of a hypervisor in a virtualized environment,
 *  the total memory reported is the amount of memory configured for the guest OS by the hypervisor.
 */
TRACE_REQUEST_FUNC(PhysicalMemory) {
  u8 totalPhysicalMemory = os::physical_memory();
  EventPhysicalMemory event;
  event.set_totalSize(totalPhysicalMemory);
  event.set_usedSize(totalPhysicalMemory - os::available_memory());
  event.commit();
}

TRACE_REQUEST_FUNC(JavaThreadStatistics) {
  EventJavaThreadStatistics event;
  event.set_activeCount(ThreadService::get_live_thread_count());
  event.set_daemonCount(ThreadService::get_daemon_thread_count());
  event.set_accumulatedCount(ThreadService::get_total_thread_count());
  event.set_peakCount(ThreadService::get_peak_thread_count());
  event.commit();
}

TRACE_REQUEST_FUNC(ClassLoadingStatistics) {
#if INCLUDE_MANAGEMENT
  EventClassLoadingStatistics event;
  event.set_loadedClassCount(ClassLoadingService::loaded_class_count());

Configuration enabled period
profiling true 1000 ms
default true 1000 ms

Field Type Description
activeCount long Active Threads Number of live active threads including both daemon and non-daemon threads
daemonCount long Daemon Threads Number of live daemon threads
accumulatedCount long Accumulated Threads Number of threads created and also started since JVM start
peakCount long Peak Threads Peak live thread count since JVM start or when peak count was reset

Examples 3
accumulatedCount long
175
activeCount long
21
daemonCount long
16
peakCount long
22
startTime long: millis
7423604684
accumulatedCount long
2034
activeCount long
65
daemonCount long
64
peakCount long
297
startTime long: millis
666214422803
accumulatedCount long
1930
activeCount long
77
daemonCount long
72
peakCount long
298
startTime long: millis
372545660571

ClassLoadingStatistics

profiling default startTime duration every chunk 11 17 21 25 27 28

Category: Java Application / Statistics

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

TRACE_REQUEST_FUNC(JavaThreadStatistics) {
  EventJavaThreadStatistics event;
  event.set_activeCount(ThreadService::get_live_thread_count());
  event.set_daemonCount(ThreadService::get_daemon_thread_count());
  event.set_accumulatedCount(ThreadService::get_total_thread_count());
  event.set_peakCount(ThreadService::get_peak_thread_count());
  event.commit();
}

TRACE_REQUEST_FUNC(ClassLoadingStatistics) {
#if INCLUDE_MANAGEMENT
  EventClassLoadingStatistics event;
  event.set_loadedClassCount(ClassLoadingService::loaded_class_count());
  event.set_unloadedClassCount(ClassLoadingService::unloaded_class_count());
  event.commit();
#else
  log_debug(jfr, system)("Unable to generate requestable event ClassLoadingStatistics. The required jvm feature 'management' is missing.");
#endif
}

class JfrClassLoaderStatsClosure : public ClassLoaderStatsClosure {
public:
  JfrClassLoaderStatsClosure() : ClassLoaderStatsClosure(NULL) {}

Configuration enabled period
profiling true 1000 ms
default true 1000 ms

Field Type Description
loadedClassCount long Loaded Class Count Number of classes loaded since JVM start
unloadedClassCount long Unloaded Class Count Number of classes unloaded since JVM start

Examples 3
loadedClassCount long
134179
startTime long: millis
672980385743
unloadedClassCount long
3104
loadedClassCount long
4140
startTime long: millis
14547773735
unloadedClassCount long
298
loadedClassCount long
137016
startTime long: millis
360827480739
unloadedClassCount long
3147

ClassLoaderStatistics

profiling default startTime duration every chunk 11 17 21 25 27 28

Category: Java Application / Statistics

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

  log_debug(jfr, system)("Unable to generate requestable event ClassLoadingStatistics. The required jvm feature 'management' is missing.");
#endif
}

class JfrClassLoaderStatsClosure : public ClassLoaderStatsClosure {
public:
  JfrClassLoaderStatsClosure() : ClassLoaderStatsClosure(NULL) {}

  bool do_entry(oop const& key, ClassLoaderStats const& cls) {
    const ClassLoaderData* this_cld = cls._class_loader != NULL ?
      java_lang_ClassLoader::loader_data_acquire(cls._class_loader) : NULL;
    const ClassLoaderData* parent_cld = cls._parent != NULL ?
      java_lang_ClassLoader::loader_data_acquire(cls._parent) : NULL;
    EventClassLoaderStatistics event;
    event.set_classLoader(this_cld);
    event.set_parentClassLoader(parent_cld);
    event.set_classLoaderData((intptr_t)cls._cld);
    event.set_classCount(cls._classes_count);
    event.set_chunkSize(cls._chunk_sz);
    event.set_blockSize(cls._block_sz);
    event.set_hiddenClassCount(cls._hidden_classes_count);
    event.set_hiddenChunkSize(cls._hidden_chunk_sz);
    event.set_hiddenBlockSize(cls._hidden_block_sz);
    event.commit();
    return true;

Configuration enabled period
profiling true everyChunk
default true everyChunk

Field Type Description
classLoader ClassLoader Class Loader
parentClassLoader ClassLoader Parent Class Loader
classLoaderData ulong: address ClassLoaderData Pointer Pointer to the ClassLoaderData structure in the JVM
classCount long Classes Number of loaded classes
chunkSize ulong: bytes Total Chunk Size Total size of all allocated metaspace chunks (each chunk has several blocks)
blockSize ulong: bytes Total Block Size Total size of all allocated metaspace blocks (each chunk has several blocks)
hiddenClassCount long 15+ Hidden Classes Number of hidden classes
hiddenChunkSize ulong: bytes 15+ Total Hidden Classes Chunk Size Total size of all allocated metaspace chunks for hidden classes (each chunk has several blocks)
hiddenBlockSize ulong: bytes 15+ Total Hidden Classes Block Size Total size of all allocated metaspace blocks for hidden classes (each chunk has several blocks)

Examples 3
blockSize ulong: bytes
5952
chunkSize ulong: bytes
8192
classCount long
2
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
org/codehaus/commons/compiler/util/reflect/ByteArrayClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/codehaus/commons/compiler/util/reflect
classLoaderData ulong: address
139907771780272
hiddenBlockSize ulong: bytes
0
hiddenChunkSize ulong: bytes
0
hiddenClassCount long
0
parentClassLoader ClassLoader
null
startTime long: millis
625340480983
blockSize ulong: bytes
704
chunkSize ulong: bytes
6144
classCount long
1
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
0
name string
jfr_sample/Main$2
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
classLoaderData ulong: address
139993342361888
hiddenBlockSize ulong: bytes
0
hiddenChunkSize ulong: bytes
0
hiddenClassCount long
0
parentClassLoader ClassLoader
null
startTime long: millis
5555893052
blockSize ulong: bytes
3224
chunkSize ulong: bytes
6144
classCount long
1
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
0
name string
org/neo4j/codegen/CodeLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/neo4j/codegen
classLoaderData ulong: address
140679824932048
hiddenBlockSize ulong: bytes
0
hiddenChunkSize ulong: bytes
0
hiddenClassCount long
0
parentClassLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
startTime long: millis
331411821619

ThreadAllocationStatistics

profiling default startTime every chunk 11 17 21 25 27 28

Category: Java Application / Statistics

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

  GrowableArray<jlong> allocated(initial_size);
  GrowableArray<traceid> thread_ids(initial_size);
  JfrTicks time_stamp = JfrTicks::now();
  JfrJavaThreadIterator iter;
  while (iter.has_next()) {
    JavaThread* const jt = iter.next();
    assert(jt != NULL, "invariant");
    allocated.append(jt->cooked_allocated_bytes());
    thread_ids.append(JFR_THREAD_ID(jt));
  }

  // Write allocation statistics to buffer.
  for(int i = 0; i < thread_ids.length(); i++) {
    EventThreadAllocationStatistics event(UNTIMED);
    event.set_allocated(allocated.at(i));
    event.set_thread(thread_ids.at(i));
    event.set_endtime(time_stamp);
    event.commit();
  }
}

/**
 *  PhysicalMemory event represents:
 *
 *  @totalSize == The amount of physical memory (hw) installed and reported by the OS, in bytes.

Configuration enabled period
profiling true everyChunk
default true everyChunk

Field Type Description
allocated ulong: bytes Allocated Approximate number of bytes allocated since thread start
thread Thread Thread

Examples 3
allocated ulong: bytes
48904
startTime long: millis
330135391698
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
element-tracking-store-worker
javaThreadId long
1702
osName string
element-tracking-store-worker
osThreadId long
4204
virtual boolean
false
allocated ulong: bytes
392872
startTime long: millis
623778377225
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
dispatcher-BlockManagerEndpoint1
javaThreadId long
1813
osName string
dispatcher-BlockManagerEndpoint1
osThreadId long
4589
virtual boolean
false
allocated ulong: bytes
4232
startTime long: millis
5677442782
thread Thread
group ThreadGroup
name string
InnocuousThreadGroup
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
process reaper
javaThreadId long
55
osName string
process reaper
osThreadId long
4618
virtual boolean
false

FinalizerStatistics

profiling default startTime end of every chunk 18 21 25 27 28

Category: Java Application / Statistics

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Per class statistics about finalizers

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrFinalizerStatisticsEvent.cpp:

static void send_event(const FinalizerEntry* fe, const InstanceKlass* ik, const JfrTicks& timestamp, Thread* thread) {
  assert(ik != NULL, "invariant");
  assert(ik->has_finalizer(), "invariant");
  assert(thread != NULL, "invariant");
  const char* const url = fe != nullptr ? fe->codesource() : nullptr;
  const traceid url_symbol_id = url != NULL ? JfrSymbolTable::add(url) : 0;
  EventFinalizerStatistics event(UNTIMED);
  event.set_endtime(timestamp);
  event.set_finalizableClass(ik);
  event.set_codeSource(url_symbol_id);
  if (fe == NULL) {
    event.set_objects(0);
    event.set_totalFinalizersRun(0);
  } else {
    assert(fe->klass() == ik, "invariant");
    event.set_objects(fe->objects_on_heap());
    event.set_totalFinalizersRun(fe->total_finalizers_run());
  }
  event.commit();
}

void JfrFinalizerStatisticsEvent::send_unload_event(const InstanceKlass* ik) {
  if (!EventFinalizerStatistics::is_enabled()) {
    return;
  }
  Thread* const thread = Thread::current();
  ResourceMark rm(thread);
  send_event(FinalizerService::lookup(ik, thread), ik, JfrTicks::now(), thread);
}

// Finalizer events generated by the periodic task will all have the same timestamp.

class FinalizerStatisticsEventClosure : public FinalizerEntryClosure {
 private:

Configuration enabled period
profiling true endChunk
default true endChunk

Field Type Description
finalizableClass Class Class Overriding Finalize
codeSource Symbol Code Source URL from where the class was loaded
objects ulong Finalizable Objects on Heap Number of objects on heap that can be finalized
totalFinalizersRun ulong Finalizers Run Total number of finalizers run since JVM start

Examples 3
codeSource Symbol
resource:///shared/jna-5.15.0.jar
finalizableClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
0
name string
com/sun/jna/Native$2
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
com/sun/jna
objects ulong
1
startTime long: millis
572436777836
totalFinalizersRun ulong
0
codeSource Symbol
resource:///unique/apache-spark/spark-core_2.13-3.5.3.jar
finalizableClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
org/sparkproject/jetty/util/resource/JarResource
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/sparkproject/jetty/util/resource
objects ulong
4
startTime long: millis
335567540738
totalFinalizersRun ulong
0
codeSource Symbol
resource:///shared/netty-buffer-4.1.114.Final.jar
finalizableClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
24
name string
io/netty/buffer/PoolArena$DirectArena
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
io/netty/buffer
objects ulong
8
startTime long: millis
625689996582
totalFinalizersRun ulong
0

DirectBufferStatistics

profiling default startTime duration stackTrace 15 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/DirectBufferStatisticsEvent.java

Category: Java Application / Statistics

Statistics of direct buffer

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,
        ErrorThrownEvent.class,
        ActiveSettingEvent.class,
        ActiveRecordingEvent.class,
        jdk.internal.event.DeserializationEvent.class,
        jdk.internal.event.ProcessStartEvent.class,
        jdk.internal.event.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,
        jdk.internal.event.X509CertificateEvent.class,
        jdk.internal.event.X509ValidationEvent.class,

        DirectBufferStatisticsEvent.class
    };

    // This is a list of the classes with instrumentation code that should be applied.
    private static final Class<?>[] instrumentationClasses = new Class<?>[] {
        FileInputStreamInstrumentor.class,
        FileOutputStreamInstrumentor.class,
        RandomAccessFileInstrumentor.class,
        FileChannelImplInstrumentor.class,
        SocketInputStreamInstrumentor.class,
        SocketOutputStreamInstrumentor.class,
        SocketChannelImplInstrumentor.class

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

    @SuppressWarnings("unchecked")
    public static synchronized void initialize() {
        try {
            if (initializationTriggered == false) {
                for (Class<?> mirrorEventClass : mirrorEventClasses) {
                    SecuritySupport.registerMirror(((Class<? extends Event>)mirrorEventClass));
                }
                for (Class<?> eventClass : eventClasses) {
                    SecuritySupport.registerEvent((Class<? extends Event>) eventClass);
                }

                RequestEngine.addTrustedJDKHook(ExceptionStatisticsEvent.class, emitExceptionStatistics);
                RequestEngine.addTrustedJDKHook(DirectBufferStatisticsEvent.class, emitDirectBufferStatistics);

                initializeContainerEvents();
                initializationTriggered = true;
            }
        } catch (Exception e) {
            Logger.log(LogTag.JFR_SYSTEM, LogLevel.WARN, "Could not initialize JDK events. " + e.getMessage());
        }
    }

    public static void addInstrumentation() {
        try {

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

                    Logger.log(LogTag.JFR_SYSTEM, LogLevel.TRACE, "Processing instrumentation class: " + c);
                }
                return new JIClassInstrumentation(instrumentationClasses[i], klass, oldBytes).getNewBytes();
            }
        }
        return oldBytes;
    }

    public static void remove() {
        RequestEngine.removeHook(emitExceptionStatistics);
        RequestEngine.removeHook(emitDirectBufferStatistics);

        RequestEngine.removeHook(emitContainerConfiguration);
        RequestEngine.removeHook(emitContainerCPUUsage);
        RequestEngine.removeHook(emitContainerCPUThrottling);
        RequestEngine.removeHook(emitContainerMemoryUsage);
        RequestEngine.removeHook(emitContainerIOUsage);
    }

    private static void emitDirectBufferStatistics() {
        DirectBufferStatisticsEvent e = new DirectBufferStatisticsEvent();
        e.commit();
    }
}

src/jdk.jfr/share/classes/jdk/jfr/events/DirectBufferStatisticsEvent.java:

package jdk.jfr.events;

import jdk.internal.misc.VM;
import jdk.internal.misc.VM.BufferPool;

import jdk.jfr.*;
import jdk.jfr.internal.Type;

@Name(Type.EVENT_NAME_PREFIX + "DirectBufferStatistics")
@Label("Direct Buffer Statistics")
@Description("Statistics of direct buffer")
public final class DirectBufferStatisticsEvent extends AbstractBufferStatisticsEvent {

    private static final BufferPool DIRECT_BUFFER_POOL = findPoolByName("direct");

    public DirectBufferStatisticsEvent() {
        super(DIRECT_BUFFER_POOL);
        this.maxCapacity = VM.maxDirectMemory();
    }

    @Label("Maximum Capacity")
    @Description("Maximum direct buffer capacity the process can use")
    @DataAmount
    final long maxCapacity;
}

Configuration enabled period
profiling true 5 s
default true 5 s

Examples 3
startTime long: millis
15548899134
startTime long: millis
667230712932
startTime long: millis
357788918703

ExceptionStatistics

profiling default startTime duration stackTrace 11 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/ExceptionStatisticsEvent.java

Category: Java Application / Statistics

Number of objects derived from java.lang.Throwable that have been created

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,
        ErrorThrownEvent.class,
        ActiveSettingEvent.class,
        ActiveRecordingEvent.class,
        jdk.internal.event.DeserializationEvent.class,
        jdk.internal.event.ProcessStartEvent.class,
        jdk.internal.event.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,
        jdk.internal.event.X509CertificateEvent.class,
        jdk.internal.event.X509ValidationEvent.class,

        DirectBufferStatisticsEvent.class

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

    private static boolean initializationTriggered;

    @SuppressWarnings("unchecked")
    public static synchronized void initialize() {
        try {
            if (initializationTriggered == false) {
                for (Class<?> mirrorEventClass : mirrorEventClasses) {
                    SecuritySupport.registerMirror(((Class<? extends Event>)mirrorEventClass));
                }
                for (Class<?> eventClass : eventClasses) {
                    SecuritySupport.registerEvent((Class<? extends Event>) eventClass);
                }

                RequestEngine.addTrustedJDKHook(ExceptionStatisticsEvent.class, emitExceptionStatistics);
                RequestEngine.addTrustedJDKHook(DirectBufferStatisticsEvent.class, emitDirectBufferStatistics);

                initializeContainerEvents();
                initializationTriggered = true;
            }
        } catch (Exception e) {
            Logger.log(LogTag.JFR_SYSTEM, LogLevel.WARN, "Could not initialize JDK events. " + e.getMessage());
        }
    }

    public static void addInstrumentation() {

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

        SecuritySupport.registerEvent(ContainerCPUUsageEvent.class);
        SecuritySupport.registerEvent(ContainerCPUThrottlingEvent.class);
        SecuritySupport.registerEvent(ContainerMemoryUsageEvent.class);
        SecuritySupport.registerEvent(ContainerIOUsageEvent.class);

        RequestEngine.addTrustedJDKHook(ContainerConfigurationEvent.class, emitContainerConfiguration);
        RequestEngine.addTrustedJDKHook(ContainerCPUUsageEvent.class, emitContainerCPUUsage);
        RequestEngine.addTrustedJDKHook(ContainerCPUThrottlingEvent.class, emitContainerCPUThrottling);
        RequestEngine.addTrustedJDKHook(ContainerMemoryUsageEvent.class, emitContainerMemoryUsage);
        RequestEngine.addTrustedJDKHook(ContainerIOUsageEvent.class, emitContainerIOUsage);
    }

    private static void emitExceptionStatistics() {
        ExceptionStatisticsEvent t = new ExceptionStatisticsEvent();
        t.throwables = ThrowableTracer.numThrowables();
        t.commit();
    }

    private static void emitContainerConfiguration() {
        if (containerMetrics != null) {
            ContainerConfigurationEvent t = new ContainerConfigurationEvent();
            t.containerType = containerMetrics.getProvider();
            t.cpuSlicePeriod = containerMetrics.getCpuPeriod();
            t.cpuQuota = containerMetrics.getCpuQuota();
            t.cpuShares = containerMetrics.getCpuShares();

src/jdk.jfr/share/classes/jdk/jfr/events/ExceptionStatisticsEvent.java:

package jdk.jfr.events;

import jdk.jfr.Category;
import jdk.jfr.Description;
import jdk.jfr.Label;
import jdk.jfr.Name;
import jdk.jfr.StackTrace;
import jdk.jfr.internal.Type;

@Name(Type.EVENT_NAME_PREFIX + "ExceptionStatistics")
@Label("Exception Statistics")
@Category({ "Java Application", "Statistics" })
@Description("Number of objects derived from java.lang.Throwable that have been created")
@StackTrace(false)
public final class ExceptionStatisticsEvent extends AbstractJDKEvent {

    @Label("Exceptions Created")
    public long throwables;
}

Configuration enabled period
profiling true 1000 ms
default true 1000 ms

Field Type Description
throwables long Exceptions Created

Examples 3
startTime long: millis
342673820844
throwables long
2356018
startTime long: millis
675063028414
throwables long
2360133
startTime long: millis
22706032244
throwables long
1535

Java Development Kit

Deserialization

startTime duration stackTrace 11 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/DeserializationEvent.java

Category: Java Development Kit / Serialization

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Results of deserialization and ObjectInputFilter checks

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/java.base/share/classes/java/io/ObjectInputStream.java:

        ObjectInputFilter next = Config.getSerialFilterFactory()
                .apply(serialFilter, filter);
        if (serialFilter != null && next == null) {
            throw new IllegalStateException("filter can not be replaced with null filter");
        }
        serialFilter = next;
    }

    /**
     * Invokes the deserialization filter if non-null.
     *
     * If the filter rejects or an exception is thrown, throws InvalidClassException.
     *
     * Logs and/or commits a {@code DeserializationEvent}, if configured.
     *
     * @param clazz the class; may be null
     * @param arrayLength the array length requested; use {@code -1} if not creating an array
     * @throws InvalidClassException if it rejected by the filter or
     *        a {@link RuntimeException} is thrown
     */
    private void filterCheck(Class<?> clazz, int arrayLength)
            throws InvalidClassException {
        // Info about the stream is not available if overridden by subclass, return 0
        long bytesRead = (bin == null) ? 0 : bin.getBytesRead();
        RuntimeException ex = null;

src/java.base/share/classes/java/io/ObjectInputStream.java:

                status = ObjectInputFilter.Status.REJECTED;
                ex = e;
            }
            if (Logging.filterLogger != null) {
                // Debug logging of filter checks that fail; Tracing for those that succeed
                Logging.filterLogger.log(status == null || status == ObjectInputFilter.Status.REJECTED
                                ? Logger.Level.DEBUG
                                : Logger.Level.TRACE,
                        "ObjectInputFilter {0}: {1}, array length: {2}, nRefs: {3}, depth: {4}, bytes: {5}, ex: {6}",
                        status, clazz, arrayLength, totalObjectRefs, depth, bytesRead,
                        Objects.toString(ex, "n/a"));
            }
        }
        DeserializationEvent event = new DeserializationEvent();
        if (event.shouldCommit()) {
            event.filterConfigured = serialFilter != null;
            event.filterStatus = status != null ? status.name() : null;
            event.type = clazz;
            event.arrayLength = arrayLength;
            event.objectReferences = totalObjectRefs;
            event.depth = depth;
            event.bytesRead = bytesRead;
            event.exceptionType = ex != null ? ex.getClass() : null;
            event.exceptionMessage = ex != null ? ex.getMessage() : null;
            event.commit();

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

public final class JDKEvents {
    private static final Class<?>[] mirrorEventClasses = {
        DeserializationEvent.class,
        ProcessStartEvent.class,
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,

src/jdk.jfr/share/classes/jdk/jfr/events/DeserializationEvent.java:

package jdk.jfr.events;

import jdk.jfr.Category;
import jdk.jfr.Description;
import jdk.jfr.Label;
import jdk.jfr.Name;
import jdk.jfr.internal.MirrorEvent;

@Category({"Java Development Kit", "Serialization"})
@Label("Deserialization")
@Name("jdk.Deserialization")
@Description("Results of deserialization and ObjectInputFilter checks")
@MirrorEvent(className = "jdk.internal.event.DeserializationEvent")
public final class DeserializationEvent extends AbstractJDKEvent {

    @Label("Filter Configured")
    public boolean filterConfigured;

    @Label("Filter Status")
    public String filterStatus;

    @Label ("Type")
    public Class<?> type;

    @Label ("Array Length")

src/java.base/share/classes/jdk/internal/event/DeserializationEvent.java:

package jdk.internal.event;

/**
 * Event details relating to deserialization.
 */

public final class DeserializationEvent extends Event {
    public boolean filterConfigured;
    public String filterStatus;
    public Class<?> type;
    public int arrayLength;
    public long objectReferences;
    public long depth;
    public long bytesRead;
    public Class<?> exceptionType;
    public String exceptionMessage;
}

Configuration enabled stackTrace
profiling false true
default false true

Field Type Description
filterConfigured boolean Filter Configured
filterStatus string Filter Status
type Class Type
arrayLength int Array Length
objectReferences long Object References
depth long Depth
bytesRead long Bytes Read
exceptionType Class Exception Type
exceptionMessage string Exception Message

Examples 3
arrayLength int
-1
bytesRead long
110457
depth long
6
exceptionMessage string
null
exceptionType Class
null
filterConfigured boolean
false
filterStatus string
null
objectReferences long
2581
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
304
lineNumber int
1348
method Method
descriptor string
(Ljava/lang/Class;I)V
hidden boolean
false
modifiers int
2
name string
filterCheck
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/io/ObjectInputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/io
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
329678465537
type Class
null
arrayLength int
-1
bytesRead long
18131
depth long
14
exceptionMessage string
null
exceptionType Class
null
filterConfigured boolean
false
filterStatus string
null
objectReferences long
229
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
304
lineNumber int
1348
method Method
descriptor string
(Ljava/lang/Class;I)V
hidden boolean
false
modifiers int
2
name string
filterCheck
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/io/ObjectInputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/io
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
623185833069
type Class
null
arrayLength int
-1
bytesRead long
45
depth long
1
exceptionMessage string
null
exceptionType Class
null
filterConfigured boolean
false
filterStatus string
null
objectReferences long
1
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
304
lineNumber int
1348
method Method
descriptor string
(Ljava/lang/Class;I)V
hidden boolean
false
modifiers int
2
name string
filterCheck
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/io/ObjectInputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/io
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
912862784
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/ArrayList
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/util

X509Certificate

startTime duration stackTrace 11 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/X509CertificateEvent.java

Category: Java Development Kit / Security

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Details of X.509 Certificate parsed by JDK

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

public final class JDKEvents {
    private static final Class<?>[] mirrorEventClasses = {
        DeserializationEvent.class,
        ProcessStartEvent.class,
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,

src/jdk.jfr/share/classes/jdk/jfr/events/X509CertificateEvent.java:

package jdk.jfr.events;

import jdk.jfr.*;
import jdk.jfr.internal.MirrorEvent;

@Category({"Java Development Kit", "Security"})
@Label("X509 Certificate")
@Name("jdk.X509Certificate")
@Description("Details of X.509 Certificate parsed by JDK")
@MirrorEvent(className = "jdk.internal.event.X509CertificateEvent")
public final class X509CertificateEvent extends AbstractJDKEvent {
    @Label("Signature Algorithm")
    public String algorithm;

    @Label("Serial Number")
    public String serialNumber;

    @Label("Subject")
    public String subject;

    @Label("Issuer")
    public String issuer;

    @Label("Key Type")

src/java.base/share/classes/jdk/internal/event/X509CertificateEvent.java:

package jdk.internal.event;


/**
 * Event recording details of X.509 Certificate.
 */

public final class X509CertificateEvent extends Event {
    public String algorithm;
    public String serialNumber;
    public String subject;
    public String issuer;
    public String keyType;
    public int keyLength;
    public long certificateId;
    public long validFrom;
    public long validUntil;
}

src/java.base/share/classes/sun/security/provider/X509Factory.java:

                length = (highByte << 24 ) | (nextByte << 16) |
                        (midByte << 8) | lowByte;
            } else { // ignore longer length forms
                throw new IOException("Invalid BER/DER data (too huge?)");
            }
            if (readFully(is, bout, length) != length) {
                throw new IOException("Incomplete BER/DER data");
            }
        }
        return tag;
    }

    private void commitEvent(X509CertImpl info) {
        X509CertificateEvent xce = new X509CertificateEvent();
        if (xce.shouldCommit() || EventHelper.isLoggingSecurity()) {
            PublicKey pKey = info.getPublicKey();
            String algId = info.getSigAlgName();
            String serNum = info.getSerialNumber().toString(16);
            String subject = info.getSubjectDN().getName();
            String issuer = info.getIssuerDN().getName();
            String keyType = pKey.getAlgorithm();
            int length = KeyUtil.getKeySize(pKey);
            int hashCode = info.hashCode();
            long beginDate = info.getNotBefore().getTime();
            long endDate = info.getNotAfter().getTime();

Configuration enabled stackTrace
profiling false true
default false true

Field Type Description
algorithm string Signature Algorithm
serialNumber string Serial Number
subject string Subject
issuer string Issuer
keyType string Key Type
keyLength int Key Length
certificateId long: certificateId Certificate Id
validFrom long: epochmillis Valid From
validUntil long: epochmillis Valid Until

Examples 3
algorithm string
SHA256withRSA
certificateId long: certificateId
1729119956
issuer string
CN=Actalis Authentication Root CA, O=Actalis S.p.A./03358520967, L=Milan, C=IT
keyLength int
4096
keyType string
RSA
serialNumber string
57:0a:11:97:42:c4:e3:cc
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
185
lineNumber int
128
method Method
descriptor string
(Ljava/security/cert/Certificate;)V
hidden boolean
false
modifiers int
9
name string
tryCommitCertEvent
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
sun/security/jca/JCAUtil
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
sun/security/jca
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
673823613
subject string
CN=Actalis Authentication Root CA, O=Actalis S.p.A./03358520967, L=Milan, C=IT
validFrom long: epochmillis
1316690522000
validUntil long: epochmillis
1916306522000
algorithm string
SHA256withRSA
certificateId long: certificateId
1264269967
issuer string
CN=Buypass Class 3 Root CA, O=Buypass AS-983163327, C=NO
keyLength int
4096
keyType string
RSA
serialNumber string
02
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
185
lineNumber int
128
method Method
descriptor string
(Ljava/security/cert/Certificate;)V
hidden boolean
false
modifiers int
9
name string
tryCommitCertEvent
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
sun/security/jca/JCAUtil
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
sun/security/jca
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
707637776
subject string
CN=Buypass Class 3 Root CA, O=Buypass AS-983163327, C=NO
validFrom long: epochmillis
1288081738000
validUntil long: epochmillis
2234852938000
algorithm string
SHA1withRSA
certificateId long: certificateId
3966431214
issuer string
CN=Entrust.net Certification Authority (2048), OU=(c) 1999 Entrust.net Limited, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), O=Entrust.net
keyLength int
2048
keyType string
RSA
serialNumber string
38:63:de:f8
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
185
lineNumber int
128
method Method
descriptor string
(Ljava/security/cert/Certificate;)V
hidden boolean
false
modifiers int
9
name string
tryCommitCertEvent
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
sun/security/jca/JCAUtil
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
sun/security/jca
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
601520277
subject string
CN=Entrust.net Certification Authority (2048), OU=(c) 1999 Entrust.net Limited, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), O=Entrust.net
validFrom long: epochmillis
946057851000
validUntil long: epochmillis
1879596912000

SecurityPropertyModification

startTime duration stackTrace 11 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/SecurityPropertyModificationEvent.java

Category: Java Development Kit / Security

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Modification of Security property

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/java.base/share/classes/java/security/Security.java:

     *          if a security manager exists and its {@link
     *          java.lang.SecurityManager#checkPermission} method
     *          denies access to set the specified security property value
     * @throws  NullPointerException if key or datum is null
     *
     * @see #getProperty
     * @see java.security.SecurityPermission
     */
    public static void setProperty(String key, String datum) {
        check("setProperty." + key);
        props.put(key, datum);
        invalidateSMCache(key);  /* See below. */

        SecurityPropertyModificationEvent spe = new SecurityPropertyModificationEvent();
        // following is a no-op if event is disabled
        spe.key = key;
        spe.value = datum;
        spe.commit();

        if (EventHelper.isLoggingSecurity()) {
            EventHelper.logSecurityPropertyEvent(key, datum);
        }
    }

    /*

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

public final class JDKEvents {
    private static final Class<?>[] mirrorEventClasses = {
        DeserializationEvent.class,
        ProcessStartEvent.class,
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,

src/jdk.jfr/share/classes/jdk/jfr/events/SecurityPropertyModificationEvent.java:

package jdk.jfr.events;

import jdk.jfr.*;
import jdk.jfr.internal.MirrorEvent;

@Category({"Java Development Kit", "Security"})
@Label("Security Property Modification")
@Name("jdk.SecurityPropertyModification")
@Description("Modification of Security property")
@MirrorEvent(className = "jdk.internal.event.SecurityPropertyModificationEvent")
public final class SecurityPropertyModificationEvent extends AbstractJDKEvent {
    @Label("Key")
    public String key;

    @Label("Value")
    public String value;
}

src/java.base/share/classes/jdk/internal/event/SecurityPropertyModificationEvent.java:

package jdk.internal.event;

/**
 * Event details relating to the modification of a Security property.
 */

public final class SecurityPropertyModificationEvent extends Event {
    public String key;
    public String value;
}

Configuration enabled stackTrace
profiling false true
default false true

Field Type Description
key string Key
value string Value

Examples 3
key string
jdk.disabled.namedCurves
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
59
lineNumber int
67
method Method
descriptor string
([Ljava/lang/String;)V
hidden boolean
false
modifiers int
9
name string
main
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1131275878
value string
secp112r1
key string
jdk.disabled.namedCurves
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
59
lineNumber int
67
method Method
descriptor string
([Ljava/lang/String;)V
hidden boolean
false
modifiers int
9
name string
main
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1105249103
value string
secp112r1
key string
jdk.disabled.namedCurves
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
59
lineNumber int
67
method Method
descriptor string
([Ljava/lang/String;)V
hidden boolean
false
modifiers int
9
name string
main
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
941932978
value string
secp112r1

TLSHandshake

startTime duration stackTrace 11 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/TLSHandshakeEvent.java

Category: Java Development Kit / Security

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Parameters used in TLS Handshake

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/java.base/share/classes/sun/security/ssl/Finished.java:

            // May need to retransmit the last flight for DTLS.
            if (!shc.sslContext.isDTLS()) {
                shc.conContext.finishHandshake();
            }
            recordEvent(shc.conContext.conSession);

            //
            // produce
            NewSessionTicket.t13PosthandshakeProducer.produce(shc);
        }
    }

    private static void recordEvent(SSLSessionImpl session) {
        TLSHandshakeEvent event = new TLSHandshakeEvent();
        if (event.shouldCommit() || EventHelper.isLoggingSecurity()) {
            int peerCertificateId = 0;
            try {
                // use hash code for Id
                peerCertificateId = session
                        .getCertificateChain()[0]
                        .hashCode();
            } catch (SSLPeerUnverifiedException e) {
                 // not verified msg
            }
            if (event.shouldCommit()) {

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

public final class JDKEvents {
    private static final Class<?>[] mirrorEventClasses = {
        DeserializationEvent.class,
        ProcessStartEvent.class,
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,

src/jdk.jfr/share/classes/jdk/jfr/events/TLSHandshakeEvent.java:

package jdk.jfr.events;

import jdk.jfr.Category;
import jdk.jfr.Description;
import jdk.jfr.Label;
import jdk.jfr.Name;
import jdk.jfr.internal.MirrorEvent;

@Category({"Java Development Kit", "Security"})
@Label("TLS Handshake")
@Name("jdk.TLSHandshake")
@Description("Parameters used in TLS Handshake")
@MirrorEvent(className = "jdk.internal.event.TLSHandshakeEvent")
public final class TLSHandshakeEvent extends AbstractJDKEvent {
    @Label("Peer Host")
    public String peerHost;

    @Label("Peer Port")
    public int peerPort;

    @Label("Protocol Version")
    public String protocolVersion;

    @Label("Cipher Suite")
    public String cipherSuite;

src/java.base/share/classes/jdk/internal/event/TLSHandshakeEvent.java:

package jdk.internal.event;

/**
 * Event recording details of successful TLS handshakes.
 */

public final class TLSHandshakeEvent extends Event {
    public String peerHost;
    public int peerPort;
    public String protocolVersion;
    public String cipherSuite;
    public long certificateId;
}

Configuration enabled stackTrace
profiling false true
default false true

Field Type Description
peerHost string Peer Host
peerPort int Peer Port
protocolVersion string Protocol Version
cipherSuite string Cipher Suite
certificateId long: certificateId Certificate Id Peer Certificate Id

Examples 3
certificateId long: certificateId
998794918
cipherSuite string
TLS_AES_256_GCM_SHA384
peerHost string
example.com
peerPort int
443
protocolVersion string
TLSv1.3
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
422
lineNumber int
768
method Method
descriptor string
(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
hidden boolean
false
modifiers int
2
name string
onProduceFinished
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
26
name string
sun/security/ssl/Finished$T13FinishedProducer
package Package
exported boolean
false
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
sun/security/ssl
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
876234473
certificateId long: certificateId
998794918
cipherSuite string
TLS_AES_256_GCM_SHA384
peerHost string
example.com
peerPort int
443
protocolVersion string
TLSv1.3
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
422
lineNumber int
768
method Method
descriptor string
(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
hidden boolean
false
modifiers int
2
name string
onProduceFinished
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
26
name string
sun/security/ssl/Finished$T13FinishedProducer
package Package
exported boolean
false
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
sun/security/ssl
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1044918963
certificateId long: certificateId
998794918
cipherSuite string
TLS_AES_256_GCM_SHA384
peerHost string
example.com
peerPort int
443
protocolVersion string
TLSv1.3
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
422
lineNumber int
768
method Method
descriptor string
(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
hidden boolean
false
modifiers int
2
name string
onProduceFinished
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
26
name string
sun/security/ssl/Finished$T13FinishedProducer
package Package
exported boolean
false
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
sun/security/ssl
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1070838992

X509Validation

startTime duration stackTrace 11 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/X509ValidationEvent.java

Category: Java Development Kit / Security

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Serial numbers from X.509 Certificates forming chain of trust

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

public final class JDKEvents {
    private static final Class<?>[] mirrorEventClasses = {
        DeserializationEvent.class,
        ProcessStartEvent.class,
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,
        ErrorThrownEvent.class,

src/jdk.jfr/share/classes/jdk/jfr/events/X509ValidationEvent.java:

package jdk.jfr.events;

import jdk.jfr.*;
import jdk.jfr.internal.MirrorEvent;

@Category({"Java Development Kit", "Security"})
@Label("X509 Validation")
@Name("jdk.X509Validation")
@Description("Serial numbers from X.509 Certificates forming chain of trust")
@MirrorEvent(className = "jdk.internal.event.X509ValidationEvent")
public final class X509ValidationEvent extends AbstractJDKEvent {
    @CertificateId
    @Label("Certificate Id")
    public long certificateId;

    @Label("Certificate Position")
    @Description("Certificate position in chain of trust, 1 = trust anchor")
    public int certificatePosition;

    @Label("Validation Counter")
    public long validationCounter;
}

src/java.base/share/classes/jdk/internal/event/X509ValidationEvent.java:

package jdk.internal.event;

/**
 * Event recording details of X.509 Certificate serial numbers
 * used in X509 cert path validation.
 */

public final class X509ValidationEvent extends Event {
    public long certificateId;
    public int certificatePosition;
    public long validationCounter;
}

src/java.base/share/classes/sun/security/provider/certpath/PKIXCertPathValidator.java:

        // only add a RevocationChecker if revocation is enabled and
        // a PKIXRevocationChecker has not already been added
        if (params.revocationEnabled() && !revCheckerAdded) {
            certPathCheckers.add(new RevocationChecker(anchor, params));
        }
        // add user-specified checkers
        certPathCheckers.addAll(checkers);

        PKIXMasterCertPathValidator.validate(params.certPath(),
                                             params.certificates(),
                                             certPathCheckers);

        X509ValidationEvent xve = new X509ValidationEvent();
        if (xve.shouldCommit() || EventHelper.isLoggingSecurity()) {
            int[] certIds = params.certificates().stream()
                    .mapToInt(Certificate::hashCode)
                    .toArray();
            int anchorCertId = (anchorCert != null) ?
                anchorCert.hashCode() : anchor.getCAPublicKey().hashCode();
            if (xve.shouldCommit()) {
                xve.certificateId = anchorCertId;
                int certificatePos = 1; // most trusted CA
                xve.certificatePosition = certificatePos;
                xve.validationCounter = validationCounter.incrementAndGet();

Configuration enabled stackTrace
profiling false true
default false true

Field Type Description
certificateId long: certificateId Certificate Id
certificatePosition int Certificate Position Certificate position in chain of trust, 1 = trust anchor
validationCounter long Validation Counter

Examples 3
certificateId long: certificateId
2389201834
certificatePosition int
2
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
520
lineNumber int
247
method Method
descriptor string
(Ljava/security/cert/TrustAnchor;Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult;
hidden boolean
false
modifiers int
10
name string
validate
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
sun/security/provider/certpath/PKIXCertPathValidator
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
sun/security/provider/certpath
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1005997436
validationCounter long
1
certificateId long: certificateId
1917811103
certificatePosition int
3
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
520
lineNumber int
247
method Method
descriptor string
(Ljava/security/cert/TrustAnchor;Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult;
hidden boolean
false
modifiers int
10
name string
validate
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
sun/security/provider/certpath/PKIXCertPathValidator
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
sun/security/provider/certpath
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1028737918
validationCounter long
1
certificateId long: certificateId
1917811103
certificatePosition int
3
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
520
lineNumber int
247
method Method
descriptor string
(Ljava/security/cert/TrustAnchor;Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult;
hidden boolean
false
modifiers int
10
name string
validate
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
sun/security/provider/certpath/PKIXCertPathValidator
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
sun/security/provider/certpath
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
848573044
validationCounter long
1

Operating System

OSInformation

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Operating System

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

  event.set_jvmVersion(VM_Version::internal_vm_info_string());
  event.set_javaArguments(Arguments::java_command());
  event.set_jvmArguments(Arguments::jvm_args());
  event.set_jvmFlags(Arguments::jvm_flags());
  event.set_jvmStartTime(Management::vm_init_done_time());
  event.set_pid(os::current_process_id());
  event.commit();
 }

TRACE_REQUEST_FUNC(OSInformation) {
  ResourceMark rm;
  char* os_name = NEW_RESOURCE_ARRAY(char, 2048);
  JfrOSInterface::os_version(&os_name);
  EventOSInformation event;
  event.set_osVersion(os_name);
  event.commit();
}

TRACE_REQUEST_FUNC(VirtualizationInformation) {
  EventVirtualizationInformation event;
  event.set_name(JfrOSInterface::virtualization_name());
  event.commit();
}

TRACE_REQUEST_FUNC(ModuleRequire) {

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
osVersion string OS Version

Examples 3
osVersion string
DISTRIB_ID=Ubuntu DISTRIB_RELEASE=24.04 DISTRIB_CODENAME=noble DISTRIB_DESCRIPTION="Ubuntu 24.04.4 LTS" uname: Linux 6.17.0-1022-azure #22-Ubuntu SMP Mon Jul 27 17:24:03 UTC 2026 x86_64 libc: glibc 2.39 NPTL 2.39
startTime long: millis
679219028865
osVersion string
DISTRIB_ID=Ubuntu DISTRIB_RELEASE=24.04 DISTRIB_CODENAME=noble DISTRIB_DESCRIPTION="Ubuntu 24.04.4 LTS" uname: Linux 6.17.0-1022-azure #22-Ubuntu SMP Mon Jul 27 17:24:03 UTC 2026 x86_64 libc: glibc 2.39 NPTL 2.39
startTime long: millis
21676574257
osVersion string
DISTRIB_ID=Ubuntu DISTRIB_RELEASE=24.04 DISTRIB_CODENAME=noble DISTRIB_DESCRIPTION="Ubuntu 24.04.4 LTS" uname: Linux 6.17.0-1022-azure #22-Ubuntu SMP Mon Jul 27 17:24:03 UTC 2026 x86_64 libc: glibc 2.39 NPTL 2.39
startTime long: millis
342492784325

VirtualizationInformation

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Operating System

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

  event.commit();
 }

TRACE_REQUEST_FUNC(OSInformation) {
  ResourceMark rm;
  char* os_name = NEW_RESOURCE_ARRAY(char, 2048);
  JfrOSInterface::os_version(&os_name);
  EventOSInformation event;
  event.set_osVersion(os_name);
  event.commit();
}

TRACE_REQUEST_FUNC(VirtualizationInformation) {
  EventVirtualizationInformation event;
  event.set_name(JfrOSInterface::virtualization_name());
  event.commit();
}

TRACE_REQUEST_FUNC(ModuleRequire) {
  JfrModuleEvent::generate_module_dependency_events();
}

TRACE_REQUEST_FUNC(ModuleExport) {
  JfrModuleEvent::generate_module_export_events();
}

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
name string Name

Examples 3
name string
Hyper-V virtualization
startTime long: millis
21676575085
name string
Hyper-V virtualization
startTime long: millis
640709798893
name string
Hyper-V virtualization
startTime long: millis
335746957059

InitialEnvironmentVariable

profiling default startTime end of every chunk 11 17 21 25 27 28

Category: Operating System

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrOSInterface.cpp:

  } else if (vrt == PowerFullPartitionMode) {
    return "Power full partition";
  }

  return "No virtualization detected";
}

int JfrOSInterface::generate_initial_environment_variable_events() {
  if (os::get_environ() == NULL) {
    return OS_ERR;
  }

  if (EventInitialEnvironmentVariable::is_enabled()) {
    // One time stamp for all events, so they can be grouped together
    JfrTicks time_stamp = JfrTicks::now();
    for (char** p = os::get_environ(); *p != NULL; p++) {
      char* variable = *p;
      char* equal_sign = strchr(variable, '=');
      if (equal_sign != NULL) {
        // Extract key/value
        ResourceMark rm;
        ptrdiff_t key_length = equal_sign - variable;
        char* key = NEW_RESOURCE_ARRAY(char, key_length + 1);
        char* value = equal_sign + 1;
        strncpy(key, variable, key_length);
        key[key_length] = '\0';
        EventInitialEnvironmentVariable event(UNTIMED);
        event.set_endtime(time_stamp);
        event.set_key(key);
        event.set_value(value);
        event.commit();
      }
    }
  }
  return OS_OK;
}

int JfrOSInterface::system_processes(SystemProcess** sys_processes, int* no_of_sys_processes) {

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
key string Key
value string Value

Examples 3
key string
GITHUB_EVENT_NAME
startTime long: millis
270699792
value string
schedule
key string
GITHUB_RUN_ATTEMPT
startTime long: millis
330135371774
value string
1
key string
ANDROID_NDK_HOME
startTime long: millis
623778356674
value string
/usr/local/lib/android/sdk/ndk/27.3.13750724

SystemProcess

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Operating System

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

    while (processes != NULL) {
      SystemProcess* tmp = processes;
      const char* info = processes->command_line();
      if (info == NULL) {
         info = processes->path();
      }
      if (info == NULL) {
         info = processes->name();
      }
      if (info == NULL) {
         info = "?";
      }
      jio_snprintf(pid_buf, sizeof(pid_buf), "%d", processes->pid());
      EventSystemProcess event(UNTIMED);
      event.set_pid(pid_buf);
      event.set_commandLine(info);
      event.set_starttime(start_time);
      event.set_endtime(end_time);
      event.commit();
      processes = processes->next();
      delete tmp;
    }
  }
}

Configuration enabled period
profiling true endChunk
default true endChunk

Field Type Description
pid string Process Identifier
commandLine string Command Line

Examples 3
commandLine string
/usr/lib/linux-tools/6.17.0-1022-azure/hv_kvp_daemon -n
pid string
363
startTime long: millis
19131207485
commandLine string
kworker/u16:6-events_power_efficient
pid string
86
startTime long: millis
5552580465
commandLine string
kworker/R-mlx5e_arfs
pid string
396
startTime long: millis
23681006477

CPUInformation

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Operating System / Processor

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

TRACE_REQUEST_FUNC(CPUInformation) {
  CPUInformation cpu_info;
  int ret_val = JfrOSInterface::cpu_information(cpu_info);
  if (ret_val == OS_ERR) {
    log_debug(jfr, system)( "Unable to generate requestable event CPUInformation");
    return;
  }
  if (ret_val == FUNCTIONALITY_NOT_IMPLEMENTED) {
     return;
  }
  if (ret_val == OS_OK) {
    EventCPUInformation event;
    event.set_cpu(cpu_info.cpu_name());
    event.set_description(cpu_info.cpu_description());
    event.set_sockets(cpu_info.number_of_sockets());
    event.set_cores(cpu_info.number_of_cores());
    event.set_hwThreads(cpu_info.number_of_hardware_threads());
    event.commit();
  }
}

TRACE_REQUEST_FUNC(CPULoad) {
  double u = 0; // user time

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
cpu string Type
description string Description
sockets uint Sockets
cores uint Cores
hwThreads uint Hardware Threads

Examples 3
cores uint
2
cpu string
Intel (null) (HT) SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 Core Intel64
description string
Brand: Intel(R) Xeon(R) 6973P-C, Vendor: GenuineIntel Family: <unknown> (0x6), Model: <unknown> (0xad), Stepping: 0x1 Ext. family: 0x0, Ext. model: 0xa, Type: 0x0, Signature: 0x000a06d1 Features: ebx: 0x03040800, ecx: 0xfffa3223, edx: 0x1f8bfbff Ext. features: eax: 0x00000000, ebx: 0x00000000, ecx:
hwThreads uint
4
sockets uint
1
startTime long: millis
348280058045
cores uint
2
cpu string
Intel (null) (HT) SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 Core Intel64
description string
Brand: Intel(R) Xeon(R) 6973P-C, Vendor: GenuineIntel Family: <unknown> (0x6), Model: <unknown> (0xad), Stepping: 0x1 Ext. family: 0x0, Ext. model: 0xa, Type: 0x0, Signature: 0x000a06d1 Features: ebx: 0x03040800, ecx: 0xfffa3223, edx: 0x1f8bfbff Ext. features: eax: 0x00000000, ebx: 0x00000000, ecx:
hwThreads uint
4
sockets uint
1
startTime long: millis
270774119
cores uint
16
cpu string
AMD Unknown x86 (HT) SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 SSE4A AMD64
description string
Brand: AMD EPYC 9V74 80-Core Processor , Vendor: AuthenticAMD Family: Unknown x86 (0x19), Model: <unknown> (0x11), Stepping: 0x1 Ext. family: 0xa, Ext. model: 0x1, Type: 0x0, Signature: 0x00a10f11 Features: ebx: 0x00100800, ecx: 0xfeda3203, edx: 0x178bfbff Ext. features: eax: 0x00a10f
hwThreads uint
4
sockets uint
1
startTime long: millis
643965374817

CPUTimeStampCounter

profiling default startTime duration end of every chunk 11 17 21 25 27 28

Category: Operating System / Processor

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

    event.commit();
  }
}

TRACE_REQUEST_FUNC(ThreadCPULoad) {
  JfrThreadCPULoadEvent::send_events();
}

TRACE_REQUEST_FUNC(NetworkUtilization) {
  JfrNetworkUtilization::send_events();
}

TRACE_REQUEST_FUNC(CPUTimeStampCounter) {
  EventCPUTimeStampCounter event;
  event.set_fastTimeEnabled(JfrTime::is_ft_enabled());
  event.set_fastTimeAutoEnabled(JfrTime::is_ft_supported());
  event.set_osFrequency(os::elapsed_frequency());
  event.set_fastTimeFrequency(JfrTime::frequency());
  event.commit();
}

TRACE_REQUEST_FUNC(SystemProcess) {
  char pid_buf[16];
  SystemProcess* processes = NULL;
  int num_of_processes = 0;

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
fastTimeEnabled boolean Fast Time
fastTimeAutoEnabled boolean Trusted Platform
osFrequency long: hertz OS Frequency
fastTimeFrequency long: hertz Fast Time Frequency

Examples 3
fastTimeAutoEnabled boolean
true
fastTimeEnabled boolean
false
fastTimeFrequency long: hertz
1000000000
osFrequency long: hertz
1000000000
startTime long: millis
679219052831
fastTimeAutoEnabled boolean
true
fastTimeEnabled boolean
false
fastTimeFrequency long: hertz
1000000000
osFrequency long: hertz
1000000000
startTime long: millis
21676595663
fastTimeAutoEnabled boolean
true
fastTimeEnabled boolean
false
fastTimeFrequency long: hertz
1000000000
osFrequency long: hertz
1000000000
startTime long: millis
351345280573

CPULoad

profiling default startTime duration every chunk 11 17 21 25 27 28

Category: Operating System / Processor

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

OS CPU Load

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

  double t = 0; // total time
  int ret_val = OS_ERR;
  {
    // Can take some time on certain platforms, especially under heavy load.
    // Transition to native to avoid unnecessary stalls for pending safepoint synchronizations.
    ThreadToNativeFromVM transition(JavaThread::current());
    ret_val = JfrOSInterface::cpu_loads_process(&u, &s, &t);
  }
  if (ret_val == OS_ERR) {
    log_debug(jfr, system)( "Unable to generate requestable event CPULoad");
    return;
  }
  if (ret_val == OS_OK) {
    EventCPULoad event;
    event.set_jvmUser((float)u);
    event.set_jvmSystem((float)s);
    event.set_machineTotal((float)t);
    event.commit();
  }
}

TRACE_REQUEST_FUNC(ThreadCPULoad) {
  JfrThreadCPULoadEvent::send_events();
}

Configuration enabled period
profiling true 1000 ms
default true 1000 ms

Field Type Description
jvmUser float: percentage JVM User
jvmSystem float: percentage JVM System
machineTotal float: percentage Machine Total

Examples 3
jvmSystem float: percentage
0.026990553
jvmUser float: percentage
0.6018893
machineTotal float: percentage
0.6288799
startTime long: millis
334225753587
jvmSystem float: percentage
0.032828283
jvmUser float: percentage
0.34848484
machineTotal float: percentage
0.38131315
startTime long: millis
5363546967
jvmSystem float: percentage
0.016241299
jvmUser float: percentage
0.4013921
machineTotal float: percentage
0.4176334
startTime long: millis
669328313709

ThreadCPULoad

profiling default startTime duration eventThread every chunk 11 17 21 25 27 28

Category: Operating System / Processor

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrThreadCPULoadEvent.cpp:

int JfrThreadCPULoadEvent::get_processor_count() {
  int cur_processor_count = os::active_processor_count();
  int last_processor_count = _last_active_processor_count;
  _last_active_processor_count = cur_processor_count;

  // If the number of processors decreases, we don't know at what point during
  // the sample interval this happened, so use the largest number to try
  // to avoid percentages above 100%
  return MAX2(cur_processor_count, last_processor_count);
}

// Returns false if the thread has not been scheduled since the last call to updateEvent
// (i.e. the delta for both system and user time is 0 milliseconds)
bool JfrThreadCPULoadEvent::update_event(EventThreadCPULoad& event, JavaThread* thread, jlong cur_wallclock_time, int processor_count) {
  JfrThreadLocal* const tl = thread->jfr_thread_local();

  jlong cur_cpu_time = os::thread_cpu_time(thread, true);
  jlong prev_cpu_time = tl->get_cpu_time();

  jlong prev_wallclock_time = tl->get_wallclock_time();
  tl->set_wallclock_time(cur_wallclock_time);

  // Threshold of 1 ms
  if (cur_cpu_time - prev_cpu_time < 1 * NANOSECS_PER_MILLISEC) {
    return false;

src/hotspot/share/jfr/periodic/jfrThreadCPULoadEvent.cpp:

  Thread* periodic_thread = Thread::current();
  JfrThreadLocal* const periodic_thread_tl = periodic_thread->jfr_thread_local();
  traceid periodic_thread_id = periodic_thread_tl->thread_id();
  const int processor_count = JfrThreadCPULoadEvent::get_processor_count();
  JfrTicks event_time = JfrTicks::now();
  jlong cur_wallclock_time = JfrThreadCPULoadEvent::get_wallclock_time();

  JfrJavaThreadIterator iter;
  int number_of_threads = 0;
  while (iter.has_next()) {
    JavaThread* const jt = iter.next();
    assert(jt != NULL, "invariant");
    ++number_of_threads;
    EventThreadCPULoad event(UNTIMED);
    if (JfrThreadCPULoadEvent::update_event(event, jt, cur_wallclock_time, processor_count)) {
      event.set_starttime(event_time);
      if (jt != periodic_thread) {
        // Commit reads the thread id from this thread's trace data, so put it there temporarily
        periodic_thread_tl->set_thread_id(JFR_THREAD_ID(jt));
      } else {
        periodic_thread_tl->set_thread_id(periodic_thread_id);
      }
      event.commit();
    }
  }
  log_trace(jfr)("Measured CPU usage for %d threads in %.3f milliseconds", number_of_threads,
    (double)(JfrTicks::now() - event_time).milliseconds());
  // Restore this thread's thread id
  periodic_thread_tl->set_thread_id(periodic_thread_id);
}

void JfrThreadCPULoadEvent::send_event_for_thread(JavaThread* jt) {
  EventThreadCPULoad event;
  if (event.should_commit()) {
    if (update_event(event, jt, get_wallclock_time(), get_processor_count())) {
      event.commit();
    }
  }
}

src/hotspot/share/jfr/periodic/jfrThreadCPULoadEvent.hpp:

#ifndef SHARE_JFR_PERIODIC_JFRTHREADCPULOADEVENT_HPP
#define SHARE_JFR_PERIODIC_JFRTHREADCPULOADEVENT_HPP

#include "jni.h"
#include "memory/allocation.hpp"

class JavaThread;
class EventThreadCPULoad;

class JfrThreadCPULoadEvent : public AllStatic {
  static int _last_active_processor_count;
 public:
  static jlong get_wallclock_time();
  static int get_processor_count();
  static bool update_event(EventThreadCPULoad& event, JavaThread* thread, jlong cur_wallclock_time, int processor_count);
  static void send_events();
  static void send_event_for_thread(JavaThread* jt);
};

#endif // SHARE_JFR_PERIODIC_JFRTHREADCPULOADEVENT_HPP

Configuration enabled period
profiling true 10 s
default true 10 s

Field Type Description
user float: percentage User Mode CPU Load User mode thread CPU load
system float: percentage System Mode CPU Load System mode thread CPU load

Examples 3
startTime long: millis
10467251550
system float: percentage
7.469541E-5
user float: percentage
0.0
startTime long: millis
644279674827
system float: percentage
2.1366817E-5
user float: percentage
0.0
startTime long: millis
351765617575
system float: percentage
2.8388784E-4
user float: percentage
3.703021E-4

ThreadContextSwitchRate

profiling default startTime duration every chunk 11 17 21 25 27 28

Category: Operating System / Processor

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

    // Can take some time on certain platforms, especially under heavy load.
    // Transition to native to avoid unnecessary stalls for pending safepoint synchronizations.
    ThreadToNativeFromVM transition(JavaThread::current());
    ret_val = JfrOSInterface::context_switch_rate(&rate);
  }
  if (ret_val == OS_ERR) {
    log_debug(jfr, system)( "Unable to generate requestable event ThreadContextSwitchRate");
    return;
  }
  if (ret_val == FUNCTIONALITY_NOT_IMPLEMENTED) {
    return;
  }
  if (ret_val == OS_OK) {
    EventThreadContextSwitchRate event;
    event.set_switchRate((float)rate + 0.0f);
    event.commit();
  }
}

#define SEND_FLAGS_OF_TYPE(eventType, flagType)                   \
  do {                                                            \
    JVMFlag *flag = JVMFlag::flags;                               \
    while (flag->name() != NULL) {                                \
      if (flag->is_ ## flagType()) {                              \
        if (flag->is_unlocked()) {                                \

Configuration enabled period
profiling true 10 s
default true 10 s

Field Type Description
switchRate float: hertz Switch Rate Number of context switches per second

Examples 3
startTime long: millis
10467369628
switchRate float: hertz
16900.955
startTime long: millis
675063835220
switchRate float: hertz
3121.2476
startTime long: millis
352611179458
switchRate float: hertz
11782.463

NetworkUtilization

profiling default startTime every chunk 11 17 21 25 27 28

Category: Operating System / Network

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrNetworkUtilization.cpp:

  static JfrTicks last_sample_instant;
  const JfrTicks cur_time = JfrTicks::now();
  if (cur_time > last_sample_instant) {
    const JfrTickspan interval = cur_time - last_sample_instant;
    for (NetworkInterface *cur = network_interfaces; cur != NULL; cur = cur->next()) {
      InterfaceEntry& entry = get_entry(cur);
      const uint64_t current_bytes_in = cur->get_bytes_in();
      const uint64_t current_bytes_out = cur->get_bytes_out();
      const uint64_t read_rate = rate_per_second(current_bytes_in, entry.bytes_in, interval);
      const uint64_t write_rate = rate_per_second(current_bytes_out, entry.bytes_out, interval);
      if (read_rate > 0 || write_rate > 0) {
        write_interface_constant(entry);
        EventNetworkUtilization event(UNTIMED);
        event.set_starttime(cur_time);
        event.set_endtime(cur_time);
        event.set_networkInterface(entry.id);
        event.set_readRate(8 * read_rate);
        event.set_writeRate(8 * write_rate);
        event.commit();
      }
      // update existing entry with new values
      entry.bytes_in = current_bytes_in;
      entry.bytes_out = current_bytes_out;
    }

Configuration enabled period
profiling true 5 s
default true 5 s

Field Type Description
networkInterface NetworkInterfaceName Network Interface Network Interface Name
readRate long: bits-per-second Read Rate Number of incoming bits per second
writeRate long: bits-per-second Write Rate Number of outgoing bits per second

Examples 3
networkInterface NetworkInterfaceName
eth0
readRate long: bits-per-second
6016
startTime long: millis
10467235816
writeRate long: bits-per-second
11624
networkInterface NetworkInterfaceName
ens1
readRate long: bits-per-second
14664
startTime long: millis
344679065070
writeRate long: bits-per-second
15848
networkInterface NetworkInterfaceName
eth0
readRate long: bits-per-second
6096
startTime long: millis
680529544367
writeRate long: bits-per-second
8504

PhysicalMemory

profiling default startTime duration every chunk 11 17 21 25 27 28

Category: Operating System / Memory

OS Physical Memory

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:

 *  PhysicalMemory event represents:
 *
 *  @totalSize == The amount of physical memory (hw) installed and reported by the OS, in bytes.
 *  @usedSize  == The amount of physical memory currently in use in the system (reserved/committed), in bytes.
 *
 *  Both fields are systemwide, i.e. represents the entire OS/HW environment.
 *  These fields do not include virtual memory.
 *
 *  If running inside a guest OS on top of a hypervisor in a virtualized environment,
 *  the total memory reported is the amount of memory configured for the guest OS by the hypervisor.
 */
TRACE_REQUEST_FUNC(PhysicalMemory) {
  u8 totalPhysicalMemory = os::physical_memory();
  EventPhysicalMemory event;
  event.set_totalSize(totalPhysicalMemory);
  event.set_usedSize(totalPhysicalMemory - os::available_memory());
  event.commit();
}

TRACE_REQUEST_FUNC(JavaThreadStatistics) {
  EventJavaThreadStatistics event;
  event.set_activeCount(ThreadService::get_live_thread_count());
  event.set_daemonCount(ThreadService::get_daemon_thread_count());
  event.set_accumulatedCount(ThreadService::get_total_thread_count());
  event.set_peakCount(ThreadService::get_peak_thread_count());

Configuration enabled period
profiling true everyChunk
default true everyChunk

Field Type Description
totalSize ulong: bytes Total Size Total amount of physical memory available to OS
usedSize ulong: bytes Used Size Total amount of physical memory in use

Examples 3
startTime long: millis
350284327194
totalSize ulong: bytes
16765374464
usedSize ulong: bytes
3958906880
startTime long: millis
656227876144
totalSize ulong: bytes
16766414848
usedSize ulong: bytes
6464471040
startTime long: millis
21676600620
totalSize ulong: bytes
16765374464
usedSize ulong: bytes
1200115712

ContainerIOUsage

profiling default startTime duration stackTrace 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/ContainerIOUsageEvent.java

Category: Operating System / File System

Container IO usage related information

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

        } catch (IllegalStateException ise) {
            throw ise;
        } catch (Exception e) {
            Logger.log(LogTag.JFR_SYSTEM, LogLevel.WARN, "Could not add instrumentation for JDK events. " + e.getMessage());
        }
    }

    private static void initializeContainerEvents() {
        containerMetrics = Container.metrics();
        SecuritySupport.registerEvent(ContainerConfigurationEvent.class);
        SecuritySupport.registerEvent(ContainerCPUUsageEvent.class);
        SecuritySupport.registerEvent(ContainerCPUThrottlingEvent.class);
        SecuritySupport.registerEvent(ContainerMemoryUsageEvent.class);
        SecuritySupport.registerEvent(ContainerIOUsageEvent.class);

        RequestEngine.addTrustedJDKHook(ContainerConfigurationEvent.class, emitContainerConfiguration);
        RequestEngine.addTrustedJDKHook(ContainerCPUUsageEvent.class, emitContainerCPUUsage);
        RequestEngine.addTrustedJDKHook(ContainerCPUThrottlingEvent.class, emitContainerCPUThrottling);
        RequestEngine.addTrustedJDKHook(ContainerMemoryUsageEvent.class, emitContainerMemoryUsage);
        RequestEngine.addTrustedJDKHook(ContainerIOUsageEvent.class, emitContainerIOUsage);
    }

    private static void emitExceptionStatistics() {
        ExceptionStatisticsEvent t = new ExceptionStatisticsEvent();
        t.throwables = ThrowableTracer.numThrowables();
        t.commit();
    }

    private static void emitContainerConfiguration() {
        if (containerMetrics != null) {
            ContainerConfigurationEvent t = new ContainerConfigurationEvent();

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

    private static void emitContainerMemoryUsage() {
        if (containerMetrics != null) {
            ContainerMemoryUsageEvent event = new ContainerMemoryUsageEvent();

            event.memoryFailCount = containerMetrics.getMemoryFailCount();
            event.memoryUsage = containerMetrics.getMemoryUsage();
            event.swapMemoryUsage = containerMetrics.getMemoryAndSwapUsage();
            event.commit();
        }
    }

    private static void emitContainerIOUsage() {
        if (containerMetrics != null) {
            ContainerIOUsageEvent event = new ContainerIOUsageEvent();

            event.serviceRequests = containerMetrics.getBlkIOServiceCount();
            event.dataTransferred = containerMetrics.getBlkIOServiced();
            event.commit();
        }
    }

    private static void emitContainerCPUThrottling() {
        if (containerMetrics != null) {
            ContainerCPUThrottlingEvent event = new ContainerCPUThrottlingEvent();

src/jdk.jfr/share/classes/jdk/jfr/events/ContainerIOUsageEvent.java:

@Name(Type.EVENT_NAME_PREFIX + "ContainerIOUsage")
@Label("Container IO Usage")
@Category({"Operating System", "File System"})
@Description("Container IO usage related information")
public class ContainerIOUsageEvent extends AbstractJDKEvent {

  @Label("Block IO Request Count")
  @Description("Number of block IO requests to the disk that have been issued by the container")
  public long serviceRequests;

  @Label("Block IO Transfer")
  @Description("Number of block IO bytes that have been transferred to/from the disk by the container")
  @DataAmount
  public long dataTransferred;
}

Configuration enabled period
profiling true 30 s
default true 30 s

Field Type Description
serviceRequests long Block IO Request Count Number of block IO requests to the disk that have been issued by the container
dataTransferred long: bytes Block IO Transfer Number of block IO bytes that have been transferred to/from the disk by the container

ContainerCPUUsage

profiling default startTime duration stackTrace 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/ContainerCPUUsageEvent.java

Category: Operating System / Processor

Container CPU usage related information

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

            list.add(java.lang.Error.class);
            Logger.log(LogTag.JFR_SYSTEM, LogLevel.INFO, "Retransformed JDK classes");
            jvm.retransformClasses(list.toArray(new Class<?>[list.size()]));
        } catch (IllegalStateException ise) {
            throw ise;
        } catch (Exception e) {
            Logger.log(LogTag.JFR_SYSTEM, LogLevel.WARN, "Could not add instrumentation for JDK events. " + e.getMessage());
        }
    }

    private static void initializeContainerEvents() {
        containerMetrics = Container.metrics();
        SecuritySupport.registerEvent(ContainerConfigurationEvent.class);
        SecuritySupport.registerEvent(ContainerCPUUsageEvent.class);
        SecuritySupport.registerEvent(ContainerCPUThrottlingEvent.class);
        SecuritySupport.registerEvent(ContainerMemoryUsageEvent.class);
        SecuritySupport.registerEvent(ContainerIOUsageEvent.class);

        RequestEngine.addTrustedJDKHook(ContainerConfigurationEvent.class, emitContainerConfiguration);
        RequestEngine.addTrustedJDKHook(ContainerCPUUsageEvent.class, emitContainerCPUUsage);
        RequestEngine.addTrustedJDKHook(ContainerCPUThrottlingEvent.class, emitContainerCPUThrottling);
        RequestEngine.addTrustedJDKHook(ContainerMemoryUsageEvent.class, emitContainerMemoryUsage);
        RequestEngine.addTrustedJDKHook(ContainerIOUsageEvent.class, emitContainerIOUsage);
    }

    private static void emitExceptionStatistics() {
        ExceptionStatisticsEvent t = new ExceptionStatisticsEvent();
        t.throwables = ThrowableTracer.numThrowables();
        t.commit();
    }

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

            t.cpuSlicePeriod = containerMetrics.getCpuPeriod();
            t.cpuQuota = containerMetrics.getCpuQuota();
            t.cpuShares = containerMetrics.getCpuShares();
            t.effectiveCpuCount = containerMetrics.getEffectiveCpuCount();
            t.memorySoftLimit = containerMetrics.getMemorySoftLimit();
            t.memoryLimit = containerMetrics.getMemoryLimit();
            t.swapMemoryLimit = containerMetrics.getMemoryAndSwapLimit();
            t.commit();
        }
    }

    private static void emitContainerCPUUsage() {
        if (containerMetrics != null) {
            ContainerCPUUsageEvent event = new ContainerCPUUsageEvent();

            event.cpuTime = containerMetrics.getCpuUsage();
            event.cpuSystemTime = containerMetrics.getCpuSystemUsage();
            event.cpuUserTime = containerMetrics.getCpuUserUsage();
            event.commit();
        }
    }
    private static void emitContainerMemoryUsage() {
        if (containerMetrics != null) {
            ContainerMemoryUsageEvent event = new ContainerMemoryUsageEvent();

src/jdk.jfr/share/classes/jdk/jfr/events/ContainerCPUUsageEvent.java:

@Name(Type.EVENT_NAME_PREFIX + "ContainerCPUUsage")
@Label("CPU Usage")
@Category({"Operating System", "Processor"})
@Description("Container CPU usage related information")
public class ContainerCPUUsageEvent extends AbstractJDKEvent {
  @Label("CPU Time")
  @Description("Aggregate time consumed by all tasks in the container")
  @Timespan
  public long cpuTime;

  @Label("CPU User Time")
  @Description("Aggregate user time consumed by all tasks in the container")
  @Timespan
  public long cpuUserTime;

  @Label("CPU System Time")

Configuration enabled period
profiling true 30 s
default true 30 s

Field Type Description
cpuTime long: nanos CPU Time Aggregate time consumed by all tasks in the container
cpuUserTime long: nanos CPU User Time Aggregate user time consumed by all tasks in the container
cpuSystemTime long: nanos CPU System Time Aggregate system time consumed by all tasks in the container

ContainerConfiguration

profiling default startTime duration stackTrace 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/ContainerConfigurationEvent.java

Category: Operating System

A set of container specific attributes

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

            list.add(java.lang.Throwable.class);
            list.add(java.lang.Error.class);
            Logger.log(LogTag.JFR_SYSTEM, LogLevel.INFO, "Retransformed JDK classes");
            jvm.retransformClasses(list.toArray(new Class<?>[list.size()]));
        } catch (IllegalStateException ise) {
            throw ise;
        } catch (Exception e) {
            Logger.log(LogTag.JFR_SYSTEM, LogLevel.WARN, "Could not add instrumentation for JDK events. " + e.getMessage());
        }
    }

    private static void initializeContainerEvents() {
        containerMetrics = Container.metrics();
        SecuritySupport.registerEvent(ContainerConfigurationEvent.class);
        SecuritySupport.registerEvent(ContainerCPUUsageEvent.class);
        SecuritySupport.registerEvent(ContainerCPUThrottlingEvent.class);
        SecuritySupport.registerEvent(ContainerMemoryUsageEvent.class);
        SecuritySupport.registerEvent(ContainerIOUsageEvent.class);

        RequestEngine.addTrustedJDKHook(ContainerConfigurationEvent.class, emitContainerConfiguration);
        RequestEngine.addTrustedJDKHook(ContainerCPUUsageEvent.class, emitContainerCPUUsage);
        RequestEngine.addTrustedJDKHook(ContainerCPUThrottlingEvent.class, emitContainerCPUThrottling);
        RequestEngine.addTrustedJDKHook(ContainerMemoryUsageEvent.class, emitContainerMemoryUsage);
        RequestEngine.addTrustedJDKHook(ContainerIOUsageEvent.class, emitContainerIOUsage);
    }

    private static void emitExceptionStatistics() {
        ExceptionStatisticsEvent t = new ExceptionStatisticsEvent();
        t.throwables = ThrowableTracer.numThrowables();
        t.commit();
    }

    private static void emitContainerConfiguration() {
        if (containerMetrics != null) {
            ContainerConfigurationEvent t = new ContainerConfigurationEvent();
            t.containerType = containerMetrics.getProvider();
            t.cpuSlicePeriod = containerMetrics.getCpuPeriod();
            t.cpuQuota = containerMetrics.getCpuQuota();
            t.cpuShares = containerMetrics.getCpuShares();
            t.effectiveCpuCount = containerMetrics.getEffectiveCpuCount();
            t.memorySoftLimit = containerMetrics.getMemorySoftLimit();
            t.memoryLimit = containerMetrics.getMemoryLimit();
            t.swapMemoryLimit = containerMetrics.getMemoryAndSwapLimit();
            t.commit();
        }
    }

src/jdk.jfr/share/classes/jdk/jfr/events/ContainerConfigurationEvent.java:

@Name(Type.EVENT_NAME_PREFIX + "ContainerConfiguration")
@Label("Container Configuration")
@Category({"Operating System"})
@Description("A set of container specific attributes")
public final class ContainerConfigurationEvent extends AbstractJDKEvent {
    @Label("Container Type")
    @Description("Container type information")
    public String containerType;

    @Label("CPU Slice Period")
    @Description("Length of the scheduling period for processes within the container")
    @Timespan(Timespan.MICROSECONDS)
    public long cpuSlicePeriod;

    @Label("CPU Quota")
    @Description("Total available run-time allowed during each scheduling period for all tasks in the container")

Configuration enabled period
profiling true beginChunk
default true beginChunk

Field Type Description
containerType string Container Type Container type information
cpuSlicePeriod long: microseconds CPU Slice Period Length of the scheduling period for processes within the container
cpuQuota long: microseconds CPU Quota Total available run-time allowed during each scheduling period for all tasks in the container
cpuShares long CPU Shares Relative weighting of processes with the container used for prioritizing the scheduling of processes across all containers running on a host
effectiveCpuCount long Effective CPU Count Number of effective processors that this container has available to it
memorySoftLimit long: bytes Memory Soft Limit Hint to the operating system that allows groups to specify the minimum required amount of physical memory
memoryLimit long: bytes Memory Limit Maximum amount of physical memory that can be allocated in the container
swapMemoryLimit long: bytes Memory and Swap Limit Maximum amount of physical memory and swap space, in bytes, that can be allocated in the container

ProcessStart

profiling default startTime duration stackTrace 15 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/ProcessStartEvent.java

Category: Operating System

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Operating system process started

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/java.base/share/classes/java/lang/ProcessBuilder.java:

        for (int i = 1; i < cmdarray.length; i++) {
            if (cmdarray[i].indexOf('\u0000') >= 0) {
                throw new IOException("invalid null character in command");
            }
        }

        try {
            Process process = ProcessImpl.start(cmdarray,
                                     environment,
                                     dir,
                                     redirects,
                                     redirectErrorStream);
            ProcessStartEvent event = new ProcessStartEvent();
            if (event.isEnabled()) {
                StringJoiner command = new StringJoiner(" ");
                for (String s: cmdarray) {
                    command.add(s);
                }
                event.directory = dir;
                event.command = command.toString();
                event.pid = process.pid();
                event.commit();
            }
            return process;

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

public final class JDKEvents {
    private static final Class<?>[] mirrorEventClasses = {
        DeserializationEvent.class,
        ProcessStartEvent.class,
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,

src/jdk.jfr/share/classes/jdk/jfr/events/ProcessStartEvent.java:

package jdk.jfr.events;

import jdk.jfr.Category;
import jdk.jfr.Description;
import jdk.jfr.Label;
import jdk.jfr.Name;
import jdk.jfr.internal.MirrorEvent;

@Category({"Operating System"})
@Label("Process Start")
@Name("jdk.ProcessStart")
@Description("Operating system process started")
@MirrorEvent(className = "jdk.internal.event.ProcessStartEvent")
public final class ProcessStartEvent extends AbstractJDKEvent {
    @Label("Process Id")
    public long pid;

    @Label("Directory")
    public String directory;

    @Label("Command")
    public String command;
}

src/java.base/share/classes/jdk/internal/event/ProcessStartEvent.java:

package jdk.internal.event;

/**
 * Event for the start of an OS procsss
 */

public final class ProcessStartEvent extends Event {
    public long pid;
    public String directory;
    public String command;
}

Configuration enabled stackTrace
profiling true true
default true true

Field Type Description
pid long Process Id
directory string Directory
command string Command

Examples 3
command string
getconf PAGESIZE
directory string
.
pid long
4830
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
61
lineNumber int
1281
method Method
descriptor string
(Lscala/collection/immutable/Seq;Ljava/io/File;Lscala/collection/Map;Z)Ljava/lang/Process;
hidden boolean
false
modifiers int
1
name string
executeCommand
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
17
name string
org/apache/spark/util/Utils$
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/spark/util
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
633589189142
command string
rm -rf /home/runner/work/jfrevents/jfrevents/harness-002715-12732368013055336491/apache-spark/gauss-mix/blockmgr-2a6febe7-36db-41dd-80f9-8f14e67f0806
directory string
null
pid long
4438
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
54
lineNumber int
162
method Method
descriptor string
(Ljava/io/File;)V
hidden boolean
false
modifiers int
10
name string
deleteRecursivelyUsingUnixNative
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
org/apache/spark/network/util/JavaUtils
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/spark/network/util
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
351775230699
command string
java -version
directory string
null
pid long
4616
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
27
lineNumber int
238
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
startProcess
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
920195451

ContainerMemoryUsage

profiling default startTime duration stackTrace 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/ContainerMemoryUsageEvent.java

Category: Operating System / Memory

Container memory usage related information

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

            jvm.retransformClasses(list.toArray(new Class<?>[list.size()]));
        } catch (IllegalStateException ise) {
            throw ise;
        } catch (Exception e) {
            Logger.log(LogTag.JFR_SYSTEM, LogLevel.WARN, "Could not add instrumentation for JDK events. " + e.getMessage());
        }
    }

    private static void initializeContainerEvents() {
        containerMetrics = Container.metrics();
        SecuritySupport.registerEvent(ContainerConfigurationEvent.class);
        SecuritySupport.registerEvent(ContainerCPUUsageEvent.class);
        SecuritySupport.registerEvent(ContainerCPUThrottlingEvent.class);
        SecuritySupport.registerEvent(ContainerMemoryUsageEvent.class);
        SecuritySupport.registerEvent(ContainerIOUsageEvent.class);

        RequestEngine.addTrustedJDKHook(ContainerConfigurationEvent.class, emitContainerConfiguration);
        RequestEngine.addTrustedJDKHook(ContainerCPUUsageEvent.class, emitContainerCPUUsage);
        RequestEngine.addTrustedJDKHook(ContainerCPUThrottlingEvent.class, emitContainerCPUThrottling);
        RequestEngine.addTrustedJDKHook(ContainerMemoryUsageEvent.class, emitContainerMemoryUsage);
        RequestEngine.addTrustedJDKHook(ContainerIOUsageEvent.class, emitContainerIOUsage);
    }

    private static void emitExceptionStatistics() {
        ExceptionStatisticsEvent t = new ExceptionStatisticsEvent();
        t.throwables = ThrowableTracer.numThrowables();
        t.commit();
    }

    private static void emitContainerConfiguration() {
        if (containerMetrics != null) {

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

    private static void emitContainerCPUUsage() {
        if (containerMetrics != null) {
            ContainerCPUUsageEvent event = new ContainerCPUUsageEvent();

            event.cpuTime = containerMetrics.getCpuUsage();
            event.cpuSystemTime = containerMetrics.getCpuSystemUsage();
            event.cpuUserTime = containerMetrics.getCpuUserUsage();
            event.commit();
        }
    }
    private static void emitContainerMemoryUsage() {
        if (containerMetrics != null) {
            ContainerMemoryUsageEvent event = new ContainerMemoryUsageEvent();

            event.memoryFailCount = containerMetrics.getMemoryFailCount();
            event.memoryUsage = containerMetrics.getMemoryUsage();
            event.swapMemoryUsage = containerMetrics.getMemoryAndSwapUsage();
            event.commit();
        }
    }

    private static void emitContainerIOUsage() {
        if (containerMetrics != null) {
            ContainerIOUsageEvent event = new ContainerIOUsageEvent();

src/jdk.jfr/share/classes/jdk/jfr/events/ContainerMemoryUsageEvent.java:

@Name(Type.EVENT_NAME_PREFIX + "ContainerMemoryUsage")
@Label("Container Memory Usage")
@Category({"Operating System", "Memory"})
@Description("Container memory usage related information")
public final class ContainerMemoryUsageEvent extends AbstractJDKEvent {
    @Label("Memory Fail Count")
    @Description("Number of times that user memory requests in the container have exceeded the memory limit")
    public long memoryFailCount;

    @Label("Memory Usage")
    @Description("Amount of physical memory, in bytes, that is currently allocated in the current container")
    @DataAmount
    public long memoryUsage;

    @Label("Memory and Swap Usage")
    @Description("Amount of physical memory and swap space, in bytes, that is currently allocated in the current container")

Configuration enabled period
profiling true 30 s
default true 30 s

Field Type Description
memoryFailCount long Memory Fail Count Number of times that user memory requests in the container have exceeded the memory limit
memoryUsage long: bytes Memory Usage Amount of physical memory, in bytes, that is currently allocated in the current container
swapMemoryUsage long: bytes Memory and Swap Usage Amount of physical memory and swap space, in bytes, that is currently allocated in the current container

ContainerCPUThrottling

profiling default startTime duration stackTrace 17 21 25 27 28

Source src/jdk.jfr/share/classes/jdk/jfr/events/ContainerCPUThrottlingEvent.java

Category: Operating System / Processor

Container CPU throttling related information

Code Context

The event is likely defined and utilized in the following locations within the OpenJDK source code, which is licensed under the GPLv2, excluding any XML or configuration files:

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

            Logger.log(LogTag.JFR_SYSTEM, LogLevel.INFO, "Retransformed JDK classes");
            jvm.retransformClasses(list.toArray(new Class<?>[list.size()]));
        } catch (IllegalStateException ise) {
            throw ise;
        } catch (Exception e) {
            Logger.log(LogTag.JFR_SYSTEM, LogLevel.WARN, "Could not add instrumentation for JDK events. " + e.getMessage());
        }
    }

    private static void initializeContainerEvents() {
        containerMetrics = Container.metrics();
        SecuritySupport.registerEvent(ContainerConfigurationEvent.class);
        SecuritySupport.registerEvent(ContainerCPUUsageEvent.class);
        SecuritySupport.registerEvent(ContainerCPUThrottlingEvent.class);
        SecuritySupport.registerEvent(ContainerMemoryUsageEvent.class);
        SecuritySupport.registerEvent(ContainerIOUsageEvent.class);

        RequestEngine.addTrustedJDKHook(ContainerConfigurationEvent.class, emitContainerConfiguration);
        RequestEngine.addTrustedJDKHook(ContainerCPUUsageEvent.class, emitContainerCPUUsage);
        RequestEngine.addTrustedJDKHook(ContainerCPUThrottlingEvent.class, emitContainerCPUThrottling);
        RequestEngine.addTrustedJDKHook(ContainerMemoryUsageEvent.class, emitContainerMemoryUsage);
        RequestEngine.addTrustedJDKHook(ContainerIOUsageEvent.class, emitContainerIOUsage);
    }

    private static void emitExceptionStatistics() {
        ExceptionStatisticsEvent t = new ExceptionStatisticsEvent();
        t.throwables = ThrowableTracer.numThrowables();
        t.commit();
    }

    private static void emitContainerConfiguration() {

src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

    private static void emitContainerIOUsage() {
        if (containerMetrics != null) {
            ContainerIOUsageEvent event = new ContainerIOUsageEvent();

            event.serviceRequests = containerMetrics.getBlkIOServiceCount();
            event.dataTransferred = containerMetrics.getBlkIOServiced();
            event.commit();
        }
    }

    private static void emitContainerCPUThrottling() {
        if (containerMetrics != null) {
            ContainerCPUThrottlingEvent event = new ContainerCPUThrottlingEvent();

            event.cpuElapsedSlices = containerMetrics.getCpuNumPeriods();
            event.cpuThrottledSlices = containerMetrics.getCpuNumThrottled();
            event.cpuThrottledTime = containerMetrics.getCpuThrottledTime();
            event.commit();
        }
    }

    @SuppressWarnings("deprecation")
    public static byte[] retransformCallback(Class<?> klass, byte[] oldBytes) throws Throwable {
        if (java.lang.Throwable.class == klass) {

src/jdk.jfr/share/classes/jdk/jfr/events/ContainerCPUThrottlingEvent.java:

@Name(Type.EVENT_NAME_PREFIX + "ContainerCPUThrottling")
@Label("CPU Throttling")
@Category({"Operating System", "Processor"})
@Description("Container CPU throttling related information")
public class ContainerCPUThrottlingEvent extends AbstractJDKEvent {
  @Label("CPU Elapsed Slices")
  @Description("Number of time-slice periods that have elapsed if a CPU quota has been setup for the container")
  public long cpuElapsedSlices;

  @Label("CPU Throttled Slices")
  @Description("Number of time-slice periods that the CPU has been throttled or limited due to exceeding CPU quota")
  public long cpuThrottledSlices;

  @Label("CPU Throttled Time")
  @Description("Total time duration, in nanoseconds, that the CPU has been throttled or limited due to exceeding CPU quota")
  @Timespan

Configuration enabled period
profiling true 30 s
default true 30 s

Field Type Description
cpuElapsedSlices long CPU Elapsed Slices Number of time-slice periods that have elapsed if a CPU quota has been setup for the container
cpuThrottledSlices long CPU Throttled Slices Number of time-slice periods that the CPU has been throttled or limited due to exceeding CPU quota
cpuThrottledTime long: nanos CPU Throttled Time Total time duration, in nanoseconds, that the CPU has been throttled or limited due to exceeding CPU quota

Types

Bytecode

14+

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Bytecode Instruction

Field Type Description
bytecode string Instruction

Examples 3
invokeinterface
invokeinterface
invokevirtual

CalleeMethod

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Field Type Description
type string Class
name string Method Name
descriptor string Method Descriptor

Examples 3
descriptor string
(Lbreeze/storage/Storage;)V
name string
$init$
type string
breeze/storage/Storage
descriptor string
(Ljava/lang/String;)V
name string
<init>
type string
java/lang/IllegalStateException
descriptor string
(B)V
name string
putUncheckedByte
type string
jdk/jfr/internal/event/EventWriter

ChunkHeader

14+

Chunk Header

Field Type Description
payload array byte Payload

Class

Java Class

Field Type Description
classLoader ClassLoader Class Loader
name Symbol Name
package Package Package
modifiers int Access Modifiers
hidden boolean 15+ Hidden

ClassLoader

Java Class Loader

Field Type Description
type Class Type
name Symbol Name

CodeBlobType

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Code Blob Type

Field Type Description
type string Type

Examples 3
CodeHeap 'non-nmethods'
CodeHeap 'profiled nmethods'
CodeHeap 'profiled nmethods'

CompilerPhaseType

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Compiler Phase Type

Field Type Description
phase string Phase

Examples 3
After Iter GVN
Post-allocation copy removal
After mach analysis

CompilerType

14+

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Compiler Type

Field Type Description
compiler string Compiler

Examples 3

CopyFailed

Field Type Description
objectCount ulong Object Count
firstSize ulong: bytes First Failed Object Size
smallestSize ulong: bytes Smallest Failed Object Size
totalSize ulong: bytes Total Object Size

DeoptimizationAction

14+

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Deoptimization Action

Field Type Description
action string Action

Examples 3
maybe_recompile
maybe_recompile
maybe_recompile

DeoptimizationReason

14+

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Deoptimization Reason

Field Type Description
reason string Reason

Examples 3
bimorphic_or_optimized_type_check
bimorphic_or_optimized_type_check
class_check

FlagValueOrigin

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Flag Value Origin

Field Type Description
origin string Origin

Examples 3

FrameType

Frame type

Field Type Description
description string Description

Examples 3
Inlined
JIT compiled
JIT compiled

G1EvacuationStatistics

Appearing in: graalvm_linux_G1GC, linux_G1GC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Field Type Description
gcId uint GC Identifier
allocated ulong: bytes Allocated Total memory allocated by PLABs
wasted ulong: bytes Wasted Total memory wasted within PLABs due to alignment or refill
used ulong: bytes Used Total memory occupied by objects within PLABs
undoWaste ulong: bytes Undo Wasted Total memory wasted due to allocation undo within PLABs
regionEndWaste ulong: bytes Region End Wasted Total memory wasted at the end of regions due to refill
regionsRefilled uint: bytes Region Refills Total memory wasted at the end of regions due to refill
directAllocated ulong: bytes Allocated (direct) Total memory allocated using direct allocation outside of PLABs
failureUsed ulong: bytes Used (failure) Total memory occupied by objects in regions where evacuation failed
failureWaste ulong: bytes Wasted (failure) Total memory left unused in regions where evacuation failed

Examples 3
allocated ulong: bytes
2097152
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
52
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
2043880
wasted ulong: bytes
53272
allocated ulong: bytes
0
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
1199
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
0
undoWaste ulong: bytes
0
used ulong: bytes
0
wasted ulong: bytes
0
allocated ulong: bytes
212968
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
1160
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
154232
wasted ulong: bytes
72

G1HeapRegionType

Appearing in: graalvm_linux_G1GC, linux_G1GC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

G1 Heap Region Type

Field Type Description
type string Type

Examples 3

G1YCType

Appearing in: graalvm_linux_G1GC, linux_G1GC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

G1 YC Type

Field Type Description
type string Type

Examples 3
Concurrent Start
Normal
Concurrent Start

GCCause

GC Cause

Field Type Description
cause string Cause

Examples 3
System.gc()
Heap Inspection Initiated GC
Heap Inspection Initiated GC

GCName

GC Name

Field Type Description
name string Name

Examples 3

GCThresholdUpdater

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

GC Threshold Updater

Field Type Description
updater string Updater

Examples 3
compute_new_size
compute_new_size
compute_new_size

GCWhen

GC When

Field Type Description
when string When

Examples 3

InflateCause

Inflation Cause

Field Type Description
cause string Cause

Examples 3
Monitor Wait
Monitor Wait
Monitor Wait

MetadataType

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Metadata Type

Field Type Description
type string Type

Examples 3

MetaspaceObjectType

Metaspace Object Type

Field Type Description
type string Type

MetaspaceSizes

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Field Type Description
committed ulong: bytes Committed Committed memory for this space
used ulong: bytes Used Bytes allocated by objects in the space
reserved ulong: bytes Reserved Reserved memory for this space

Examples 3
committed ulong: bytes
778764288
reserved ulong: bytes
805306368
used ulong: bytes
776960024
committed ulong: bytes
179306496
reserved ulong: bytes
1073741824
used ulong: bytes
177637536
committed ulong: bytes
958070784
reserved ulong: bytes
1879048192
used ulong: bytes
954597560

Method

Java Method

Field Type Description
type Class Type
name Symbol Name
descriptor Symbol Descriptor
modifiers int Access Modifiers
hidden boolean Hidden

Module

Module

Field Type Description
name Symbol Name
version Symbol Version
location Symbol Location
classLoader ClassLoader Class Loader

NarrowOopMode

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Narrow Oop Mode

Field Type Description
mode string Mode

Examples 3

NetworkInterfaceName

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Network Interface

Field Type Description
networkInterface string Network Interface Network Interface Name

Examples 3

ObjectSpace

Appearing in: linux_ParallelGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Field Type Description
start ulong: address Start Address Start address of the space
end ulong: address End Address End address of the space
used ulong: bytes Used Bytes allocated by objects in the space
size ulong: bytes Size Size of the space

Examples 3
end ulong: address
31826378752
size ulong: bytes
1658847232
start ulong: address
30167531520
used ulong: bytes
253904872
end ulong: address
33854324736
size ulong: bytes
891289600
start ulong: address
32963035136
used ulong: bytes
0
end ulong: address
33923530752
size ulong: bytes
69206016
start ulong: address
33854324736
used ulong: bytes
3309600

OldObject

Appearing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: linux_ShenandoahGC, linux_ZGC

Old Object

Field Type Description
address ulong: address Memory Address
type Class Java Class
description string Object Description Object description
referrer Reference Referrer Object Object referencing this object

Examples 3
address ulong: address
30173500224
description string
null
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
address ulong: address
30405830272
description string
Size: 1
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
8
name string
java/lang/ThreadLocal$ThreadLocalMap
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang
address ulong: address
30371962400
description string
null
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[Ljava/lang/Object;
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/lang

OldObjectArray

Old Object Array

Field Type Description
size int Array Size Size of array
index int Index Index in the array

OldObjectField

Old Object Field

Field Type Description
name string Field Name of field
modifiers short Field Modifiers Field modifiers

OldObjectGcRoot

Appearing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: linux_ShenandoahGC, linux_ZGC

GC Root

Field Type Description
description string Root Description Root information
system OldObjectRootSystem System The subsystem of origin for the root
type OldObjectRootType Type The root type

Examples 3

OldObjectRootSystem

GC Root System

Field Type Description
system string System

OldObjectRootType

GC Root Type

Field Type Description
type string Type

Package

Package

Field Type Description
name Symbol Name
module Module Module
exported boolean Exported

Reference

Appearing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: linux_ShenandoahGC, linux_ZGC

Reference

Field Type Description
array OldObjectArray Array Information Array or null if it is not an array
field OldObjectField Field Information Field or null if it is an array
object OldObject Object Object holder for this reference
skip int Skip Value The object is this many hops away

Examples 3

ReferenceType

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Reference Type

Field Type Description
type string Type

Examples 3
Weak reference
Phantom reference
Weak reference

ShenandoahHeapRegionState

Appearing in: linux_ShenandoahGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ZGC

Shenandoah Heap Region State

Field Type Description
state string State

Examples 3

StackFrame

Field Type Description
method Method Java Method
lineNumber int Line Number
bytecodeIndex int Bytecode Index
type FrameType Frame Type

Examples 3
bytecodeIndex int
0
lineNumber int
261
method Method
descriptor string
(Ljava/util/Collection;)Lscala/collection/JavaConverters$AsScala;
hidden boolean
false
modifiers int
1
name string
collectionAsScalaIterableConverter
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
17
name string
scala/collection/JavaConverters$
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/collection
type FrameType
Inlined
bytecodeIndex int
304
lineNumber int
1348
method Method
descriptor string
(Ljava/lang/Class;I)V
hidden boolean
false
modifiers int
2
name string
filterCheck
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/io/ObjectInputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/io
type FrameType
JIT compiled
bytecodeIndex int
103
lineNumber int
467
method Method
descriptor string
()V
hidden boolean
false
modifiers int
17
name string
run
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
25
name string
scala/concurrent/impl/Promise$Transformation
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/concurrent/impl
type FrameType
JIT compiled

StackTrace

Stacktrace

Field Type Description
truncated boolean Truncated
frames array StackFrame struct Stack Frames

Symbol

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Symbol

Field Type Description
string string String

Examples 3
resource:///shared/jna-5.15.0.jar
resource:///shared/netty-buffer-4.1.114.Final.jar
resource:///unique/apache-spark/spark-core_2.13-3.5.3.jar

Thread

Thread

Field Type Description
osName string OS Thread Name
osThreadId long OS Thread Id
javaName string Java Thread Name
javaThreadId long Java Thread Id
group ThreadGroup Java Thread Group

ThreadGroup

Thread Group

Field Type Description
parent ThreadGroup Parent
name string Name

Examples 3
null
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
name string
system
parent ThreadGroup
null

ThreadState

Java Thread State

Field Type Description
name string Name

Examples 3
STATE_RUNNABLE
STATE_RUNNABLE
STATE_RUNNABLE

VMOperationType

VM Operation Type

Field Type Description
type string Type

Examples 3
G1PauseRemark
HandshakeAllThreads
G1CollectForAllocation

VirtualSpace

Field Type Description
start ulong: address Start Address Start address of the virtual space
committedEnd ulong: address Committed End Address End address of the committed memory for the virtual space
committedSize ulong: bytes Committed Size Size of the committed memory for the virtual space
reservedEnd ulong: address Reserved End Address End address of the reserved memory for the virtual space
reservedSize ulong: bytes Reserved Size Size of the reserved memory for the virtual space

Examples 3
committedEnd ulong: address
32361152512
committedSize ulong: bytes
2193620992
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520
committedEnd ulong: address
30196891648
committedSize ulong: bytes
29360128
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520
committedEnd ulong: address
32828817408
committedSize ulong: bytes
2661285888
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520

ZPageTypeType

15+

Appearing in: linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Z Page Type

Field Type Description
type string Type

Examples 1

ZStatisticsCounterType

Appearing in: linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Z Statistics Counter

Field Type Description
counter string Counter

Examples 1
Allocation Rate

ZStatisticsSamplerType

Appearing in: linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Z Statistics Sampler

Field Type Description
sampler string Sampler

Examples 1
Concurrent Roots CodeCache

XML Content Types

address

Annotation: jdk.jfr.MemoryAddress

Examples 3
30419189760
140680921776128
140680921759744

bits-per-second

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Annotation: jdk.jfr.DataAmount(BITS), jdk.jfr.Frequency

Examples 3

bytes

Annotation: jdk.jfr.DataAmount(BYTES)

Examples 3

bytes-per-second

Appearing in: graalvm_linux_G1GC, linux_G1GC

Missing in: graalvm_linux_native, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Annotation: jdk.jfr.DataAmount(BYTES), jdk.jfr.Frequency

Examples 3

certificateId

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_G1GC, graalvm_linux_native

Annotation: jdk.jfr.events.CertificateId

Examples 3
1917811103
998794918
3966431214

epochmillis

Annotation: jdk.jfr.Timestamp(MILLISECONDS_SINCE_EPOCH)

Examples 3
1788049635062
-9223372036854775808
1788049634777

hertz

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Annotation: jdk.jfr.Frequency

Examples 3
11782.463
1000000000
1000000000

microseconds

17+

Annotation: jdk.jfr.Timespan(MICROSECONDS)

millis

Annotation: jdk.jfr.Timespan(MILLISECONDS)

Examples 3
330124358829
329678465537
330130069456

nanos

Annotation: jdk.jfr.Timespan(NANOSECONDS)

Examples 3
-9223372036854775808
-9223372036854775808
1000000

percentage

Annotation: jdk.jfr.Percentage

Examples 3

tickspan

Annotation: jdk.jfr.Timespan(TICKS)

Examples 3

tickstamp

Annotation: jdk.jfr.Timestamp(TICKS)

XML Types

Class

Parameter Type const Klass*
Field Type const Klass*
Java Type java.lang.Class
Examples 3

ClassLoader

Parameter Type const ClassLoaderData*
Field Type const ClassLoaderData*
Examples 3
name string
bootstrap
type Class
null
name string
bootstrap
type Class
null
name string
bootstrap
type Class
null

Method

Parameter Type const Method*
Field Type const Method*
Examples 3
descriptor string
(Ljava/lang/Object;III)V
hidden boolean
false
modifiers int
1
name string
<init>
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
1
name string
breeze/linalg/DenseVector
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
breeze/linalg
descriptor string
(Lscala/util/Try;)Lscala/util/Try;
hidden boolean
false
modifiers int
4121
name string
$anonfun$_failedFun$1
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
17
name string
scala/concurrent/Future$
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/concurrent
descriptor string
(Ljava/lang/Class;I)V
hidden boolean
false
modifiers int
2
name string
filterCheck
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/io/ObjectInputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/io

Module

Parameter Type const ModuleEntry*
Field Type const ModuleEntry*
Examples 3
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1

Package

Parameter Type const PackageEntry*
Field Type const PackageEntry*
Examples 3
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/io
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/io
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net

StackTrace

15+

Parameter Type u8
Field Type u8
Java Type jdk.types.StackTrace
Examples 3
frames StackFrame
bytecodeIndex int
0
lineNumber int
261
method Method
descriptor string
(Ljava/util/Collection;)Lscala/collection/JavaConverters$AsScala;
hidden boolean
false
modifiers int
1
name string
collectionAsScalaIterableConverter
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
17
name string
scala/collection/JavaConverters$
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/collection
type FrameType
Inlined
truncated boolean
false
frames StackFrame
bytecodeIndex int
304
lineNumber int
1348
method Method
descriptor string
(Ljava/lang/Class;I)V
hidden boolean
false
modifiers int
2
name string
filterCheck
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/io/ObjectInputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/io
type FrameType
JIT compiled
truncated boolean
false
frames StackFrame
bytecodeIndex int
103
lineNumber int
467
method Method
descriptor string
()V
hidden boolean
false
modifiers int
17
name string
run
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
hidden boolean
false
modifiers int
25
name string
scala/concurrent/impl/Promise$Transformation
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/concurrent/impl
type FrameType
JIT compiled
truncated boolean
false

Thread

Parameter Type u8
Field Type u8
Java Type java.lang.Thread
Examples 3
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
element-tracking-store-worker
javaThreadId long
1702
osName string
element-tracking-store-worker
osThreadId long
4204
virtual boolean
false
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Executor task launch worker for task 0.0 in stage 49.0 (TID 190)
javaThreadId long
1707
osName string
Executor task launch worker for task 0.0 in stage 49.0 (TID 190)
osThreadId long
4212
virtual boolean
false
group ThreadGroup
null
javaName string
null
javaThreadId long
0
osName string
G1 Main Marker
osThreadId long
2138
virtual boolean
false

Ticks

unsigned

Appearing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: linux_ShenandoahGC, linux_ZGC

Parameter Type const Ticks&
Field Type Ticks
Java Type long
Content Type tickstamp
Examples 3
365285568635
25377558494
684899924002

Tickspan

unsigned

Parameter Type const Tickspan&
Field Type Tickspan
Java Type long
Content Type tickspan

boolean

Parameter Type bool
Field Type bool
Java Type boolean
Examples 3

byte

Parameter Type s1
Field Type s1
Java Type byte

char

Parameter Type char
Field Type char
Java Type char

double

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Parameter Type double
Field Type double
Java Type double
Examples 3

float

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Parameter Type float
Field Type float
Java Type float
Examples 3
2.207315
4.8722396
4.8567734

int

Parameter Type s4
Field Type s4
Java Type int
Examples 3

long

Parameter Type s8
Field Type s8
Java Type long
Examples 3

short

Parameter Type s2
Field Type s2
Java Type short

string

Parameter Type const char*
Field Type const char*
Java Type java.lang.String
Examples 3

ubyte

unsigned

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Parameter Type u1
Field Type u1
Java Type byte
Examples 3

uint

unsigned

Parameter Type unsigned
Field Type unsigned
Java Type int
Examples 3

ulong

unsigned

Parameter Type u8
Field Type u8
Java Type long
Examples 3

ushort

unsigned

Appearing in: graalvm_linux_G1GC, linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Missing in: graalvm_linux_native

Parameter Type u2
Field Type u2
Java Type short
Examples 3