Introduction

This page is a complete reference of Java Flight Recorder (JFR) events for OpenJDK 15 (jdk-15.0.10+5, permalink, 27-September-2026). JFR events are the foundation of JVM profiling and observability — they capture runtime data such as garbage collection pauses, CPU load, thread activity, class loading, compilations, and more. The events listed here are collected from the JFR event configuration and the OpenJDK 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.

For each JFR event you'll find its fields, default configuration profiles (continuous / profiling), real-world examples from the Renaissance benchmark, and — where available — source code context to help you understand what each event means during JVM performance analysis.

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) {
  DEBUG_ONLY(JfrJavaSupport::check_java_thread_in_vm(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) {

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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();

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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:

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling false 0 ns
default false 0 ns

Event fields with their types and descriptions
Field Type Description
flushId ulong Flush Identifier
elements ulong Elements Written
size ulong: bytes Size Written

Examples 3
Example event data values and properties
elements ulong
1909
flushId ulong
311
size ulong: bytes
283343
startTime long: millis
462354955507
Example event data values and properties
elements ulong
78
flushId ulong
6
size ulong: bytes
654568
startTime long: millis
6449790635
Example event data values and properties
elements ulong
2952
flushId ulong
205
size ulong: bytes
577903
startTime long: millis
476221947543

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/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 instanceof EnabledSetting) {
                nc.control.setValueSafe("false");
                return;
            }
        }
    }

    void writeActiveSettingEvent() {
        if (!type.isRegistered()) {
            return;
        }
        ActiveSettingEvent event = ActiveSettingEvent.EVENT.get();
        for (NamedControl nc : namedControls) {
            if (Utils.isSettingVisible(nc.control, type.hasEventHook())) {
                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();
            }

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

        X509ValidationEvent.class,
        ProcessStartEvent.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.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,
        jdk.internal.event.X509CertificateEvent.class,
        jdk.internal.event.X509ValidationEvent.class,
        jdk.internal.event.ProcessStartEvent.class,
        DirectBufferStatisticsEvent.class
    };

    // This is a list of the classes with instrumentation code that should be applied.
    private static final Class<?>[] instrumentationClasses = new Class<?>[] {

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
Field Type Description
id long Event Id
name string Setting Name
value string Setting Value

Examples 3
Example event data values and properties
id long
1883
name string
stackTrace
startTime long: millis
453048059860
value string
true
Example event data values and properties
id long
1945
name string
threshold
startTime long: millis
447752338153
value string
0 ms
Example event data values and properties
id long
91
name string
stackTrace
startTime long: millis
361737433
value string
true

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/events/ActiveRecordingEvent.java:

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

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

    @Label("Id")
    public long id;

    @Label("Name")
    public String name;

    @Label("Destination")
    public String destination;

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.get();
            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();

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

        ProcessStartEvent.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.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,
        jdk.internal.event.X509CertificateEvent.class,
        jdk.internal.event.X509ValidationEvent.class,
        jdk.internal.event.ProcessStartEvent.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,

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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
Example event data values and properties
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
1788871963460
startTime long: millis
15622276425
Example event data values and properties
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
1788871449508
startTime long: millis
501868472749
Example event data values and properties
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
1789259151646
startTime long: millis
455586224171

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) {

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
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
Example event data values and properties
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
1788871963118
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
5013
startTime long: millis
364471320
Example event data values and properties
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
1788871449128
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
2534
startTime long: millis
489606728476
Example event data values and properties
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
1789259151398
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
2150
startTime long: millis
489901168500

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;

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
Field Type Description
key string Key
value string Value

Examples 3
Example event data values and properties
key string
java.vm.version
startTime long: millis
462141525582
value string
25.0.4.1+1-LTS
Example event data values and properties
key string
java.vm.version
startTime long: millis
15623065214
value string
25.0.4.1+1-LTS
Example event data values and properties
key string
java.vm.specification.version
startTime long: millis
447754184886
value string
25

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.cpp:

          SystemDictionary_lock->wait();
        } else {
          double_lock_wait(lockObject, THREAD);
        }
      } else {
        // If not in SD and not in PH, other thread's load must have failed
        super_load_in_progress = false;
      }
    }
  }
  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();
}


// Be careful when modifying this code: once you have run
// placeholders()->find_and_add(PlaceholderTable::LOAD_INSTANCE),
// you need to find_and_remove it before returning.
// So be careful to not exit with a CHECK_ macro betweeen these calls.
//
// name must be in the form of "java/lang/Object" -- cannot be "Ljava/lang/Object;"
InstanceKlass* SystemDictionary::resolve_instance_class_or_null(Symbol* name,
                                                                Handle class_loader,
                                                                Handle protection_domain,
                                                                TRAPS) {
  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 d_hash = dictionary->compute_hash(name);

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

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

// Note: this method is much like resolve_from_stream, but
// does not publish the classes via the SystemDictionary.
// Handles Lookup.defineClass hidden, unsafe_DefineAnonymousClass
// and redefineclasses. RedefinedClasses do not add to the class hierarchy.
InstanceKlass* SystemDictionary::parse_stream(Symbol* class_name,
                                              Handle class_loader,
                                              ClassFileStream* st,
                                              const ClassLoadInfo& cl_info,
                                              TRAPS) {

  EventClassLoad class_load_start_event;
  ClassLoaderData* loader_data;
  bool is_unsafe_anon_class = cl_info.unsafe_anonymous_host() != NULL;

  // - for unsafe anonymous class: create a new CLD whith a class holder that uses
  //                               the same class loader as the unsafe_anonymous_host.
  // - 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.
  if (is_unsafe_anon_class || cl_info.is_hidden()) {
    guarantee(!is_unsafe_anon_class || cl_info.unsafe_anonymous_host()->class_loader() == class_loader(),
              "should be NULL or the same");

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

//

class BootstrapInfo;
class ClassFileStream;
class Dictionary;
class PlaceholderTable;
class LoaderConstraintTable;
template <MEMFLAGS F> class HashtableBucket;
class ResolutionErrorTable;
class SymbolPropertyTable;
class ProtectionDomainCacheTable;
class ProtectionDomainCacheEntry;
class GCTimer;
class EventClassLoad;

#define WK_KLASS_ENUM_NAME(kname)    kname##_knum

// Certain classes, such as java.lang.Object and java.lang.String,
// are "well-known", in the sense that no class loader is allowed
// to provide a different definition.
//
// Each well-known class has a short klass name (like object_klass),
// and a vmSymbol name (like java_lang_Object).
//
// The order of these definitions is significant: the classes are

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

  static ProtectionDomainCacheTable*   _pd_cache_table;

protected:
  static void validate_protection_domain(InstanceKlass* klass,
                                         Handle class_loader,
                                         Handle protection_domain, TRAPS);

  friend class VM_PopulateDumpSharedSpace;
  friend class TraversePlaceholdersClosure;
  static PlaceholderTable*   placeholders() { return _placeholders; }
  static LoaderConstraintTable* constraints() { return _loader_constraints; }
  static ResolutionErrorTable* resolution_errors() { return _resolution_errors; }
  static SymbolPropertyTable* invoke_method_table() { return _invoke_method_table; }
  static void post_class_load_event(EventClassLoad* event, const InstanceKlass* k, const ClassLoaderData* init_cld);

  // Basic loading operations
  static InstanceKlass* resolve_instance_class_or_null_helper(Symbol* name,
                                                              Handle class_loader,
                                                              Handle protection_domain,
                                                              TRAPS);
  static InstanceKlass* resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
  static Klass* resolve_array_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
  static InstanceKlass* handle_parallel_super_load(Symbol* class_name, Symbol* supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS);
  // Wait on SystemDictionary_lock; unlocks lockObject before
  // waiting; relocks lockObject with correct recursion count

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

  InstanceKlass* shared_nest_host = get_shared_nest_host(lambda_ik);
  assert(shared_nest_host != NULL, "unexpected NULL _nest_host");

  InstanceKlass* loaded_lambda =
    SystemDictionary::load_shared_lambda_proxy_class(lambda_ik, class_loader, protection_domain, pkg_entry, CHECK_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, initialize vtables, and do possible
    // deoptimizations.
    SystemDictionary::add_to_hierarchy(loaded_lambda, CHECK_NULL); // No exception, but can block
    // But, do not add to dictionary.
  }
  loaded_lambda->link_class(CHECK_NULL);
  // notify jvmti
  if (JvmtiExport::should_post_class_load()) {

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling false true 0 ms
default false true 0 ms

Event fields with their types and descriptions
Field Type Description
loadedClass Class Loaded Class
definingClassLoader ClassLoader Defining Class Loader
initiatingClassLoader ClassLoader Initiating Class Loader

Examples 3
Example event data values and properties
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
initiatingClassLoader 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
loadedClass 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
1537
name string
scala/io/LowPriorityCodecImplicits
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/io
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
459078380381
Example event data values and properties
definingClassLoader ClassLoader
null
initiatingClassLoader ClassLoader
null
loadedClass Class
classLoader ClassLoader
null
hidden boolean
true
modifiers int
16
name string
java.lang.invoke.LambdaForm$MH/0x000000008dad8c00
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
456230471572
Example event data values and properties
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
10
name string
java/io/File$TempDirectory
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
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
58
lineNumber int
1880
method Method
descriptor string
(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
hidden boolean
false
modifiers int
9
name string
createTempFile
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/io/File
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
387037194

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:

      // For user defined Java class loaders, check that the name returned is
      // the same as that requested.  This check is done for the bootstrap
      // loader when parsing the class file.
      if (class_name == k->name()) {
        return k;
      }
    }
    // Class is not found or has the wrong name, return NULL
    return NULL;
  }
}

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, TRAPS) {

  HandleMark hm(THREAD);
  ClassLoaderData* loader_data = k->class_loader_data();

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling false true
default false true

Event fields with their types and descriptions
Field Type Description
definedClass Class Defined Class
definingClassLoader ClassLoader Defining Class Loader

Examples 3
Example event data values and properties
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
1
name string
dotty/tools/dotc/util/HashMap
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/util
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
485752984551
Example event data values and properties
definedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
16410
name string
java/security/Security$SecPropLoader$LoadingMode
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/security
definingClassLoader ClassLoader
name string
bootstrap
type Class
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
25
lineNumber int
139
method Method
descriptor string
()V
hidden boolean
false
modifiers int
10
name string
loadMaster
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
26
name string
java/security/Security$SecPropLoader
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/security
type FrameType
Interpreted
…
truncated boolean
false
startTime long: millis
375918745
Example event data values and properties
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
1
name string
org/sparkproject/jetty/util/ConstantThrowable
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
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
475225406494

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((InstanceKlass *)the_class, THREAD);

  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(THREAD);
    // increment the classRedefinedCount field in the_class and in any
    // direct and indirect subclasses of the_class
    log_info(redefine, class, load)

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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
Example event data values and properties
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
1438881361
Example event data values and properties
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
1008236015
Example event data values and properties
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
1412196725

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 */

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 0 ms
default true true 0 ms

Event fields with their types and descriptions
Field Type Description
classCount int Class Count
redefinitionId ulong Class Redefinition Id

Examples 3
Example event data values and properties
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
1435979800
Example event data values and properties
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
1005987111
Example event data values and properties
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
1345889791

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 */

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 0 ms
default true true 0 ms

Event fields with their types and descriptions
Field Type Description
classCount int Class Count
redefinitionId ulong Class Redefinition Id

Examples 3
Example event data values and properties
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
1331982897
Example event data values and properties
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
997679097
Example event data values and properties
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
1426353273

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:

  if (Arguments::is_dumping_archive()) {
    SystemDictionaryShared::remove_dumptime_info(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();
}

void InstanceKlass::release_C_heap_structures() {

Event configuration settings across JFR profiles
Configuration enabled
profiling false
default false

Event fields with their types and descriptions
Field Type Description
unloadedClass Class Unloaded Class
definingClassLoader ClassLoader Defining Class Loader

Examples 3
Example event data values and properties
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
3362640397
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/Unloadable2180128440126
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
Example event data values and properties
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
startTime long: millis
485542232180
unloadedClass 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.renaissance.jdk.streams.MnemonicsCoderWithStream$$Lambda/0x000000008db12400
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/renaissance/jdk/streams
Example event data values and properties
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
startTime long: millis
481476152833
unloadedClass 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/renaissance/jdk/streams/MnemonicsCoderWithStream
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/renaissance/jdk/streams

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() == 0) {
      if (PrintCodeHeapAnalytics) {
        CompileBroker::print_heapinfo(tty, "all", 4096); // details, may be a lot!
      }
    }
  }

  heap->report_full();

  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();

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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();
    }
  }

Event configuration settings across JFR profiles
Configuration enabled period
profiling true everyChunk
default true everyChunk

Event fields with their types and descriptions
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
Example event data values and properties
adaptorCount int
0
codeBlobType CodeBlobType
CodeHeap 'non-profiled nmethods'
entryCount int
6230
fullCount int
0
methodCount int
6230
reservedTopAddress ulong: address
140168325496832
startAddress ulong: address
140168201764864
startTime long: millis
494566683515
unallocatedCapacity ulong: bytes
115268608
Example event data values and properties
adaptorCount int
0
codeBlobType CodeBlobType
CodeHeap 'profiled nmethods'
entryCount int
1838
fullCount int
0
methodCount int
1838
reservedTopAddress ulong: address
140366904819712
startAddress ulong: address
140366781087744
startTime long: millis
15507421568
unallocatedCapacity ulong: bytes
119915904
Example event data values and properties
adaptorCount int
0
codeBlobType CodeBlobType
CodeHeap 'profiled nmethods'
entryCount int
8365
fullCount int
0
methodCount int
8365
reservedTopAddress ulong: address
140617959079936
startAddress ulong: address
140617835347968
startTime long: millis
467163588702
unallocatedCapacity ulong: bytes
103529088

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();
}

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
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
Example event data values and properties
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
140168325496832
startAddress ulong: address
140168071741440
startTime long: millis
454119616227
Example event data values and properties
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
140618089103360
startAddress ulong: address
140617835347968
startTime long: millis
479556670171
Example event data values and properties
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
140367034843136
startAddress ulong: address
140366781087744
startTime long: millis
364948715

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;

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 100 ms
default true 100 ms

Event fields with their types and descriptions
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);

Event configuration settings across JFR profiles
Configuration enabled period
profiling true everyChunk
default true everyChunk

Event fields with their types and descriptions
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;

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
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/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);

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/hotspot/share/compiler/compilerEvent.cpp:

    guarantee(phase_names->length() < 256, "exceeds maximum supported phases");
  }
  if (register_jfr_serializer) {
    JfrSerializer::register_serializer(TYPE_COMPILERPHASETYPE, false, new CompilerPhaseTypeConstant());
  } else if (Jfr::is_recording()) {
    // serialize new_phases.
    JfrCheckpointWriter writer;
    writer.write_type(TYPE_COMPILERPHASETYPE);
    write_phases(writer, idx, new_phases);
  }
  return idx;
}

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/hotspot/share/compiler/compileBroker.cpp:

  } 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);
    }
  }
  // simulate crash during compilation
  assert(task->compile_id() != CICrashAt, "just as planned");
}

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.
  push_jni_handle_block();
  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);

    // Skip redefined methods
    if (compile_state.target_method_is_old()) {
      failure_reason = "redefined method";
      retry_message = "not retryable";
      compilable = ciEnv::MethodCompilable_never;
    } else {
      JVMCIEnv env(thread, &compile_state, __FILE__, __LINE__);
      methodHandle method(thread, target_handle);
      env.runtime()->compile_method(&env, jvmci, method, osr_bci);

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", !TieredCompilation);
    } 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, directive);

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:
    /**

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 100 ms
default true 1000 ms

Event fields with their types and descriptions
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
Example event data values and properties
codeSize ulong: bytes
1472
compileId uint
1405
compileLevel ushort
3
compiler CompilerType
c1
inlinedBytes ulong: bytes
1
isOsr boolean
false
method Method
descriptor string
(Ljava/lang/invoke/VarHandle;Ljava/lang/Object;I)I
hidden boolean
false
modifiers int
8
name string
get
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
24
name string
java/lang/invoke/VarHandleByteArrayAsInts$ArrayHandle
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
400021173
succeded boolean
true
Example event data values and properties
codeSize ulong: bytes
768
compileId uint
94142
compileLevel ushort
3
compiler CompilerType
c1
inlinedBytes ulong: bytes
1
isOsr boolean
false
method Method
descriptor string
(Lorg/apache/spark/util/io/ChunkedByteBuffer;Lscala/collection/immutable/Seq;[J)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
org/apache/spark/scheduler/DirectTaskResult
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
startTime long: millis
453481826515
succeded boolean
true
Example event data values and properties
codeSize ulong: bytes
18664
compileId uint
92826
compileLevel ushort
3
compiler CompilerType
c1
inlinedBytes ulong: bytes
411
isOsr boolean
false
method Method
descriptor string
(Ljava/lang/String;Lorg/apache/spark/network/util/ByteUnit;)J
hidden boolean
false
modifiers int
9
name string
byteStringAs
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
startTime long: millis
448179993767
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/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) {
            String[] phaseNames = { phaseName };
            return phaseToId.computeIfAbsent(phaseName, k -> compilerToVM().registerCompilerPhases(phaseNames));
        }

        /**
         * Registers new compiler phases with JFR. This should be called during compiler initialization.
         *

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/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:
    /**
     * Register compiler phases for JFR type CompilerPhaseType serialization purposes.
     * This method is called during compiler creation or during compilation.
     * Registration will serialize the passed in phase constants, supporting bulk and/or incremental registrations.
     * This method returns start index of new list that just got appended to phase_names.
     * Param new_phases may contain duplicates.
     * Return value could be used for mapping purpose at caller site, or caller can assume explicit order of registration.
     */
    static int register_phases(GrowableArray<const char*>* new_phases) 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/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, int level, int idx) {
  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)) {
    char output[1024];
    if (idx != 0) {
      jio_snprintf(output, sizeof(output), "%s:%d", CompilerPhaseTypeHelper::to_string(cpt), idx);
    } else {
      jio_snprintf(output, sizeof(output), "%s", CompilerPhaseTypeHelper::to_string(cpt));
    }
    _printer->print_method(output, level);
  }
#endif
  C->_latest_stage_start_counter.stamp();
}

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 (_printer && _printer->should_print(level)) {
    _printer->end_method();
  }
#endif
}

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

  int len = JVMCIENV->get_length(phases);
  GrowableArray<const char*>* jvmci_phase_names = new GrowableArray<const char*>(len);
  for (int i = 0; i < len; i++) {
    JVMCIObject phase = JVMCIENV->get_object_at(phases, i);
    jvmci_phase_names->append(strdup(JVMCIENV->as_utf8_string(phase)));
  }
  return CompilerEvent::PhaseEvent::register_phases(jvmci_phase_names);
#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);

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 10 s
default true 60 s

Event fields with their types and descriptions
Field Type Description
phase CompilerPhaseType Compile Phase
compileId uint Compilation Identifier
phaseLevel ushort Phase Level

Examples 3
Example event data values and properties
compileId uint
1375
phase CompilerPhaseType
Before RemoveUseless
phaseLevel ushort
3
startTime long: millis
379502292
Example event data values and properties
compileId uint
94089
phase CompilerPhaseType
Before Iter GVN
phaseLevel ushort
3
startTime long: millis
453371465997
Example event data values and properties
compileId uint
92732
phase CompilerPhaseType
Barrier expand
phaseLevel ushort
2
startTime long: millis
447748231655

CompilationFailure

profiling startTime 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.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();

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:
    /**
     * Register compiler phases for JFR type CompilerPhaseType serialization purposes.
     * This method is called during compiler creation or during compilation.
     * Registration will serialize the passed in phase constants, supporting bulk and/or incremental registrations.
     * This method returns start index of new list that just got appended to phase_names.
     * Param new_phases may contain duplicates.

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) {

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default false

Event fields with their types and descriptions
Field Type Description
failureMessage string Failure Message
compileId uint Compilation Identifier

Examples 3
Example event data values and properties
compileId uint
116262
failureMessage string
retry without subsuming loads
startTime long: millis
499543634879
Example event data values and properties
compileId uint
102246
failureMessage string
retry without subsuming loads
startTime long: millis
490099057644
Example event data values and properties
compileId uint
2665
failureMessage string
Jvmti state change invalidated dependencies
startTime long: millis
1419793803

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/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
         */

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/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/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:

     * Param new_phases may contain duplicates.
     * Return value could be used for mapping purpose at caller site, or caller can assume explicit order of registration.
     */
    static int register_phases(GrowableArray<const char*>* new_phases) 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/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-----------------------------------
WarmCallInfo* InlineTree::ok_to_inline(ciMethod* callee_method, JVMState* jvms, ciCallProfile& profile, WarmCallInfo* initial_wci, bool& should_delay) {
  assert(callee_method != NULL, "caller checks for optimized virtual!");
  assert(!should_delay, "should be initialized to false");
#ifdef ASSERT
  // Make sure the incoming jvms has the same information content as me.

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);
  }
}

#define CC (char*)  /*cast a literal from (const char*)*/
#define FN_PTR(f) CAST_FROM_FN_PTR(void*, &(c2v_ ## f))

Event configuration settings across JFR profiles
Configuration enabled
profiling false
default false

Event fields with their types and descriptions
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
Example event data values and properties
bci int
4
callee CalleeMethod
descriptor string
(Ljava/lang/ref/Reference;)Lorg/apache/spark/CleanupTaskWeakReference;
name string
$anonfun$keepCleaning$2
type string
org/apache/spark/ContextCleaner
caller Method
descriptor string
(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.ContextCleaner$$Lambda/0x000000008264f000
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
compileId uint
92740
message string
inline
startTime long: millis
447749348859
succeeded boolean
true
Example event data values and properties
bci int
16
callee CalleeMethod
descriptor string
(Lorg/apache/spark/storage/BlockInfoManager;JLorg/apache/spark/storage/BlockId;Lorg/apache/spark/storage/BlockInfo;)Ljava/lang/Object;
name string
$anonfun$lockForWriting$2$adapted
type string
org/apache/spark/storage/BlockInfoManager
caller Method
descriptor string
(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/0x000000008d770000
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
compileId uint
94080
message string
callee uses too much stack
startTime long: millis
453291697176
succeeded boolean
false
Example event data values and properties
bci int
47
callee CalleeMethod
descriptor string
(Ljava/lang/String;)Ljava/lang/StringBuilder;
name string
append
type string
java/lang/StringBuilder
caller Method
descriptor string
(Ljava/lang/String;)V
hidden boolean
false
modifiers int
1
name string
setValue
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
16
name string
jdk/jfr/internal/Control
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
compileId uint
1340
message string
inline
startTime long: millis
361701028
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();
  }
}

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling true true
default true false

Event fields with their types and descriptions
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
Example event data values and properties
action DeoptimizationAction
maybe_recompile
bci int
9
compileId uint
94775
compiler CompilerType
c2
instruction Bytecode
if_icmpge
lineNumber int
677
method Method
descriptor string
(Ljava/lang/Object;Ljava/lang/Object;I)I
hidden boolean
false
modifiers int
17
name string
indexOf$extension
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/ArrayOps$
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
profile_predicate
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
9
lineNumber int
677
method Method
descriptor string
(Ljava/lang/Object;Ljava/lang/Object;I)I
hidden boolean
false
modifiers int
17
name string
indexOf$extension
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/ArrayOps$
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
false
startTime long: millis
473517505318
Example event data values and properties
action DeoptimizationAction
reinterpret
bci int
73
compileId uint
1550
compiler CompilerType
c2
instruction Bytecode
if_icmpne
lineNumber int
545
method Method
descriptor string
()I
hidden boolean
false
modifiers int
1
name string
nextToken
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/io/StreamTokenizer
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
reason DeoptimizationReason
unstable_if
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
73
lineNumber int
545
method Method
descriptor string
()I
hidden boolean
false
modifiers int
1
name string
nextToken
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/io/StreamTokenizer
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
671789740
Example event data values and properties
action DeoptimizationAction
maybe_recompile
bci int
17
compileId uint
92297
compiler CompilerType
c2
instruction Bytecode
checkcast
lineNumber int
2395
method Method
descriptor string
(I)Lorg/sparkproject/guava/collect/MapMakerInternalMap$ReferenceEntry;
hidden boolean
false
modifiers int
0
name string
getFirst
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
8
name string
org/sparkproject/guava/collect/MapMakerInternalMap$Segment
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/guava/collect
reason DeoptimizationReason
class_check
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
17
lineNumber int
2395
method Method
descriptor string
(I)Lorg/sparkproject/guava/collect/MapMakerInternalMap$ReferenceEntry;
hidden boolean
false
modifiers int
0
name string
getFirst
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
8
name string
org/sparkproject/guava/collect/MapMakerInternalMap$Segment
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/guava/collect
type FrameType
JIT compiled
…
truncated boolean
false
startTime long: millis
461444575336

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());

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 1000 ms
default true 1000 ms

Event fields with their types and descriptions
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
Example event data values and properties
bailoutCount int
9
compileCount int
93931
invalidatedCount int
0
nmethodCodeSize ulong: bytes
145660912
nmethodsSize ulong: bytes
205313552
osrBytesCompiled ulong: bytes
0
osrCompileCount int
1040
peakTimeSpent long: millis
8163
standardBytesCompiled ulong: bytes
0
standardCompileCount int
92891
startTime long: millis
463359479464
totalTimeSpent long: millis
434175
Example event data values and properties
bailoutCount int
4
compileCount int
3003
invalidatedCount int
0
nmethodCodeSize ulong: bytes
4055744
nmethodsSize ulong: bytes
5481824
osrBytesCompiled ulong: bytes
0
osrCompileCount int
22
peakTimeSpent long: millis
190
standardBytesCompiled ulong: bytes
0
standardCompileCount int
2981
startTime long: millis
13659577464
totalTimeSpent long: millis
3137
Example event data values and properties
bailoutCount int
7
compileCount int
93404
invalidatedCount int
0
nmethodCodeSize ulong: bytes
134087328
nmethodsSize ulong: bytes
192910496
osrBytesCompiled ulong: bytes
0
osrCompileCount int
1029
peakTimeSpent long: millis
27428
standardBytesCompiled ulong: bytes
0
standardCompileCount int
92375
startTime long: millis
477284973771
totalTimeSpent long: millis
780064

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);

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
Field Type Description
threadCount int Thread Count
tieredCompilation boolean Tiered Compilation

Examples 3
Example event data values and properties
startTime long: millis
455586917476
threadCount int
3
tieredCompilation boolean
true
Example event data values and properties
startTime long: millis
479556666164
threadCount int
3
tieredCompilation boolean
true
Example event data values and properties
startTime long: millis
15623177304
threadCount int
3
tieredCompilation boolean
true

JVM: Diagnostics

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:

// dump the heap to given path.
int HeapDumper::dump(const char* path, outputStream* out, int compression) {
  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;
    }
  }

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 0 ns
default true true 0 ns

Event fields with their types and descriptions
Field Type Description
destination string Destination
size long Size
gcBeforeDump boolean GC Before Dump
onOutOfMemoryError boolean On Out of Memory Error

Examples 3
Example event data values and properties
destination string
/tmp/jfr_sample_heap_2178218860663.hprof
gcBeforeDump boolean
true
onOutOfMemoryError boolean
false
size long
14980768
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
1427293221
Example event data values and properties
destination string
/tmp/jfr_sample_heap_566482200317.hprof
gcBeforeDump boolean
true
onOutOfMemoryError boolean
false
size long
14298384
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
1017913893
Example event data values and properties
destination string
/tmp/jfr_sample_heap_690776453202.hprof
gcBeforeDump boolean
true
onOutOfMemoryError boolean
false
size long
15622345
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
1451810903

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/jvmFlag.cpp:

JVMFlag::Error JVMFlag::intAt(const JVMFlag* flag, int* value) {
  if (flag == NULL) return JVMFlag::INVALID_FLAG;
  if (!flag->is_int()) return JVMFlag::WRONG_FORMAT;
  *value = flag->get_int();
  return JVMFlag::SUCCESS;
}

JVMFlag::Error JVMFlag::intAtPut(JVMFlag* flag, int* value, JVMFlag::Flags origin) {
  if (flag == NULL) return JVMFlag::INVALID_FLAG;
  if (!flag->is_int()) return JVMFlag::WRONG_FORMAT;
  JVMFlag::Error check = apply_constraint_and_check_range_int(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
  if (check != JVMFlag::SUCCESS) return check;
  int old_value = flag->get_int();
  trace_flag_changed<EventIntFlagChanged, s4>(flag, old_value, *value, origin);
  flag->set_int(*value);
  *value = old_value;
  flag->set_origin(origin);
  return JVMFlag::SUCCESS;
}

JVMFlag::Error JVMFlagEx::intAtPut(JVMFlagsEnum flag, int value, JVMFlag::Flags origin) {
  JVMFlag* faddr = flag_from_enum(flag);
  guarantee(faddr != NULL && faddr->is_int(), "wrong flag type");
  return JVMFlag::intAtPut(faddr, &value, origin);
}

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
Field Type Description
name string Name
oldValue int Old Value
newValue int New Value
origin FlagValueOrigin Origin

Examples 3
Example event data values and properties
name string
HeapDumpGzipLevel
newValue int
1
oldValue int
0
origin FlagValueOrigin
Management
startTime long: millis
1402046663
Example event data values and properties
name string
HeapDumpGzipLevel
newValue int
1
oldValue int
0
origin FlagValueOrigin
Management
startTime long: millis
982256368
Example event data values and properties
name string
HeapDumpGzipLevel
newValue int
0
oldValue int
1
origin FlagValueOrigin
Management
startTime long: millis
1312213163

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/jvmFlag.cpp:

JVMFlag::Error JVMFlag::uintAt(const JVMFlag* flag, uint* value) {
  if (flag == NULL) return JVMFlag::INVALID_FLAG;
  if (!flag->is_uint()) return JVMFlag::WRONG_FORMAT;
  *value = flag->get_uint();
  return JVMFlag::SUCCESS;
}

JVMFlag::Error JVMFlag::uintAtPut(JVMFlag* flag, uint* value, JVMFlag::Flags origin) {
  if (flag == NULL) return JVMFlag::INVALID_FLAG;
  if (!flag->is_uint()) return JVMFlag::WRONG_FORMAT;
  JVMFlag::Error check = apply_constraint_and_check_range_uint(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
  if (check != JVMFlag::SUCCESS) return check;
  uint old_value = flag->get_uint();
  trace_flag_changed<EventUnsignedIntFlagChanged, u4>(flag, old_value, *value, origin);
  flag->set_uint(*value);
  *value = old_value;
  flag->set_origin(origin);
  return JVMFlag::SUCCESS;
}

JVMFlag::Error JVMFlagEx::uintAtPut(JVMFlagsEnum flag, uint value, JVMFlag::Flags origin) {
  JVMFlag* faddr = flag_from_enum(flag);
  guarantee(faddr != NULL && faddr->is_uint(), "wrong flag type");
  return JVMFlag::uintAtPut(faddr, &value, origin);
}

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
Field Type Description
name string Name
oldValue uint Old Value
newValue uint New Value
origin FlagValueOrigin Origin

Examples 3
Example event data values and properties
name string
FullGCHeapDumpLimit
newValue uint
0
oldValue uint
1
origin FlagValueOrigin
Management
startTime long: millis
1312263478
Example event data values and properties
name string
FullGCHeapDumpLimit
newValue uint
1
oldValue uint
0
origin FlagValueOrigin
Management
startTime long: millis
982280334
Example event data values and properties
name string
FullGCHeapDumpLimit
newValue uint
1
oldValue uint
0
origin FlagValueOrigin
Management
startTime long: millis
1402099641

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/jvmFlag.cpp:

    if (constraint != NULL) {
      status = constraint->apply_intx(new_value, verbose);
    }
  }
  return status;
}

JVMFlag::Error JVMFlag::intxAtPut(JVMFlag* flag, intx* value, JVMFlag::Flags origin) {
  if (flag == NULL) return JVMFlag::INVALID_FLAG;
  if (!flag->is_intx()) return JVMFlag::WRONG_FORMAT;
  JVMFlag::Error check = apply_constraint_and_check_range_intx(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
  if (check != JVMFlag::SUCCESS) return check;
  intx old_value = flag->get_intx();
  trace_flag_changed<EventLongFlagChanged, intx>(flag, old_value, *value, origin);
  flag->set_intx(*value);
  *value = old_value;
  flag->set_origin(origin);
  return JVMFlag::SUCCESS;
}

JVMFlag::Error JVMFlagEx::intxAtPut(JVMFlagsEnum flag, intx value, JVMFlag::Flags origin) {
  JVMFlag* faddr = flag_from_enum(flag);
  guarantee(faddr != NULL && faddr->is_intx(), "wrong flag type");
  return JVMFlag::intxAtPut(faddr, &value, origin);
}

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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/jvmFlag.cpp:

    if (constraint != NULL) {
      status = constraint->apply_uintx(new_value, verbose);
    }
  }
  return status;
}

JVMFlag::Error JVMFlag::uintxAtPut(JVMFlag* flag, uintx* value, JVMFlag::Flags origin) {
  if (flag == NULL) return JVMFlag::INVALID_FLAG;
  if (!flag->is_uintx()) return JVMFlag::WRONG_FORMAT;
  JVMFlag::Error check = apply_constraint_and_check_range_uintx(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
  if (check != JVMFlag::SUCCESS) return check;
  uintx old_value = flag->get_uintx();
  trace_flag_changed<EventUnsignedLongFlagChanged, u8>(flag, old_value, *value, origin);
  flag->set_uintx(*value);
  *value = old_value;
  flag->set_origin(origin);
  return JVMFlag::SUCCESS;
}

JVMFlag::Error JVMFlagEx::uintxAtPut(JVMFlagsEnum flag, uintx value, JVMFlag::Flags origin) {
  JVMFlag* faddr = flag_from_enum(flag);
  guarantee(faddr != NULL && faddr->is_uintx(), "wrong flag type");
  return JVMFlag::uintxAtPut(faddr, &value, origin);
}

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

    if (constraint != NULL) {
      status = constraint->apply_uint64_t(new_value, verbose);
    }
  }
  return status;
}

JVMFlag::Error JVMFlag::uint64_tAtPut(JVMFlag* flag, uint64_t* value, JVMFlag::Flags origin) {
  if (flag == NULL) return JVMFlag::INVALID_FLAG;
  if (!flag->is_uint64_t()) return JVMFlag::WRONG_FORMAT;
  JVMFlag::Error check = apply_constraint_and_check_range_uint64_t(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
  if (check != JVMFlag::SUCCESS) return check;
  uint64_t old_value = flag->get_uint64_t();
  trace_flag_changed<EventUnsignedLongFlagChanged, u8>(flag, old_value, *value, origin);
  flag->set_uint64_t(*value);
  *value = old_value;
  flag->set_origin(origin);
  return JVMFlag::SUCCESS;
}

JVMFlag::Error JVMFlagEx::uint64_tAtPut(JVMFlagsEnum flag, uint64_t value, JVMFlag::Flags origin) {
  JVMFlag* faddr = flag_from_enum(flag);
  guarantee(faddr != NULL && faddr->is_uint64_t(), "wrong flag type");
  return JVMFlag::uint64_tAtPut(faddr, &value, origin);
}

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

      status = constraint->apply_size_t(new_value, verbose);
    }
  }
  return status;
}


JVMFlag::Error JVMFlag::size_tAtPut(JVMFlag* flag, size_t* value, JVMFlag::Flags origin) {
  if (flag == NULL) return JVMFlag::INVALID_FLAG;
  if (!flag->is_size_t()) return JVMFlag::WRONG_FORMAT;
  JVMFlag::Error check = apply_constraint_and_check_range_size_t(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
  if (check != JVMFlag::SUCCESS) return check;
  size_t old_value = flag->get_size_t();
  trace_flag_changed<EventUnsignedLongFlagChanged, u8>(flag, old_value, *value, origin);
  flag->set_size_t(*value);
  *value = old_value;
  flag->set_origin(origin);
  return JVMFlag::SUCCESS;
}

JVMFlag::Error JVMFlagEx::size_tAtPut(JVMFlagsEnum flag, size_t value, JVMFlag::Flags origin) {
  JVMFlag* faddr = flag_from_enum(flag);
  guarantee(faddr != NULL && faddr->is_size_t(), "wrong flag type");
  return JVMFlag::size_tAtPut(faddr, &value, origin);
}

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
Field Type Description
name string Name
oldValue ulong Old Value
newValue ulong New Value
origin FlagValueOrigin Origin

Examples 3
Example event data values and properties
name string
SoftMaxHeapSize
newValue ulong
1863319552
oldValue ulong
4192206848
origin FlagValueOrigin
Management
startTime long: millis
982329037
Example event data values and properties
name string
SoftMaxHeapSize
newValue ulong
4192206848
oldValue ulong
2096103424
origin FlagValueOrigin
Management
startTime long: millis
1312393211
Example event data values and properties
name string
MaxHeapFreeRatio
newValue ulong
70
oldValue ulong
75
origin FlagValueOrigin
Management
startTime long: millis
1401847272

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/jvmFlag.cpp:

    if (constraint != NULL) {
      status = constraint->apply_double(new_value, verbose);
    }
  }
  return status;
}

JVMFlag::Error JVMFlag::doubleAtPut(JVMFlag* flag, double* value, JVMFlag::Flags origin) {
  if (flag == NULL) return JVMFlag::INVALID_FLAG;
  if (!flag->is_double()) return JVMFlag::WRONG_FORMAT;
  JVMFlag::Error check = apply_constraint_and_check_range_double(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
  if (check != JVMFlag::SUCCESS) return check;
  double old_value = flag->get_double();
  trace_flag_changed<EventDoubleFlagChanged, double>(flag, old_value, *value, origin);
  flag->set_double(*value);
  *value = old_value;
  flag->set_origin(origin);
  return JVMFlag::SUCCESS;
}

JVMFlag::Error JVMFlagEx::doubleAtPut(JVMFlagsEnum flag, double value, JVMFlag::Flags origin) {
  JVMFlag* faddr = flag_from_enum(flag);
  guarantee(faddr != NULL && faddr->is_double(), "wrong flag type");
  return JVMFlag::doubleAtPut(faddr, &value, origin);
}

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
Field Type Description
name string Name
oldValue double Old Value
newValue double New Value
origin FlagValueOrigin Origin

Examples 3
Example event data values and properties
name string
G1PeriodicGCSystemLoadThreshold
newValue double
0.5
oldValue double
0.0
origin FlagValueOrigin
Management
startTime long: millis
1312118105
Example event data values and properties
name string
G1PeriodicGCSystemLoadThreshold
newValue double
0.0
oldValue double
0.5
origin FlagValueOrigin
Management
startTime long: millis
982236578
Example event data values and properties
name string
G1PeriodicGCSystemLoadThreshold
newValue double
0.5
oldValue double
0.0
origin FlagValueOrigin
Management
startTime long: millis
1401967225

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/jvmFlag.cpp:

JVMFlag::Error JVMFlag::boolAt(const JVMFlag* flag, bool* value) {
  if (flag == NULL) return JVMFlag::INVALID_FLAG;
  if (!flag->is_bool()) return JVMFlag::WRONG_FORMAT;
  *value = flag->get_bool();
  return JVMFlag::SUCCESS;
}

JVMFlag::Error JVMFlag::boolAtPut(JVMFlag* flag, bool* value, JVMFlag::Flags origin) {
  if (flag == NULL) return JVMFlag::INVALID_FLAG;
  if (!flag->is_bool()) return JVMFlag::WRONG_FORMAT;
  JVMFlag::Error check = apply_constraint_and_check_range_bool(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
  if (check != JVMFlag::SUCCESS) return check;
  bool old_value = flag->get_bool();
  trace_flag_changed<EventBooleanFlagChanged, bool>(flag, old_value, *value, origin);
  flag->set_bool(*value);
  *value = old_value;
  flag->set_origin(origin);
  return JVMFlag::SUCCESS;
}

JVMFlag::Error JVMFlagEx::boolAtPut(JVMFlagsEnum flag, bool value, JVMFlag::Flags origin) {
  JVMFlag* faddr = flag_from_enum(flag);
  guarantee(faddr != NULL && faddr->is_bool(), "wrong flag type");
  return JVMFlag::boolAtPut(faddr, &value, origin);
}

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
Field Type Description
name string Name
oldValue boolean Old Value
newValue boolean New Value
origin FlagValueOrigin Origin

Examples 3
Example event data values and properties
name string
PrintConcurrentLocks
newValue boolean
true
oldValue boolean
false
origin FlagValueOrigin
Management
startTime long: millis
981978980
Example event data values and properties
name string
PrintConcurrentLocks
newValue boolean
false
oldValue boolean
true
origin FlagValueOrigin
Management
startTime long: millis
1401681274
Example event data values and properties
name string
PrintConcurrentLocks
newValue boolean
false
oldValue boolean
true
origin FlagValueOrigin
Management
startTime long: millis
1311830235

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/jvmFlag.cpp:

JVMFlag::Error JVMFlag::ccstrAt(const JVMFlag* flag, ccstr* value) {
  if (flag == NULL) return JVMFlag::INVALID_FLAG;
  if (!flag->is_ccstr()) return JVMFlag::WRONG_FORMAT;
  *value = flag->get_ccstr();
  return JVMFlag::SUCCESS;
}

JVMFlag::Error JVMFlag::ccstrAtPut(JVMFlag* flag, ccstr* value, JVMFlag::Flags 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<EventStringFlagChanged, const char*>(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) {
    // Prior value is NOT heap allocated, but was a literal constant.
    old_value = os::strdup_check_oom(old_value);
  }
  *value = old_value;
  flag->set_origin(origin);
  return JVMFlag::SUCCESS;
}

JVMFlag::Error JVMFlagEx::ccstrAtPut(JVMFlagsEnum flag, ccstr value, JVMFlag::Flags origin) {
  JVMFlag* faddr = flag_from_enum(flag);
  guarantee(faddr != NULL && faddr->is_ccstr(), "wrong flag type");
  ccstr old_value = faddr->get_ccstr();
  trace_flag_changed<EventStringFlagChanged, const char*>(faddr, old_value, value, origin);
  char* new_value = os::strdup_check_oom(value);
  faddr->set_ccstr(new_value);
  if (!faddr->is_default() && old_value != NULL) {
    // Prior value is heap allocated so free it.
    FREE_C_HEAP_ARRAY(char, old_value);
  }
  faddr->set_origin(origin);
  return JVMFlag::SUCCESS;
}

extern "C" {

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
Field Type Description
name string Name
oldValue string Old Value
newValue string New Value
origin FlagValueOrigin Origin

Examples 3
Example event data values and properties
name string
HeapDumpPath
newValue string
/tmp/jfr_heap
oldValue string
null
origin FlagValueOrigin
Management
startTime long: millis
1401893799
Example event data values and properties
name string
HeapDumpPath
newValue string
/tmp/jfr_heap
oldValue string
null
origin FlagValueOrigin
Management
startTime long: millis
1312044006
Example event data values and properties
name string
HeapDumpPath
newValue string
/tmp/jfr_heap
oldValue string
null
origin FlagValueOrigin
Management
startTime long: millis
982179352

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

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
Field Type Description
name string Name
value int Value
origin FlagValueOrigin Origin

Examples 3
Example event data values and properties
name string
ThreadPriorityPolicy
origin FlagValueOrigin
Default
startTime long: millis
449445152958
value int
0
Example event data values and properties
name string
VMThreadPriority
origin FlagValueOrigin
Default
startTime long: millis
453049971785
value int
-1
Example event data values and properties
name string
DeoptimizeObjectsALotThreadCountAll
origin FlagValueOrigin
Default
startTime long: millis
364952572
value int
1

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

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
Field Type Description
name string Name
value uint Value
origin FlagValueOrigin Origin

Examples 3
Example event data values and properties
name string
GCTimeRatio
origin FlagValueOrigin
Default
startTime long: millis
453049989118
value uint
12
Example event data values and properties
name string
AOTCodeMaxSize
origin FlagValueOrigin
Default
startTime long: millis
8025096017
value uint
10485760
Example event data values and properties
name string
StringDeduplicationAgeThreshold
origin FlagValueOrigin
Default
startTime long: millis
447754322824
value uint
3

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

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
Field Type Description
name string Name
value long Value
origin FlagValueOrigin Origin

Examples 3
Example event data values and properties
name string
Tier4CompileThreshold
origin FlagValueOrigin
Default
startTime long: millis
447754340000
value long
15000
Example event data values and properties
name string
TieredCompileTaskTimeout
origin FlagValueOrigin
Default
startTime long: millis
453050009716
value long
50
Example event data values and properties
name string
Tier3DelayOff
origin FlagValueOrigin
Default
startTime long: millis
365023375
value long
2

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

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
Field Type Description
name string Name
value ulong Value
origin FlagValueOrigin Origin

Examples 3
Example event data values and properties
name string
G1SATBProcessCompletedThreshold
origin FlagValueOrigin
Default
startTime long: millis
447754355944
value ulong
20
Example event data values and properties
name string
ProfiledCodeHeapSize
origin FlagValueOrigin
Ergonomic
startTime long: millis
365038684
value ulong
123731968
Example event data values and properties
name string
NewSizeThreadIncrease
origin FlagValueOrigin
Default
startTime long: millis
453050047687
value ulong
5320

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

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
Field Type Description
name string Name
value double Value
origin FlagValueOrigin Origin

Examples 3
Example event data values and properties
name string
MinRAMPercentage
origin FlagValueOrigin
Default
startTime long: millis
462141821066
value double
50.0
Example event data values and properties
name string
InitialRAMPercentage
origin FlagValueOrigin
Default
startTime long: millis
449445213319
value double
1.5625
Example event data values and properties
name string
ZFragmentationLimit
origin FlagValueOrigin
Default
startTime long: millis
8025166699
value double
5.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

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
Field Type Description
name string Name
value boolean Value
origin FlagValueOrigin Origin

Examples 3
Example event data values and properties
name string
PrintIdeal
origin FlagValueOrigin
Default
startTime long: millis
453050071833
value boolean
false
Example event data values and properties
name string
UseLoopCounter
origin FlagValueOrigin
Default
startTime long: millis
447754433120
value boolean
true
Example event data values and properties
name string
UseCLMUL
origin FlagValueOrigin
Default
startTime long: millis
365062759
value boolean
true

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

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
Field Type Description
name string Name
value string Value
origin FlagValueOrigin Origin

Examples 3
Example event data values and properties
name string
ExtraSharedClassListFile
origin FlagValueOrigin
Default
startTime long: millis
447754449485
value string
null
Example event data values and properties
name string
PrintIdealGraphAddress
origin FlagValueOrigin
Default
startTime long: millis
453050146262
value string
127.0.0.1
Example event data values and properties
name string
AOTCache
origin FlagValueOrigin
Default
startTime long: millis
365137820
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();
  }
}

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
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
Example event data values and properties
cause GCCause
G1 Evacuation Pause
gcId uint
82
longestPause Tickspan
1198037
name GCName
G1New
startTime long: millis
2122111791
sumOfPauses Tickspan
1198037
Example event data values and properties
cause GCCause
G1 Humongous Allocation
gcId uint
1087
longestPause Tickspan
104245825
name GCName
G1Old
startTime long: millis
457373887263
sumOfPauses Tickspan
104299946
Example event data values and properties
cause GCCause
Allocation Failure
gcId uint
352
longestPause Tickspan
3998740
name GCName
ParallelScavenge
startTime long: millis
465223122389
sumOfPauses Tickspan
3998740

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);

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
densePrefix ulong: address Dense Prefix The address of the dense prefix, used when compacting

Examples 2
Example event data values and properties
densePrefix ulong: address
30428102656
gcId uint
354
startTime long: millis
466238525289
Example event data values and properties
densePrefix ulong: address
30173822976
gcId uint
98
startTime long: millis
2307580089

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();

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
tenuringThreshold uint Tenuring Threshold

Examples 3
Example event data values and properties
gcId uint
361
startTime long: millis
476676237828
tenuringThreshold uint
1
Example event data values and properties
gcId uint
1147
startTime long: millis
475385682757
tenuringThreshold uint
15
Example event data values and properties
gcId uint
166
startTime long: millis
3128559731
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());

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier

Examples 3
Example event data values and properties
gcId uint
1188
startTime long: millis
510409120603
Example event data values and properties
gcId uint
150
startTime long: millis
2906045140
Example event data values and properties
gcId uint
374
startTime long: millis
492366463917

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 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:

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

void G1NewTracer::send_g1_young_gc_event() {
  EventG1GarbageCollection e(UNTIMED);
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_type(_g1_young_gc_info.type());
    e.set_starttime(_shared_gc_info.start_timestamp());
    e.set_endtime(_shared_gc_info.end_timestamp());
    e.commit();
  }
}

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

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
type G1YCType Type

Examples 3
Example event data values and properties
gcId uint
58
startTime long: millis
1862399081
type G1YCType
Concurrent Start
Example event data values and properties
gcId uint
1070
startTime long: millis
454093079627
type G1YCType
Prepare Mixed
Example event data values and properties
gcId uint
1240
startTime long: millis
493902594292
type G1YCType
Prepare Mixed

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();
}

Event configuration settings across JFR profiles
Configuration enabled period
profiling true everyChunk
default true everyChunk

Event fields with their types and descriptions
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
Example event data values and properties
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
468957884256
usesDynamicGCThreads boolean
true
youngCollector GCName
G1New
Example event data values and properties
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
15645408323
usesDynamicGCThreads boolean
true
youngCollector GCName
G1New
Example event data values and properties
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
450823415782
usesDynamicGCThreads boolean
true
youngCollector GCName
ParallelScavenge

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());

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
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
Example event data values and properties
initialTenuringThreshold ubyte
7
maxTenuringThreshold ubyte
15
startTime long: millis
375561806
Example event data values and properties
initialTenuringThreshold ubyte
7
maxTenuringThreshold ubyte
15
startTime long: millis
469640200530
Example event data values and properties
initialTenuringThreshold ubyte
7
maxTenuringThreshold ubyte
15
startTime long: millis
455797547734

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());

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
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
Example event data values and properties
minTLABSize ulong: bytes
2048
startTime long: millis
375563028
tlabRefillWasteLimit ulong: bytes
64
usesTLABs boolean
true
Example event data values and properties
minTLABSize ulong: bytes
2048
startTime long: millis
471028229558
tlabRefillWasteLimit ulong: bytes
64
usesTLABs boolean
true
Example event data values and properties
minTLABSize ulong: bytes
2048
startTime long: millis
469640201472
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) {

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
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
Example event data values and properties
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
479772422646
usesCompressedOops boolean
true
Example event data values and properties
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
494787685734
usesCompressedOops boolean
true
Example event data values and properties
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
23271499268
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()) {

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
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
Example event data values and properties
maxSize ulong: bytes
1396703232
minSize ulong: bytes
85983232
newRatio uint
2
startTime long: millis
462655813013
Example event data values and properties
maxSize ulong: bytes
2514485248
minSize ulong: bytes
1363144
newRatio uint
2
startTime long: millis
462354500851
Example event data values and properties
maxSize ulong: bytes
2514485248
minSize ulong: bytes
1363144
newRatio uint
2
startTime long: millis
23271500440

JVM: GC: Detailed

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();
  }
}

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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
Example event data values and properties
gcId uint
1179
gcTime long: millis
3
pauseTarget long: millis
200
startTime long: millis
478357351384
timeSlice long: millis
201
Example event data values and properties
gcId uint
1171
gcTime long: millis
10
pauseTarget long: millis
200
startTime long: millis
484654640920
timeSlice long: millis
201
Example event data values and properties
gcId uint
116
gcTime long: millis
6
pauseTarget long: millis
200
startTime long: millis
2493628439
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:

void G1NewTracer::send_g1_young_gc_event() {
  EventG1GarbageCollection e(UNTIMED);
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_type(_g1_young_gc_info.type());
    e.set_starttime(_shared_gc_info.start_timestamp());
    e.set_endtime(_shared_gc_info.end_timestamp());
    e.commit();
  }
}

void G1NewTracer::send_evacuation_info_event(G1EvacuationInfo* 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();

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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
Example event data values and properties
allocationRegions uint
2
allocationRegionsUsedAfter ulong: bytes
2121824
allocationRegionsUsedBefore ulong: bytes
0
bytesCopied ulong: bytes
2121824
cSetRegions uint
5
cSetUsedAfter ulong: bytes
0
cSetUsedBefore ulong: bytes
10482424
gcId uint
53
regionsFreed uint
5
startTime long: millis
1809089198
Example event data values and properties
allocationRegions uint
2
allocationRegionsUsedAfter ulong: bytes
2865416
allocationRegionsUsedBefore ulong: bytes
0
bytesCopied ulong: bytes
2865416
cSetRegions uint
209
cSetUsedAfter ulong: bytes
0
cSetUsedBefore ulong: bytes
436301192
gcId uint
1233
regionsFreed uint
209
startTime long: millis
491809439920
Example event data values and properties
allocationRegions uint
1
allocationRegionsUsedAfter ulong: bytes
1562128
allocationRegionsUsedBefore ulong: bytes
0
bytesCopied ulong: bytes
1562128
cSetRegions uint
242
cSetUsedAfter ulong: bytes
0
cSetUsedBefore ulong: bytes
507510784
gcId uint
1164
regionsFreed uint
242
startTime long: millis
480906138719

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

Event configuration settings across JFR profiles
Configuration enabled
profiling false
default false

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
objectClass Class Object Class
count long Count
totalSize ulong: bytes Total Size

Examples 3
Example event data values and properties
count long
134926
gcId uint
1075
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/lang/Class
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
startTime long: millis
455145886101
totalSize ulong: bytes
15727584
Example event data values and properties
count long
3346
gcId uint
338
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1040
name string
[Ljava/util/concurrent/ConcurrentHashMap$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/concurrent
startTime long: millis
447891749315
totalSize ulong: bytes
28598752
Example event data values and properties
count long
7030
gcId uint
31
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
8
name string
java/util/concurrent/ConcurrentHashMap$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/concurrent
startTime long: millis
1547566847
totalSize ulong: bytes
168720

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();

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
Field Type Description
statistics G1EvacuationStatistics struct Evacuation Statistics

Examples 3
Example event data values and properties
startTime long: millis
1534448372
statistics G1EvacuationStatistics
allocated ulong: bytes
3521952
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
30
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
2
undoWaste ulong: bytes
0
used ulong: bytes
3146544
wasted ulong: bytes
58992
Example event data values and properties
startTime long: millis
473913240726
statistics G1EvacuationStatistics
allocated ulong: bytes
630000
directAllocated ulong: bytes
157752
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
1142
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
603592
wasted ulong: bytes
3712
Example event data values and properties
startTime long: millis
499343372889
statistics G1EvacuationStatistics
allocated ulong: bytes
7026736
directAllocated ulong: bytes
262160
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
1260
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
4
undoWaste ulong: bytes
0
used ulong: bytes
6039696
wasted ulong: bytes
1192

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,

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
Field Type Description
statistics G1EvacuationStatistics struct Evacuation Statistics

Examples 3
Example event data values and properties
startTime long: millis
2000778689
statistics G1EvacuationStatistics
allocated ulong: bytes
0
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
71
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
0
wasted ulong: bytes
0
Example event data values and properties
startTime long: millis
489415862741
statistics G1EvacuationStatistics
allocated ulong: bytes
0
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
1223
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
0
undoWaste ulong: bytes
0
used ulong: bytes
0
wasted ulong: bytes
0
Example event data values and properties
startTime long: millis
468669655850
statistics G1EvacuationStatistics
allocated ulong: bytes
49152
directAllocated ulong: bytes
47672
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
1123
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
43208
wasted ulong: bytes
1136

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();

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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 initial mark to the first mixed GC

Examples 3
Example event data values and properties
currentOccupancy ulong: bytes
10848560
gcId uint
44
lastMarkingDuration long: millis
50
recentAllocationRate double: bytes-per-second
9.541052997618986E8
recentMutatorAllocationSize ulong: bytes
1558448
recentMutatorDuration long: millis
1
startTime long: millis
1717984241
targetOccupancy ulong: bytes
29360128
threshold ulong: bytes
13212057
thresholdPercentage float: percentage
0.45
Example event data values and properties
currentOccupancy ulong: bytes
285472056
gcId uint
1263
lastMarkingDuration long: millis
868
recentAllocationRate double: bytes-per-second
0.0
recentMutatorAllocationSize ulong: bytes
0
recentMutatorDuration long: millis
518
startTime long: millis
500677424881
targetOccupancy ulong: bytes
2218786816
threshold ulong: bytes
314458748
thresholdPercentage float: percentage
0.14172554
Example event data values and properties
currentOccupancy ulong: bytes
456400336
gcId uint
1114
lastMarkingDuration long: millis
1086
recentAllocationRate double: bytes-per-second
2.88972337853357E8
recentMutatorAllocationSize ulong: bytes
199229440
recentMutatorDuration long: millis
689
startTime long: millis
465634252215
targetOccupancy ulong: bytes
874512384
threshold ulong: bytes
214254252
thresholdPercentage float: percentage
0.24499853

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();

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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 initial mark to the first mixed GC
predictionActive boolean Prediction Active Indicates whether the adaptive IHOP prediction is active

Examples 3
Example event data values and properties
additionalBufferSize ulong: bytes
1335885824
currentOccupancy ulong: bytes
272586784
gcId uint
1181
ihopTargetOccupancy ulong: bytes
2117808947
predictedAllocationRate double: bytes-per-second
4.132570245680424E8
predictedMarkingDuration long: millis
2036
predictionActive boolean
true
startTime long: millis
479548703618
threshold ulong: bytes
0
thresholdPercentage float: percentage
0.0
Example event data values and properties
additionalBufferSize ulong: bytes
6291456
currentOccupancy ulong: bytes
15975392
gcId uint
187
ihopTargetOccupancy ulong: bytes
27892121
predictedAllocationRate double: bytes-per-second
9.760328697798681E8
predictedMarkingDuration long: millis
100
predictionActive boolean
false
startTime long: millis
3403424916
threshold ulong: bytes
13212057
thresholdPercentage float: percentage
0.4736842
Example event data values and properties
additionalBufferSize ulong: bytes
364904448
currentOccupancy ulong: bytes
584270992
gcId uint
1105
ihopTargetOccupancy ulong: bytes
822817587
predictedAllocationRate double: bytes-per-second
1.5673204779473382E8
predictedMarkingDuration long: millis
1551
predictionActive boolean
true
startTime long: millis
463581160843
threshold ulong: bytes
214789396
thresholdPercentage float: percentage
0.26104134

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();
  }
}

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default false

Event fields with their types and descriptions
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
Example event data values and properties
gcId uint
1070
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
80
plabSize ulong: bytes
27008
startTime long: millis
454097420600
tenured boolean
false
tenuringAge uint
0
Example event data values and properties
gcId uint
353
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/lang/Double
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
objectSize ulong: bytes
16
plabSize ulong: bytes
8184
startTime long: millis
466146298559
tenured boolean
true
tenuringAge uint
1
Example event data values and properties
gcId uint
4
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
plabSize ulong: bytes
26456
startTime long: millis
570136144
tenured boolean
false
tenuringAge uint
1

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 {

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default false

Event fields with their types and descriptions
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
Example event data values and properties
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
564245484
tenured boolean
false
tenuringAge uint
0
Example event data values and properties
gcId uint
353
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
23616
startTime long: millis
466147615138
tenured boolean
true
tenuringAge uint
1
Example event data values and properties
gcId uint
1079
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
280080
startTime long: millis
456502720214
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;

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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();

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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());

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier

Examples 3
Example event data values and properties
gcId uint
660
startTime long: millis
9273609943
Example event data values and properties
gcId uint
1125
startTime long: millis
468957467511
Example event data values and properties
gcId uint
1277
startTime long: millis
518095347708

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, Thread* thread) {
  JFR_ONLY(JfrAllocationTracer tracer(obj, alloc_size, 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();
  }
}

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling false true
default false true

Event fields with their types and descriptions
Field Type Description
gcId uint Pending GC Identifier
size ulong: bytes Allocation Size

Examples 3
Example event data values and properties
gcId uint
361
size ulong: bytes
40
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
5
lineNumber int
107
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/util/HashSet
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
Inlined
…
truncated boolean
true
startTime long: millis
476676136069
Example event data values and properties
gcId uint
20
size ulong: bytes
4112
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
1187943201
Example event data values and properties
gcId uint
1122
size ulong: bytes
190208
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
false
startTime long: millis
468268888371

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();
}

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
age uint Age
size ulong: bytes Size

Examples 3
Example event data values and properties
age uint
12
gcId uint
4
size ulong: bytes
0
startTime long: millis
570471405
Example event data values and properties
age uint
1
gcId uint
1363
size ulong: bytes
3103944
startTime long: millis
557690110628
Example event data values and properties
age uint
2
gcId uint
1073
size ulong: bytes
0
startTime long: millis
454987311162

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();
  }
}

Event configuration settings across JFR profiles
Configuration enabled
profiling false
default false

Event fields with their types and descriptions
Field Type Description
index uint Index
from G1HeapRegionType From
to G1HeapRegionType To
start ulong: address Start
used ulong: bytes Used

Examples 3
Example event data values and properties
from G1HeapRegionType
Eden
index uint
404
start ulong: address
31014780928
startTime long: millis
453256930674
to G1HeapRegionType
Free
used ulong: bytes
0
Example event data values and properties
from G1HeapRegionType
Free
index uint
359
start ulong: address
30918311936
startTime long: millis
475708033294
to G1HeapRegionType
Eden
used ulong: bytes
0
Example event data values and properties
from G1HeapRegionType
Eden
index uint
27
start ulong: address
30224154624
startTime long: millis
612609746
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

Event configuration settings across JFR profiles
Configuration enabled period
profiling false everyChunk
default false everyChunk

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
objectClass Class Object Class
count long Count
totalSize ulong: bytes Total Size

Examples 3
Example event data values and properties
count long
1141
gcId uint
24
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/HashMap
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
1436575917
totalSize ulong: bytes
45640
Example event data values and properties
count long
27183
gcId uint
1072
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
454808271708
totalSize ulong: bytes
2145696
Example event data values and properties
count long
19479
gcId uint
338
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[D
package Package
null
startTime long: millis
447891749315
totalSize ulong: bytes
1654048

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);

Event configuration settings across JFR profiles
Configuration enabled period
profiling false everyChunk
default false everyChunk

Event fields with their types and descriptions
Field Type Description
index uint Index
type G1HeapRegionType Type
start ulong: address Start
used ulong: bytes Used

Examples 3
Example event data values and properties
index uint
10
start ulong: address
30186405888
startTime long: millis
476970585615
type G1HeapRegionType
Old
used ulong: bytes
2097128
Example event data values and properties
index uint
318
start ulong: address
30834425856
startTime long: millis
453269701022
type G1HeapRegionType
Free
used ulong: bytes
0
Example event data values and properties
index uint
4
start ulong: address
30175920128
startTime long: millis
8046833425
type G1HeapRegionType
Free
used ulong: bytes
0

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();

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

    // Wait for allocation to complete, fail or request a GC
    result = allocation->wait();

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
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

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 15+ 1 ms
default true true 15+ 1 ms

Event fields with their types and descriptions
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
noReserve boolean 11 until JDK 16 No Reserve

Examples 2
Example event data values and properties
committed ulong: bytes
0
nonBlocking boolean
false
size ulong: bytes
2097152
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(I[DI[DIILorg/netlib/util/doubleW;)V
hidden boolean
false
modifiers int
10
name string
dlarfg_adapter
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/netlib/lapack/Dsytd2
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/netlib/lapack
type FrameType
JIT compiled
…
truncated boolean
false
startTime long: millis
619110869415
type ZPageTypeType
Small
Example event data values and properties
committed ulong: bytes
0
nonBlocking boolean
false
size ulong: bytes
2097152
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
120
lineNumber int
275
method Method
descriptor string
()V
hidden boolean
false
modifiers int
2
name string
fill
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/io/BufferedInputStream
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
791861259
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:

    _medium.register_garbage_page(page);
  } else {
    _large.register_garbage_page(page);
  }
}

void ZRelocationSetSelector::select(ZRelocationSet* relocation_set) {
  // 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();

  // Populate relocation set
  relocation_set->populate(_medium.selected(), _medium.nselected(),
                           _small.selected(), _small.nselected());

  // Send event

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
Field Type Description
total ulong: bytes Total
empty ulong: bytes Empty
compactingFrom ulong: bytes until JDK 16 Compacting From
compactingTo ulong: bytes until JDK 16 Compacting To

Examples 2
Example event data values and properties
empty ulong: bytes
33554432
startTime long: millis
2520057669
total ulong: bytes
35651584
Example event data values and properties
empty ulong: bytes
1537212416
startTime long: millis
656035954675
total ulong: bytes
1973420032

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._compacting_from = selected_from * _page_size;
  _stats._compacting_to = selected_to * _page_size;

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

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.compacting_from(), _stats.compacting_to());
}

ZRelocationSetSelector::ZRelocationSetSelector() :

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
Field Type Description
type ZPageTypeType Type
pages ulong 17 until JDK 21 Pages
total ulong: bytes Total
empty ulong: bytes Empty
compactingFrom ulong: bytes until JDK 16 Compacting From
compactingTo ulong: bytes until JDK 16 Compacting To

Examples 2
Example event data values and properties
empty ulong: bytes
0
startTime long: millis
1897857158
total ulong: bytes
0
type ZPageTypeType
Large
Example event data values and properties
empty ulong: bytes
434110464
startTime long: millis
639281446753
total ulong: bytes
434110464
type ZPageTypeType
Large

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/zStat.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) {

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling false 0 ms
default false 0 ms

Event fields with their types and descriptions
Field Type Description
id ZStatisticsCounterType Id
increment ulong Increment
value ulong Value

Examples 2
Example event data values and properties
id ZStatisticsCounterType
Allocation Rate
increment ulong
2097152
startTime long: millis
730812240
value ulong
77594624
Example event data values and properties
id ZStatisticsCounterType
Allocation Rate
increment ulong
2097152
startTime long: millis
619240995564
value ulong
14680064

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 ZTraceThreadPhase::ZTraceThreadPhase(const char* name) :

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling false 0 ms
default false 0 ms

Event fields with their types and descriptions
Field Type Description
id ZStatisticsSamplerType Id
value ulong Value

Examples 2
Example event data values and properties
id ZStatisticsSamplerType
Concurrent Roots ClassLoaderDataGraph
startTime long: millis
622228483959
value ulong
3266068
Example event data values and properties
id ZStatisticsSamplerType
Concurrent Mark
startTime long: millis
465740407
value ulong
8796208

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:

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);
  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_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 ZTraceThreadPhase::ZTraceThreadPhase(const char* name) :
    _start(Ticks::now()),
    _name(name) {}

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

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling false 0 ms
default false 0 ms

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
name string Name

Examples 2
Example event data values and properties
gcId uint
258
name string
Concurrent Mark Root Colored
startTime long: millis
623982820279
Example event data values and properties
gcId uint
2
name string
Concurrent Roots OopStorageSet
startTime long: millis
1397207550

ZUncommit

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

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;

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
Field Type Description
uncommitted ulong: bytes Uncommitted

Examples 1
Example event data values and properties
startTime long: millis
663183551656
uncommitted ulong: bytes
33554432

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) {

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
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;
}

Event configuration settings across JFR profiles
Configuration enabled
profiling false
default false

Event fields with their types and descriptions
Field Type Description
index uint Index
from ShenandoahHeapRegionState From
to ShenandoahHeapRegionState To
start ulong: address Start
used ulong: bytes Used

Examples 2
Example event data values and properties
from ShenandoahHeapRegionState
Empty Uncommitted
index uint
3592
start ulong: address
33934016512
startTime long: millis
721154061
to ShenandoahHeapRegionState
Regular
used ulong: bytes
0
Example event data values and properties
from ShenandoahHeapRegionState
Empty Committed
index uint
3463
start ulong: address
33798750208
startTime long: millis
549816071976
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);

Event configuration settings across JFR profiles
Configuration enabled period
profiling false everyChunk
default false everyChunk

Event fields with their types and descriptions
Field Type Description
index uint Index
state ShenandoahHeapRegionState State
start ulong: address Start
used ulong: bytes Used

Examples 2
Example event data values and properties
index uint
27
start ulong: address
30195843072
startTime long: millis
551404914978
state ShenandoahHeapRegionState
Humongous Continuation
used ulong: bytes
16
Example event data values and properties
index uint
74
start ulong: address
30245126144
startTime long: millis
388502655
state ShenandoahHeapRegionState
Empty Committed
used ulong: bytes
0

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);

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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
Example event data values and properties
gcId uint
1084
heapSpace VirtualSpace
committedEnd ulong: address
32365346816
committedSize ulong: bytes
2197815296
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520
heapUsed ulong: bytes
256197568
startTime long: millis
457145085456
when GCWhen
Before GC
Example event data values and properties
gcId uint
39
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
17841648
startTime long: millis
1632592380
when GCWhen
Before GC
Example event data values and properties
gcId uint
377
heapSpace VirtualSpace
committedEnd ulong: address
33621540864
committedSize ulong: bytes
3454009344
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520
heapUsed ulong: bytes
246161768
startTime long: millis
498761950311
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:

static JfrStructMetaspaceSizes to_struct(const MetaspaceSizes& 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.meta_space()));
    e.set_dataSpace(to_struct(meta_space_summary.data_space()));
    e.set_classSpace(to_struct(meta_space_summary.class_space()));
    e.commit();
  }
}

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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
Example event data values and properties
classSpace MetaspaceSizes
committed ulong: bytes
179175424
reserved ulong: bytes
1073741824
used ulong: bytes
177549672
dataSpace MetaspaceSizes
committed ulong: bytes
778502144
reserved ulong: bytes
805306368
used ulong: bytes
776621568
gcId uint
357
gcThreshold ulong: bytes
1596063744
metaspace MetaspaceSizes
committed ulong: bytes
957677568
reserved ulong: bytes
1879048192
used ulong: bytes
954171240
startTime long: millis
473818653229
when GCWhen
After GC
Example event data values and properties
classSpace MetaspaceSizes
committed ulong: bytes
179175424
reserved ulong: bytes
1073741824
used ulong: bytes
177477752
dataSpace MetaspaceSizes
committed ulong: bytes
778633216
reserved ulong: bytes
805306368
used ulong: bytes
776790712
gcId uint
1108
gcThreshold ulong: bytes
1595932672
metaspace MetaspaceSizes
committed ulong: bytes
957808640
reserved ulong: bytes
1879048192
used ulong: bytes
954268464
startTime long: millis
463625615193
when GCWhen
Before GC
Example event data values and properties
classSpace MetaspaceSizes
committed ulong: bytes
3014656
reserved ulong: bytes
1073741824
used ulong: bytes
2863120
dataSpace MetaspaceSizes
committed ulong: bytes
11993088
reserved ulong: bytes
67108864
used ulong: bytes
11892368
gcId uint
44
gcThreshold ulong: bytes
25034752
metaspace MetaspaceSizes
committed ulong: bytes
15007744
reserved ulong: bytes
1140850688
used ulong: bytes
14755488
startTime long: millis
1717214498
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();

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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
Example event data values and properties
edenSpace ObjectSpace
end ulong: address
34024194048
size ulong: bytes
1061158912
start ulong: address
32963035136
used ulong: bytes
121027792
fromSpace ObjectSpace
end ulong: address
34080817152
size ulong: bytes
4194304
start ulong: address
34076622848
used ulong: bytes
3191552
gcId uint
354
oldObjectSpace ObjectSpace
end ulong: address
32398901248
size ulong: bytes
2231369728
start ulong: address
30167531520
used ulong: bytes
260918584
oldSpace VirtualSpace
committedEnd ulong: address
32398901248
committedSize ulong: bytes
2231369728
reservedEnd ulong: address
32963035136
reservedSize ulong: bytes
2795503616
start ulong: address
30167531520
startTime long: millis
466238540111
toSpace ObjectSpace
end ulong: address
34217132032
size ulong: bytes
79691776
start ulong: address
34137440256
used ulong: bytes
0
when GCWhen
Before GC
youngSpace VirtualSpace
committedEnd ulong: address
34217132032
committedSize ulong: bytes
1254096896
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
1396703232
start ulong: address
32963035136
Example event data values and properties
edenSpace ObjectSpace
end ulong: address
33478934528
size ulong: bytes
515899392
start ulong: address
32963035136
used ulong: bytes
12582424
fromSpace ObjectSpace
end ulong: address
33491517440
size ulong: bytes
6291456
start ulong: address
33485225984
used ulong: bytes
0
gcId uint
20
oldObjectSpace ObjectSpace
end ulong: address
30343692288
size ulong: bytes
176160768
start ulong: address
30167531520
used ulong: bytes
6550024
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
1215878059
toSpace ObjectSpace
end ulong: address
33485225984
size ulong: bytes
6291456
start ulong: address
33478934528
used ulong: bytes
0
when GCWhen
Before GC
youngSpace VirtualSpace
committedEnd ulong: address
33491517440
committedSize ulong: bytes
528482304
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();
    }
  }

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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
Example event data values and properties
edenTotalSize ulong: bytes
524288000
edenUsedSize ulong: bytes
33554432
gcId uint
1073
numberOfRegions uint
417
startTime long: millis
454982196389
survivorUsedSize ulong: bytes
0
when GCWhen
Before GC
Example event data values and properties
edenTotalSize ulong: bytes
10485760
edenUsedSize ulong: bytes
8388608
gcId uint
27
numberOfRegions uint
17
startTime long: millis
1495302685
survivorUsedSize ulong: bytes
2097152
when GCWhen
Before GC
Example event data values and properties
edenTotalSize ulong: bytes
549319760
edenUsedSize ulong: bytes
245366784
gcId uint
1210
numberOfRegions uint
437
startTime long: millis
486891651091
survivorUsedSize ulong: bytes
134064
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);
}

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
Field Type Description
oldValue ulong: bytes Old Value
newValue ulong: bytes New Value
updater GCThresholdUpdater Updater

Examples 3
Example event data values and properties
newValue ulong: bytes
1596063744
oldValue ulong: bytes
1595736064
startTime long: millis
466437559142
updater GCThresholdUpdater
compute_new_size
Example event data values and properties
newValue ulong: bytes
1657536512
oldValue ulong: bytes
1656225792
startTime long: millis
490950780510
updater GCThresholdUpdater
compute_new_size
Example event data values and properties
newValue ulong: bytes
24707072
oldValue ulong: bytes
22020096
startTime long: millis
1328996079
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,

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling true true
default true true

Event fields with their types and descriptions
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());

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling true true
default true true

Event fields with their types and descriptions
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());

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
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
Example event data values and properties
gcId uint
1080
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
456523836520
when GCWhen
Before GC
Example event data values and properties
gcId uint
9
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
654409804
when GCWhen
Before GC
Example event data values and properties
gcId uint
362
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
477023038996
when GCWhen
Before 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.meta_space()));
    e.set_dataSpace(to_struct(meta_space_summary.data_space()));
    e.set_classSpace(to_struct(meta_space_summary.class_space()));
    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");

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
Example event data values and properties
gcId uint
47
name string
GC Pause
startTime long: millis
1750111147
Example event data values and properties
gcId uint
342
name string
GC Pause
startTime long: millis
451440548903
Example event data values and properties
gcId uint
1094
name string
GC Pause
startTime long: millis
460290745928

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.meta_space()));
    e.set_dataSpace(to_struct(meta_space_summary.data_space()));
    e.set_classSpace(to_struct(meta_space_summary.class_space()));
    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()) {

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
Example event data values and properties
gcId uint
354
name string
Compaction Phase
startTime long: millis
466421721064
Example event data values and properties
gcId uint
4
name string
Notify Soft/WeakReferences
startTime long: millis
570208081
Example event data values and properties
gcId uint
1080
name string
Notify Soft/WeakReferences
startTime long: millis
456529126351

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.data_space()));
    e.set_classSpace(to_struct(meta_space_summary.class_space()));
    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;

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
Example event data values and properties
gcId uint
1082
name string
Phase 2: Prepare parallel compaction
startTime long: millis
456836051255
Example event data values and properties
gcId uint
0
name string
Phase 1: Flush Mark Stats Cache
startTime long: millis
368317134
Example event data values and properties
gcId uint
344
name string
Par Compact
startTime long: millis
454301047110

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.class_space()));
    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;

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling false 0 ms
default false 0 ms

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
Example event data values and properties
gcId uint
338
name string
Notify and keep alive finalizable
startTime long: millis
447825316781
Example event data values and properties
gcId uint
34
name string
Unregister NMethods
startTime long: millis
1593291133
Example event data values and properties
gcId uint
1082
name string
Purge Class Loader Data
startTime long: millis
456782176847

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;

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling false 0 ms
default false 0 ms

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
Example event data values and properties
gcId uint
1267
name string
Balance queues
startTime long: millis
505074049792
Example event data values and properties
gcId uint
1109
name string
Balance queues
startTime long: millis
464135167167
Example event data values and properties
gcId uint
374
name string
Balance queues
startTime long: millis
492441585276

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:

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
Example event data values and properties
gcId uint
485
name string
Concurrent Mark From Roots
startTime long: millis
6990472533
Example event data values and properties
gcId uint
280
name string
Concurrent Init Update Refs (unload classes)
startTime long: millis
553589944829
Example event data values and properties
gcId uint
1121
name string
Concurrent Cleanup for Next Mark
startTime long: millis
468171782417

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());

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
Example event data values and properties
gcId uint
1166
name string
Preclean WeakReferences
startTime long: millis
481474640804
Example event data values and properties
gcId uint
289
name string
Trigger cleanups
startTime long: millis
568205576577
Example event data values and properties
gcId uint
3
name string
Preclean SoftReferences
startTime long: millis
577507344

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/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->max_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/g1CollectedHeap.cpp:

    _evacuation_failed = true;
  }

  _evacuation_failed_info_array[worker_id].register_copy_failure(obj->size());
  _preserved_marks_set.get(worker_id)->push_if_necessary(obj, m);
}

bool G1ParEvacuateFollowersClosure::offer_termination() {
  EventGCPhaseParallel event;
  G1ParScanThreadState* const pss = par_scan_state();
  start_term_time();
  const bool res = terminator()->offer_termination();
  end_term_time();
  event.commit(GCId::current(), pss->worker_id(), G1GCPhaseTimes::phase_name(G1GCPhaseTimes::Termination));
  return res;
}

void G1ParEvacuateFollowersClosure::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());
}

void G1CollectedHeap::complete_cleaning(BoolObjectClosure* is_alive,
                                        bool class_unloading_occurred) {

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

      _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 {

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

    for (uint worker = 0; worker < _active_workers; worker++) {
      _worker_stats[worker].~FreeCSetStats();
    }
    FREE_C_HEAP_ARRAY(FreeCSetStats, _worker_stats);
    _g1h->phase_times()->record_serial_free_cset_time_ms((Ticks::now() - serial_time).seconds() * 1000.0);
  }

  virtual void work(uint worker_id) {
    EventGCPhaseParallel event;
    Ticks start = Ticks::now();
    FreeCSetClosure cl(_surviving_young_words, worker_id, worker_stats(worker_id));
    _g1h->collection_set_par_iterate_all(&cl, &_claimer, worker_id);

    // Report the total parallel time along with some more detailed metrics.
    cl.report_timing(Ticks::now() - start);
    event.commit(GCId::current(), worker_id, G1GCPhaseTimes::phase_name(G1GCPhaseTimes::ParFreeCSet));

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

    MemRegion mr(MAX2(card_start, _scanned_to), scan_end);
    _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->mark_as_scanned(first_card, num_cards);
    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.
    _scanned_to = NULL;

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

  uint _worker_id;

  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);
    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:

    _rem_set_opt_trim_partially_time() { }

  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/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 _must_record;

public:
  G1GCParPhaseTimesTracker(G1GCPhaseTimes* phase_times, G1GCPhaseTimes::GCParPhases phase, uint worker_id, bool must_record = true);
  virtual ~G1GCParPhaseTimesTracker();
};

class G1EvacPhaseTimesTracker : public G1GCParPhaseTimesTracker {
  Tickspan _total_time;
  Tickspan _trim_time;

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/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) {

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 0 ms

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
gcWorkerId uint GC Worker Identifier
name string Name

Examples 3
Example event data values and properties
gcId uint
1065
gcWorkerId uint
0
name string
NonJavaThreadFlushLogs
startTime long: millis
453042105488
Example event data values and properties
gcId uint
1
gcWorkerId uint
2
name string
CodeRoots
startTime long: millis
564262099
Example event data values and properties
gcId uint
318
gcWorkerId uint
0
name string
Finish Mark
startTime long: millis
620202121662

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;

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
Field Type Description
gcId uint GC Identifier
type ReferenceType Type
count ulong Total Count

Examples 3
Example event data values and properties
count ulong
1456
gcId uint
353
startTime long: millis
466147958910
type ReferenceType
Weak reference
Example event data values and properties
count ulong
0
gcId uint
13
startTime long: millis
779200019
type ReferenceType
Final reference
Example event data values and properties
count ulong
316
gcId uint
1082
startTime long: millis
456773416997
type ReferenceType
Final reference

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/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);

src/hotspot/share/jfr/leakprofiler/checkpoint/eventEmitter.cpp:

  if (edge == NULL) {
    edge = edge_store->get(UnifiedOopRef::encode_in_native(sample->object_addr()));
  } else {
    gc_root_id = edge_store->gc_root_id(edge);
  }
  assert(edge != NULL, "invariant");
  const traceid object_id = edge_store->get_id(edge);
  assert(object_id != 0, "invariant");

  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_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
  // onto the thread local data structure of the emitter thread (for the duration

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();
    }
  }
};

Event configuration settings across JFR profiles
Configuration cutoff enabled stackTrace
profiling 0 ns true true
default 0 ns true false

Event fields with their types and descriptions
Field Type Description
allocationTime Ticks Allocation Time
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
Example event data values and properties
allocationTime Ticks
225557361761
arrayElements int
-2147483648
lastKnownHeapUsage ulong: bytes
101273560
object OldObject
address ulong: address
30222928184
description string
null
referrer Reference
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/agrona/concurrent/UnsafeBuffer
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/agrona/concurrent
objectAge Tickspan
284834109004
root OldObjectGcRoot
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
59
method Method
descriptor string
()V
hidden boolean
false
modifiers int
1
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
0
name string
org/lmdbjava/bench/Chronicle$1
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/lmdbjava/bench
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
510391470765
Example event data values and properties
allocationTime Ticks
25395074555
arrayElements int
4096
lastKnownHeapUsage ulong: bytes
13125584
object OldObject
address ulong: address
30174834560
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
45666643
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
25440741198
Example event data values and properties
allocationTime Ticks
244442933552
arrayElements int
77
lastKnownHeapUsage ulong: bytes
95688584
object OldObject
address ulong: address
30253451208
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
255734945103
root OldObjectGcRoot
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
()Ljava/lang/String;
hidden boolean
false
modifiers int
258
name string
initClassName
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/lang/Class
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
500177878655

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(java_lang_Thread::get_thread_status(jth->threadObj()));
    }
  }
}

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:

      last_native_ms = get_monotonic_ms();
    }
  }
}

void JfrThreadSampler::post_run() {
  this->NonJavaThread::post_run();
  delete this;
}


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();
    {

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 10 ms
default true 20 ms

Event fields with their types and descriptions
Field Type Description
sampledThread Thread Thread
stackTrace StackTrace Stack Trace
state ThreadState Thread State

Examples 3
Example event data values and properties
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Executor task launch worker for task 2.0 in stage 38.0 (TID 148)
javaThreadId long
1712
osName string
Executor task launch worker for task 2.0 in stage 38.0 (TID 148)
osThreadId long
4235
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
5
lineNumber int
63
method Method
descriptor string
(Lorg/apache/spark/rpc/netty/Inbox;)V
hidden boolean
false
modifiers int
17
name string
setActive
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/rpc/netty/MessageLoop
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
Inlined
…
truncated boolean
false
startTime long: millis
448606972511
state ThreadState
STATE_RUNNABLE
Example event data values and properties
sampledThread 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
5046
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
7
lineNumber int
245
method Method
descriptor string
()[Ljava/lang/Object;
hidden boolean
false
modifiers int
2
name string
grow
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
type FrameType
Inlined
…
truncated boolean
false
startTime long: millis
742418594
state ThreadState
STATE_RUNNABLE
Example event data values and properties
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Executor task launch worker for task 2.0 in stage 47.0 (TID 184)
javaThreadId long
1733
osName string
Executor task launch worker for task 2.0 in stage 47.0 (TID 184)
osThreadId long
4650
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
274
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/String;ID[DII[DII)V
hidden boolean
false
modifiers int
9
name string
dsyr
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/netlib/blas/Dsyr
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/netlib/blas
type FrameType
JIT compiled
…
truncated boolean
false
startTime long: millis
453720915552
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;
  JfrStackTrace _stacktrace;
  bool _success;
};

static void write_native_event(JfrThreadSampleClosure& closure, JavaThread* jt) {
  EventNativeMethodSample *ev = closure.next_event_native();
  ev->set_starttime(JfrTicks::now());
  ev->set_sampledThread(JFR_THREAD_ID(jt));
  ev->set_state(java_lang_Thread::get_thread_status(jt->threadObj()));
}

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:

void JfrThreadSampler::post_run() {
  this->NonJavaThread::post_run();
  delete this;
}


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);

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 20 ms
default true 20 ms

Event fields with their types and descriptions
Field Type Description
sampledThread Thread Thread
stackTrace StackTrace Stack Trace
state ThreadState Thread State

Examples 3
Example event data values and properties
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-1
javaThreadId long
883
osName string
finagle/netty4-2-1
osThreadId long
3325
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
449782710050
state ThreadState
STATE_RUNNABLE
Example event data values and properties
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
5014
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
16330416544
state ThreadState
STATE_RUNNABLE
Example event data values and properties
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
SparkUI-1705
javaThreadId long
1705
osName string
SparkUI-1705
osThreadId long
4618
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(IJII)I
hidden boolean
false
modifiers int
264
name string
wait
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
sun/nio/ch/EPoll
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
453544299142
state ThreadState
STATE_RUNNABLE

JVM: Runtime

BiasedLockRevocation

profiling default startTime duration eventThread stackTrace 11 17 until JDK 18

Category: Java Virtual Machine / Runtime

Revoked bias of object

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/biasedLocking.cpp:

static void post_self_revocation_event(EventBiasedLockSelfRevocation* event, Klass* k) {
  assert(event != NULL, "invariant");
  assert(k != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  event->set_lockClass(k);
  event->commit();
}

static void post_revocation_event(EventBiasedLockRevocation* event, Klass* k, RevokeOneBias* op) {
  assert(event != NULL, "invariant");
  assert(k != NULL, "invariant");
  assert(op != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  event->set_lockClass(k);
  event->set_safepointId(0);
  event->set_previousOwner(op->biased_locker());
  event->commit();
}

static void post_class_revocation_event(EventBiasedLockClassRevocation* event, Klass* k, VM_BulkRevokeBias* op) {

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

  assert(event != NULL, "invariant");
  assert(k != NULL, "invariant");
  assert(op != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  event->set_revokedClass(k);
  event->set_disableBiasing(!op->is_bulk_rebias());
  event->set_safepointId(op->safepoint_id());
  event->commit();
}


BiasedLocking::Condition BiasedLocking::single_revoke_with_handshake(Handle obj, JavaThread *requester, JavaThread *biaser) {

  EventBiasedLockRevocation event;
  if (PrintBiasedLockingStatistics) {
    Atomic::inc(handshakes_count_addr());
  }
  log_info(biasedlocking, handshake)("JavaThread " INTPTR_FORMAT " handshaking JavaThread "
                                     INTPTR_FORMAT " to revoke object " INTPTR_FORMAT, p2i(requester),
                                     p2i(biaser), p2i(obj()));

  RevokeOneBias revoke(obj, requester, biaser);
  bool executed = Handshake::execute_direct(&revoke, biaser);
  if (revoke.status_code() == NOT_REVOKED) {
    return NOT_REVOKED;

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 0 ms
default true true 0 ms

Event fields with their types and descriptions
Field Type Description
lockClass Class Lock Class Class of object whose biased lock was revoked
safepointId ulong Safepoint Identifier
previousOwner Thread Previous Owner Thread owning the bias before revocation

BiasedLockSelfRevocation

profiling default startTime duration eventThread stackTrace 11 17 until JDK 18

Category: Java Virtual Machine / Runtime

Revoked bias of object biased towards own thread

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/biasedLocking.cpp:

    _status_code = BiasedLocking::NOT_REVOKED;
  }

  BiasedLocking::Condition status_code() const {
    return _status_code;
  }

  traceid biased_locker() const {
    return _biased_locker_id;
  }
};


static void post_self_revocation_event(EventBiasedLockSelfRevocation* event, Klass* k) {
  assert(event != NULL, "invariant");
  assert(k != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  event->set_lockClass(k);
  event->commit();
}

static void post_revocation_event(EventBiasedLockRevocation* event, Klass* k, RevokeOneBias* op) {
  assert(event != NULL, "invariant");
  assert(k != NULL, "invariant");
  assert(op != NULL, "invariant");

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

  JavaThread* thread = (JavaThread*)THREAD;

  markWord mark = obj->mark();

  if (!mark.has_bias_pattern()) {
    return;
  }

  Klass *k = obj->klass();
  assert(mark.biased_locker() == thread &&
         k->prototype_header().bias_epoch() == mark.bias_epoch(), "Revoke failed, unhandled biased lock state");
  ResourceMark rm;
  log_info(biasedlocking)("Revoking bias by walking my own stack:");
  EventBiasedLockSelfRevocation event;
  BiasedLocking::walk_stack_and_revoke(obj(), (JavaThread*) thread);
  thread->set_cached_monitor_info(NULL);
  assert(!obj->mark().has_bias_pattern(), "invariant");
  if (event.should_commit()) {
    post_self_revocation_event(&event, k);
  }
}

void BiasedLocking::revoke(Handle obj, TRAPS) {
  assert(!SafepointSynchronize::is_at_safepoint(), "must not be called while at safepoint");

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

    HeuristicsResult heuristics = update_heuristics(obj());
    if (heuristics == HR_NOT_BIASED) {
      return;
    } else if (heuristics == HR_SINGLE_REVOKE) {
      JavaThread *blt = mark.biased_locker();
      assert(blt != NULL, "invariant");
      if (blt == THREAD) {
        // A thread is trying to revoke the bias of an object biased
        // toward it, again likely due to an identity hash code
        // computation. We can again avoid a safepoint/handshake in this case
        // since we are only going to walk our own stack. There are no
        // races with revocations occurring in other threads because we
        // reach no safepoints in the revocation path.
        EventBiasedLockSelfRevocation event;
        ResourceMark rm;
        walk_stack_and_revoke(obj(), blt);
        blt->set_cached_monitor_info(NULL);
        assert(!obj->mark().has_bias_pattern(), "invariant");
        if (event.should_commit()) {
          post_self_revocation_event(&event, obj->klass());
        }
        return;
      } else {
        BiasedLocking::Condition cond = single_revoke_with_handshake(obj, (JavaThread*)THREAD, blt);
        if (cond != NOT_REVOKED) {

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 0 ms
default true true 0 ms

Event fields with their types and descriptions
Field Type Description
lockClass Class Lock Class Class of object whose biased lock was revoked

BiasedLockClassRevocation

profiling default startTime duration eventThread stackTrace 11 17 until JDK 18

Category: Java Virtual Machine / Runtime

Revoked biases for all instances of a class

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/biasedLocking.cpp:

static void post_revocation_event(EventBiasedLockRevocation* event, Klass* k, RevokeOneBias* op) {
  assert(event != NULL, "invariant");
  assert(k != NULL, "invariant");
  assert(op != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  event->set_lockClass(k);
  event->set_safepointId(0);
  event->set_previousOwner(op->biased_locker());
  event->commit();
}

static void post_class_revocation_event(EventBiasedLockClassRevocation* event, Klass* k, VM_BulkRevokeBias* op) {
  assert(event != NULL, "invariant");
  assert(k != NULL, "invariant");
  assert(op != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  event->set_revokedClass(k);
  event->set_disableBiasing(!op->is_bulk_rebias());
  event->set_safepointId(op->safepoint_id());
  event->commit();
}

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

        if (event.should_commit()) {
          post_self_revocation_event(&event, obj->klass());
        }
        return;
      } else {
        BiasedLocking::Condition cond = single_revoke_with_handshake(obj, (JavaThread*)THREAD, blt);
        if (cond != NOT_REVOKED) {
          return;
        }
      }
    } else {
      assert((heuristics == HR_BULK_REVOKE) ||
         (heuristics == HR_BULK_REBIAS), "?");
      EventBiasedLockClassRevocation event;
      VM_BulkRevokeBias bulk_revoke(&obj, (JavaThread*)THREAD,
                                    (heuristics == HR_BULK_REBIAS));
      VMThread::execute(&bulk_revoke);
      if (event.should_commit()) {
        post_class_revocation_event(&event, obj->klass(), &bulk_revoke);
      }
      return;
    }
  }
}

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 0 ms
default true true 0 ms

Event fields with their types and descriptions
Field Type Description
revokedClass Class Revoked Class Class whose biased locks were revoked
disableBiasing boolean Disable Further Biasing Whether further biasing for instances of this class will be allowed
safepointId ulong Safepoint Identifier

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();
    }
  }

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling true true
default true true

Event fields with their types and descriptions
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();

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 10 ms

Event fields with their types and descriptions
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
Example event data values and properties
jniCriticalThreadCount int
0
safepointId ulong
1597
startTime long: millis
461372934129
totalThreadCount int
299
Example event data values and properties
jniCriticalThreadCount int
0
safepointId ulong
68
startTime long: millis
1857696892
totalThreadCount int
25
Example event data values and properties
jniCriticalThreadCount int
0
safepointId ulong
514
startTime long: millis
455499557589
totalThreadCount int
299

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
  if (safepoint_limit_time != 0) {

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling false 0 ms
default false 10 ms

Event fields with their types and descriptions
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
Example event data values and properties
initialThreadCount int
0
iterations int
1
runningThreadCount int
0
safepointId ulong
116
startTime long: millis
2403051426
Example event data values and properties
initialThreadCount int
0
iterations int
1
runningThreadCount int
0
safepointId ulong
1584
startTime long: millis
458408347789
Example event data values and properties
initialThreadCount int
1
iterations int
2
runningThreadCount int
0
safepointId ulong
555
startTime long: millis
487060267224

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;

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling false 0 ms
default false 10 ms

Event fields with their types and descriptions
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:

    AbstractGangTask("Parallel Safepoint Cleanup"),
    _subtasks(SafepointSynchronize::SAFEPOINT_CLEANUP_NUM_TASKS),
    _cleanup_threads_cl(ParallelSPCleanupThreadClosure(counters)),
    _num_workers(num_workers),
    _counters(counters) {}

  void work(uint worker_id) {
    uint64_t safepoint_id = SafepointSynchronize::safepoint_id();
    // All threads deflate monitors and mark nmethods (if necessary).
    Threads::possibly_parallel_threads_do(true, &_cleanup_threads_cl);

    if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_DEFLATE_MONITORS)) {
      const char* name = "deflating global idle monitors";
      EventSafepointCleanupTask event;
      TraceTime timer(name, TRACETIME_LOG(Info, safepoint, cleanup));
      // AsyncDeflateIdleMonitors only uses DeflateMonitorCounters
      // when a special cleanup has been requested.
      // Note: This logging output will include global idle monitor
      // elapsed times, but not global idle monitor deflation count.
      ObjectSynchronizer::do_safepoint_work(_counters);

      post_safepoint_cleanup_task_event(event, safepoint_id, name);
    }

    if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_UPDATE_INLINE_CACHES)) {
      const char* name = "updating inline caches";
      EventSafepointCleanupTask event;
      TraceTime timer(name, TRACETIME_LOG(Info, safepoint, cleanup));
      InlineCacheBuffer::update_inline_caches();

      post_safepoint_cleanup_task_event(event, safepoint_id, name);
    }

    if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_COMPILATION_POLICY)) {
      const char* name = "compilation policy safepoint handler";
      EventSafepointCleanupTask event;
      TraceTime timer(name, TRACETIME_LOG(Info, safepoint, cleanup));
      CompilationPolicy::policy()->do_safepoint_work();

      post_safepoint_cleanup_task_event(event, safepoint_id, name);
    }

    if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_SYMBOL_TABLE_REHASH)) {
      if (SymbolTable::needs_rehashing()) {
        const char* name = "rehashing symbol table";
        EventSafepointCleanupTask event;
        TraceTime timer(name, TRACETIME_LOG(Info, safepoint, cleanup));
        SymbolTable::rehash_table();

        post_safepoint_cleanup_task_event(event, safepoint_id, name);
      }
    }

    if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_STRING_TABLE_REHASH)) {
      if (StringTable::needs_rehashing()) {
        const char* name = "rehashing string table";
        EventSafepointCleanupTask event;
        TraceTime timer(name, TRACETIME_LOG(Info, safepoint, cleanup));
        StringTable::rehash_table();

        post_safepoint_cleanup_task_event(event, safepoint_id, name);
      }
    }

    if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_SYSTEM_DICTIONARY_RESIZE)) {
      if (Dictionary::does_any_dictionary_needs_resizing()) {
        const char* name = "resizing system dictionaries";
        EventSafepointCleanupTask event;
        TraceTime timer(name, TRACETIME_LOG(Info, safepoint, cleanup));
        ClassLoaderDataGraph::resize_dictionaries();

        post_safepoint_cleanup_task_event(event, safepoint_id, name);
      }
    }

    if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_REQUEST_OOPSTORAGE_CLEANUP)) {
      // Don't bother reporting event or time for this very short operation.
      // To have any utility we'd also want to report whether needed.
      OopStorage::trigger_cleanup_if_needed();

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling false 0 ms
default false 10 ms

Event fields with their types and descriptions
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());
}

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling false 0 ms
default false 10 ms

Event fields with their types and descriptions
Field Type Description
safepointId ulong Safepoint Identifier

Examples 3
Example event data values and properties
safepointId ulong
1649
startTime long: millis
470976351934
Example event data values and properties
safepointId ulong
31
startTime long: millis
1341911830
Example event data values and properties
safepointId ulong
548
startTime long: millis
481703801018

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:

  // otherwise we will hang, since there is no one can end the safepoint.

  // 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);
  }

  // Mark as completed

Event configuration settings across JFR profiles
Configuration enabled threshold
profiling true 0 ms
default true 10 ms

Event fields with their types and descriptions
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
Example event data values and properties
blocking boolean
true
caller Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Executor task launch worker for task 3.0 in stage 47.0 (TID 185)
javaThreadId long
1729
osName string
Executor task launch worker for task 3.0 in stage 47.0 (TID 185)
osThreadId long
4645
virtual boolean
false
operation VMOperationType
G1CollectForAllocation
safepoint boolean
true
safepointId ulong
1571
startTime long: millis
456071339904
Example event data values and properties
blocking boolean
true
caller Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
JFR Periodic Tasks
javaThreadId long
19
osName string
JFR Periodic Tasks
osThreadId long
2167
virtual boolean
false
operation VMOperationType
GC_HeapInspection
safepoint boolean
true
safepointId ulong
534
startTime long: millis
471857859178
Example event data values and properties
blocking boolean
true
caller Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
pool-1-thread-2
javaThreadId long
35
osName string
pool-1-thread-2
osThreadId long
5045
virtual boolean
false
operation VMOperationType
G1CollectForAllocation
safepoint boolean
true
safepointId ulong
27
startTime long: millis
1112403037

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/prims/jvm.cpp:

// java.lang.Runtime /////////////////////////////////////////////////////////////////////////

extern volatile jint vm_created;

JVM_ENTRY_NO_ENV(void, JVM_BeforeHalt())
  JVMWrapper("JVM_BeforeHalt");
  // Link all classes for dynamic CDS dumping before vm exit.
  if (DynamicDumpSharedSpaces) {
    MetaspaceShared::link_and_cleanup_shared_classes(THREAD);
  }
  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/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,
      // and wait as a suspend-equivalent condition.
      nu.wait(0, Mutex::_as_suspend_equivalent_flag);
  }

  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/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) {
  DEBUG_ONLY(JfrJavaSupport::check_java_thread_in_vm(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();
}

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling true true
default true true

Event fields with their types and descriptions
Field Type Description
reason string Reason Reason for JVM shutdown

Examples 3
Example event data values and properties
reason string
No remaining non-daemon Java threads
stackTrace StackTrace
null
startTime long: millis
500177444641
Example event data values and properties
reason string
No remaining non-daemon Java threads
stackTrace StackTrace
null
startTime long: millis
25440309651
Example event data values and properties
reason string
No remaining non-daemon Java threads
stackTrace StackTrace
null
startTime long: millis
510390931826

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);
}

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 10 s
default true 10 s

Event fields with their types and descriptions
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
Example event data values and properties
bucketCount ulong
131072
bucketCountAverage float
4.8580704
bucketCountMaximum ulong
17
bucketCountStandardDeviation float
2.2097201
bucketCountVariance float
4.8828635
entryCount ulong
636757
insertionRate float
180.8315
removalRate float
11.485508
startTime long: millis
455861624852
totalFootprint ulong: bytes
70781968
Example event data values and properties
bucketCount ulong
32768
bucketCountAverage float
1.1372681
bucketCountMaximum ulong
7
bucketCountStandardDeviation float
1.0591999
bucketCountVariance float
1.1219045
entryCount ulong
37266
insertionRate float
33226.0
removalRate float
2363.0
startTime long: millis
10587411763
totalFootprint ulong: bytes
2451824
Example event data values and properties
bucketCount ulong
131072
bucketCountAverage float
4.8545
bucketCountMaximum ulong
17
bucketCountStandardDeviation float
2.2083516
bucketCountVariance float
4.876817
entryCount ulong
636289
insertionRate float
22.170702
removalRate float
0.23754323
startTime long: millis
461346238684
totalFootprint ulong: bytes
70741888

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);
}

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 10 s
default true 10 s

Event fields with their types and descriptions
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
Example event data values and properties
bucketCount ulong
131072
bucketCountAverage float
0.90237427
bucketCountMaximum ulong
8
bucketCountStandardDeviation float
0.9542561
bucketCountVariance float
0.9106047
entryCount ulong
118276
insertionRate float
466.37143
removalRate float
36.904026
startTime long: millis
495959938046
totalFootprint ulong: bytes
13518304
Example event data values and properties
bucketCount ulong
65536
bucketCountAverage float
0.09992981
bucketCountMaximum ulong
3
bucketCountStandardDeviation float
0.3163474
bucketCountVariance float
0.10007568
entryCount ulong
6549
insertionRate float
23.93327
removalRate float
0.09728972
startTime long: millis
20867505968
totalFootprint ulong: bytes
1039912
Example event data values and properties
bucketCount ulong
65536
bucketCountAverage float
1.7964935
bucketCountMaximum ulong
12
bucketCountStandardDeviation float
1.3399681
bucketCountVariance float
1.7955145
entryCount ulong
117735
insertionRate float
24.627655
removalRate float
7.9188604
startTime long: millis
461372828599
totalFootprint ulong: bytes
12845832

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);
}

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 10 s
default true 10 s

Event fields with their types and descriptions
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());

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 10 s
default true 10 s

Event fields with their types and descriptions
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());

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 10 s
default true 10 s

Event fields with their types and descriptions
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/jfrThreadDumpEvent.cpp:

  Thread* THREAD = Thread::current();
  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();
}

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();

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 60 s
default true everyChunk

Event fields with their types and descriptions
Field Type Description
result string Thread Dump

Examples 3
Example event data values and properties
result string
2026-09-08 12:51:50 Full thread dump OpenJDK 64-Bit Server VM (25.0.4.1+1-LTS mixed mode, sharing): Threads class SMR info: _java_thread_list=0x0000564e7f24e920, length=299, elements={ 0x00007fe43c053c00, 0x00007fe43c141b20, 0x00007fe43c143870, 0x00007fe43c1457b0, 0x00007fe43c1474c0, 0x00007fe43c14…
startTime long: millis
461372835532
Example event data values and properties
result string
2026-09-13 00:33:55 Full thread dump OpenJDK 64-Bit Server VM (25.0.4.1+1-LTS mixed mode, sharing): Threads class SMR info: _java_thread_list=0x000055ffb54d2f60, length=52, elements={ 0x00007f7b84053be0, 0x00007f7b840ca9b0, 0x00007f7b840cc5a0, 0x00007f7b840ce5e0, 0x00007f7b840d02c0, 0x00007f7b840d1…
startTime long: millis
484226807537
Example event data values and properties
result string
2026-09-08 12:52:53 Full thread dump OpenJDK 64-Bit Server VM (25.0.4.1+1-LTS mixed mode, sharing): Threads class SMR info: _java_thread_list=0x00007fa9c94d87d0, length=26, elements={ 0x00007fa9c8055900, 0x00007fa9c8154950, 0x00007fa9c8156810, 0x00007fa9c8158c80, 0x00007fa9c815abc0, 0x00007fa9c815c…
startTime long: millis
10588931653

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);

Event configuration settings across JFR profiles
Configuration enabled period
profiling true everyChunk
default true everyChunk

Event fields with their types and descriptions
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
Example event data values and properties
baseAddress ulong: address
140618380726272
name string
/lib/x86_64-linux-gnu/libm.so.6
startTime long: millis
454658632086
topAddress ulong: address
140618381680640
Example event data values and properties
baseAddress ulong: address
140168635617280
name string
/lib/x86_64-linux-gnu/libdl.so.2
startTime long: millis
450546464929
topAddress ulong: address
140168635637760
Example event data values and properties
baseAddress ulong: address
140367330717696
name string
/lib/x86_64-linux-gnu/libpthread.so.0
startTime long: millis
364934499
topAddress ulong: address
140367330738176

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);

Event configuration settings across JFR profiles
Configuration enabled period
profiling true endChunk
default true endChunk

Event fields with their types and descriptions
Field Type Description
source Module Source Module
requiredModule Module Required Module

Examples 3
Example event data values and properties
requiredModule Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.logging
name string
java.logging
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.jshell
name string
jdk.jshell
version string
25.0.4.1
startTime long: millis
448951600733
Example event data values and properties
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.jconsole
name string
jdk.jconsole
version string
25.0.4.1
startTime long: millis
454658652535
Example event data values and properties
requiredModule 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.internal.opt
name string
jdk.internal.opt
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
7832187786

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");

Event configuration settings across JFR profiles
Configuration enabled period
profiling true endChunk
default true endChunk

Event fields with their types and descriptions
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
Example event data values and properties
exportedPackage 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/server
startTime long: millis
454658924545
targetModule Module
null
Example event data values and properties
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/misc
startTime long: millis
448951948567
targetModule 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.attach
name string
jdk.attach
version string
25.0.4.1
Example event data values and properties
exportedPackage Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.desktop
name string
java.desktop
version string
25.0.4.1
name string
sun/awt/dnd
startTime long: millis
7832224796
targetModule 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.unsupported.desktop
name string
jdk.unsupported.desktop
version string
25.0.4.1

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/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:

  if (native_thread->osthread() == NULL) {
    // 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

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);

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling true true
default true true

Event fields with their types and descriptions
Field Type Description
thread Thread New Java Thread
parentThread Thread Parent Java Thread

Examples 3
Example event data values and properties
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
2535
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
492466481335
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Thread-302
javaThreadId long
1959
osName string
Thread-302
osThreadId long
4892
virtual boolean
false
Example event data values and properties
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
5014
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
1959041962
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Thread-10
javaThreadId long
67
osName string
Thread-10
osThreadId long
5087
virtual boolean
false
Example event data values and properties
parentThread Thread
group ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
C1 CompilerThread0
javaThreadId long
16
osName string
C1 CompilerThread0
osThreadId long
2163
virtual boolean
false
stackTrace StackTrace
null
startTime long: millis
470814601331
thread Thread
group ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
C2 CompilerThread1
javaThreadId long
15
osName string
C2 CompilerThread1
osThreadId long
4441
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/runtime/java.cpp:

#if INCLUDE_JVMCI
  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();

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;

Event configuration settings across JFR profiles
Configuration enabled
profiling true
default true

Event fields with their types and descriptions
Field Type Description
thread Thread Java Thread

Examples 3
Example event data values and properties
startTime long: millis
5360022735
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Thread-86
javaThreadId long
143
osName string
Thread-86
osThreadId long
5164
virtual boolean
false
Example event data values and properties
startTime long: millis
480369105926
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
block-manager-storage-async-thread-pool-4
javaThreadId long
1743
osName string
block-manager-storage-async-thread-pool-4
osThreadId long
4661
virtual boolean
false
Example event data values and properties
startTime long: millis
475236473024
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
spark-listener-group-executorManagement
javaThreadId long
1693
osName string
spark-listener-group-executorManagement
osThreadId long
4225
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))
  JVMWrapper("JVM_Yield");
  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))
  JVMWrapper("JVM_Sleep");

  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()) {

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Event fields with their types and descriptions
Field Type Description
time long: millis Sleep Time

Examples 3
Example event data values and properties
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
641963445
time long: millis
5000000
Example event data values and properties
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
41
lineNumber int
54
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
9
name string
io/reactors/JvmScheduler$ReactorForkJoinReanimatorThread
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/reactors
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
452942210279
time long: millis
200000000
Example event data values and properties
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
448167552780
time long: millis
10000000

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_CompareAndSetLong(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jlong e, jlong x)) {
  oop p = JNIHandles::resolve(obj);
  GuardUnsafeAccess guard(thread);
  if (p == NULL) {
    volatile jlong* addr = (volatile jlong*)index_oop_from_field_offset_long(p, offset);
    return RawAccess<>::atomic_cmpxchg(addr, e, x) == e;
  } else {
    assert_field_offset_sane(p, offset);
    return HeapAccess<>::atomic_cmpxchg_at(p, (ptrdiff_t)offset, 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 {

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Event fields with their types and descriptions
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
Example event data values and properties
address ulong: address
31018637096
parkedClass 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/impl/CompletionLatch
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
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
452950925172
timeout long: nanos
119999999419
until long: epochmillis
-9223372036854775808
Example event data values and properties
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
3443067715
timeout long: nanos
1000000
until long: epochmillis
-9223372036854775808
Example event data values and properties
address ulong: address
30389676048
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
445689938654
timeout long: nanos
59341475790
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 = (oop)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);
    }
    Self->_Stalled = 0;
    add_to_contentions(-1);
    return false;
  }

  JFR_ONLY(JfrConditionalFlushWithStacktrace<EventJavaMonitorEnter> flush(jt);)
  EventJavaMonitorEnter event;
  if (event.should_commit()) {
    event.set_monitorClass(((oop)this->object())->klass());
    event.set_address((uintptr_t)(this->object_addr()));
  }

  { // Change java thread status to indicate blocked on monitor enter.
    JavaThreadBlockedOnMonitorEnterState jtbmes(jt, this);

    Self->set_current_pending_monitor(this);

    DTRACE_MONITOR_PROBE(contended__enter, this, object(), jt);

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(Self);
  }
#endif

  for (;;) {
    assert(THREAD == _owner, "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

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Event fields with their types and descriptions
Field Type Description
monitorClass Class Monitor Class
previousOwner Thread Previous Monitor Owner
address ulong: address Monitor Address

Examples 3
Example event data values and properties
address ulong: address
94556779474176
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-3
javaThreadId long
1716
osName string
task-result-getter-3
osThreadId long
4239
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
21
lineNumber int
811
method Method
descriptor string
(JLscala/Enumeration$Value;Ljava/nio/ByteBuffer;)V
hidden boolean
false
modifiers int
1
name string
statusUpdate
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
448278592172
Example event data values and properties
address ulong: address
140367203438016
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
5014
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
364639713
Example event data values and properties
address ulong: address
94895150366080
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
dispatcher-event-loop-3
javaThreadId long
1690
osName string
dispatcher-event-loop-3
osThreadId long
4604
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
7
lineNumber int
768
method Method
descriptor string
(J)Z
hidden boolean
false
modifiers int
1
name string
canFetchMoreResults
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/TaskSetManager
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
453865080464

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 = Atomic::load(&_owner);
  if (cur == THREAD) {
    return true;
  }
  if (THREAD->is_lock_owned((address)cur)) {
    set_owner_from_BasicLock(cur, THREAD);  // 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,
                                    jlong notifier_tid,
                                    jlong timeout,
                                    bool timedout) {
  assert(event != NULL, "invariant");
  assert(monitor != NULL, "invariant");
  event->set_monitorClass(((oop)monitor->object())->klass());
  event->set_timeout(timeout);
  event->set_address((uintptr_t)monitor->object_addr());
  event->set_notifier(notifier_tid);
  event->set_timedOut(timedout);

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) {
  Thread * const Self = THREAD;
  assert(Self->is_Java_thread(), "Must be Java thread!");
  JavaThread *jt = (JavaThread *)THREAD;

  assert(InitDone, "Unexpectedly not initialized");

  CHECK_OWNER();  // Throws IMSE if not owner.

  EventJavaMonitorWait event;

  // check for a pending interrupt
  if (interruptible && jt->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(jt, this, false);

      // In this short circuit of the monitor wait protocol, the
      // current thread never drops ownership of the monitor and

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Event fields with their types and descriptions
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
Example event data values and properties
address ulong: address
94895174441632
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
2545
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
456899601322
timedOut boolean
false
timeout long: millis
100
Example event data values and properties
address ulong: address
94556801697216
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
notifier Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Executor task launch worker for task 3.0 in stage 38.0 (TID 149)
javaThreadId long
1709
osName string
Executor task launch worker for task 3.0 in stage 38.0 (TID 149)
osThreadId long
4230
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
454508478448
timedOut boolean
false
timeout long: millis
0
Example event data values and properties
address ulong: address
94795309480480
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
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
3665056555
timedOut boolean
true
timeout long: millis
1

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 (log_is_enabled(Debug, monitorinflation)) {
    ls = &lsh_debug;
  } else if ((free_count != 0 || in_use_count != 0) &&
             log_is_enabled(Info, monitorinflation)) {
    ls = &lsh_info;
  }
  if (ls != NULL) {
    ls->print_cr("om_flush: jt=" INTPTR_FORMAT ", free_count=%d"
                 ", in_use_count=%d" ", om_free_provision=%d",
                 p2i(self), free_count, in_use_count, self->om_free_provision);
  }
}

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:

    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* self, oop object,
                                           const InflateCause cause) {
  // Inflate mutates the heap ...
  // Relaxing assertion for bug 6320749.
  assert(Universe::verify_in_progress() ||
         !SafepointSynchronize::is_at_safepoint(), "invariant");

  EventJavaMonitorInflate event;

  for (;;) {
    const markWord mark = object->mark();
    assert(!mark.has_bias_pattern(), "invariant");

    // 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.
    // *  BIASED       - Illegal.  We should never see this

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 10 ms
default false true 20 ms

Event fields with their types and descriptions
Field Type Description
monitorClass Class Monitor Class
address ulong: address Monitor Address
cause InflateCause Monitor Inflation Cause Cause of inflation

Examples 3
Example event data values and properties
address ulong: address
33660790888
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
456493658293
Example event data values and properties
address ulong: address
30312242680
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
5192530862
Example event data values and properties
address ulong: address
30649636648
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
463153726694

ObjectAllocationInNewTLAB

profiling 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, Thread* thread) {
  JFR_ONLY(JfrAllocationTracer tracer(obj, alloc_size, 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, Thread* thread) {
  JFR_ONLY(JfrAllocationTracer tracer(obj, alloc_size, 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 configuration settings across JFR profiles
Configuration enabled stackTrace
profiling true true
default false true

Event fields with their types and descriptions
Field Type Description
objectClass Class Object Class Class of allocated object
allocationSize ulong: bytes Allocation Size
tlabSize ulong: bytes TLAB Size

Examples 3
Example event data values and properties
allocationSize ulong: bytes
24
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
com/codahale/metrics/Timer$Context
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/codahale/metrics
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
164
method Method
descriptor string
()Lcom/codahale/metrics/Timer$Context;
hidden boolean
false
modifiers int
1
name string
time
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
com/codahale/metrics/Timer
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/codahale/metrics
type FrameType
JIT compiled
…
truncated boolean
false
startTime long: millis
453283823383
tlabSize ulong: bytes
31032
Example event data values and properties
allocationSize ulong: bytes
32
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/internal/event/ThreadSleepEvent
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/event
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
473
method Method
descriptor string
(J)Ljdk/internal/event/ThreadSleepEvent;
hidden boolean
false
modifiers int
10
name string
beforeSleep
type 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
type FrameType
Interpreted
…
truncated boolean
false
startTime long: millis
565756935
tlabSize ulong: bytes
44456
Example event data values and properties
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
447532002851
tlabSize ulong: bytes
250064

ObjectAllocationOutsideTLAB

profiling 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, Thread* thread) {
  JFR_ONLY(JfrAllocationTracer tracer(obj, alloc_size, 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, Thread* thread) {
  JFR_ONLY(JfrAllocationTracer tracer(obj, alloc_size, thread);)
  EventObjectAllocationInNewTLAB event;
  if (event.should_commit()) {

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling true true
default false true

Event fields with their types and descriptions
Field Type Description
objectClass Class Object Class Class of allocated object
allocationSize ulong: bytes Allocation Size

Examples 3
Example event data values and properties
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
561129163
Example event data values and properties
allocationSize ulong: bytes
1048592
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
6
lineNumber int
75
method Method
descriptor string
(IILjava/lang/foreign/MemorySegment;)V
hidden boolean
false
modifiers int
0
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
java/nio/HeapByteBuffer
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/nio
type FrameType
Inlined
…
truncated boolean
false
startTime long: millis
453279457972
Example event data values and properties
allocationSize ulong: bytes
1048592
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
6
lineNumber int
75
method Method
descriptor string
(IILjava/lang/foreign/MemorySegment;)V
hidden boolean
false
modifiers int
0
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
java/nio/HeapByteBuffer
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/nio
type FrameType
Inlined
…
truncated boolean
false
startTime long: millis
448341814483

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/events/Handlers.java:

package jdk.jfr.events;
import jdk.jfr.internal.handlers.EventHandler;
import jdk.jfr.internal.Utils;

public final class Handlers {
    public final static EventHandler SOCKET_READ = Utils.getHandler(SocketReadEvent.class);
    public final static EventHandler SOCKET_WRITE = Utils.getHandler(SocketWriteEvent.class);
    public final static EventHandler FILE_READ = Utils.getHandler(FileReadEvent.class);
    public final static EventHandler FILE_WRITE = Utils.getHandler(FileWriteEvent.class);
    public final static EventHandler FILE_FORCE = Utils.getHandler(FileForceEvent.class);
    public final static EventHandler ERROR_THROWN = Utils.getHandler(ErrorThrownEvent.class);
    public final static EventHandler EXCEPTION_THROWN = Utils.getHandler(ExceptionThrownEvent.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/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) {

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

public final class JDKEvents {

    private static final Class<?>[] mirrorEventClasses = {
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class,
        ProcessStartEvent.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.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,
        jdk.internal.event.X509CertificateEvent.class,

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Event fields with their types and descriptions
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
Example event data values and properties
bytesRead long: bytes
1499
endOfFile boolean
false
path string
/proc/5013/status
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
117
lineNumber int
279
method Method
descriptor string
()I
hidden boolean
false
modifiers int
2
name string
readBytes
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
sun/nio/cs/StreamDecoder
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/cs
type FrameType
Interpreted
…
truncated boolean
false
startTime long: millis
447237918
Example event data values and properties
bytesRead long: bytes
11034
endOfFile boolean
false
path string
/tmp/jar_cache2308870793994469680.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
448872776256
Example event data values and properties
bytesRead long: bytes
8192
endOfFile boolean
false
path string
/tmp/jar_cache3220599901691524981.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
454116646966

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/events/Handlers.java:

package jdk.jfr.events;
import jdk.jfr.internal.handlers.EventHandler;
import jdk.jfr.internal.Utils;

public final class Handlers {
    public final static EventHandler SOCKET_READ = Utils.getHandler(SocketReadEvent.class);
    public final static EventHandler SOCKET_WRITE = Utils.getHandler(SocketWriteEvent.class);
    public final static EventHandler FILE_READ = Utils.getHandler(FileReadEvent.class);
    public final static EventHandler FILE_WRITE = Utils.getHandler(FileWriteEvent.class);
    public final static EventHandler FILE_FORCE = Utils.getHandler(FileForceEvent.class);
    public final static EventHandler ERROR_THROWN = Utils.getHandler(ErrorThrownEvent.class);
    public final static EventHandler EXCEPTION_THROWN = Utils.getHandler(ExceptionThrownEvent.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/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)  {

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

public final class JDKEvents {

    private static final Class<?>[] mirrorEventClasses = {
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class,
        ProcessStartEvent.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.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Event fields with their types and descriptions
Field Type Description
path string Path Full path of the file
metaData boolean Update Metadata Whether the file metadata is updated

Examples 3
Example event data values and properties
metaData boolean
true
path string
/tmp/jfr_sample13137898057837233450.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
2308589868
Example event data values and properties
metaData boolean
true
path string
/tmp/jfr_sample7950200855328356358.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
1831927033
Example event data values and properties
metaData boolean
true
path string
/tmp/jfr_sample4646412869330140946.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
1577457301

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

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling true true
default true true

Event fields with their types and descriptions
Field Type Description
message string Message
thrownClass Class Class

Examples 3
Example event data values and properties
message string
'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(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, 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
481756707662
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
Example event data values and properties
message string
'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(java.lang.Object, long, 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
Interpreted
…
truncated boolean
false
startTime long: millis
411737610
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
Example event data values and properties
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, java.lang.Object, java.lang.Object, java.lang.Object, int)'
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
487949355212
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

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/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 final static EventHandler SOCKET_READ = Utils.getHandler(SocketReadEvent.class);
    public final static EventHandler SOCKET_WRITE = Utils.getHandler(SocketWriteEvent.class);
    public final static EventHandler FILE_READ = Utils.getHandler(FileReadEvent.class);
    public final static EventHandler FILE_WRITE = Utils.getHandler(FileWriteEvent.class);
    public final static EventHandler FILE_FORCE = Utils.getHandler(FileForceEvent.class);
    public final static EventHandler ERROR_THROWN = Utils.getHandler(ErrorThrownEvent.class);
    public final static 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) {

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

    private static final Class<?>[] mirrorEventClasses = {
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class,
        ProcessStartEvent.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.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,
        jdk.internal.event.X509CertificateEvent.class,
        jdk.internal.event.X509ValidationEvent.class,
        jdk.internal.event.ProcessStartEvent.class,
        DirectBufferStatisticsEvent.class

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Event fields with their types and descriptions
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
Example event data values and properties
address string
127.0.0.1
bytesWritten long: bytes
64
host string
127.0.0.1
port int
36796
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
2677427139
Example event data values and properties
address string
127.0.0.1
bytesWritten long: bytes
64
host string
127.0.0.1
port int
54134
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
3314399108
Example event data values and properties
address string
127.0.0.1
bytesWritten long: bytes
64
host string
127.0.0.1
port int
46551
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
1334240668

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/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 final static EventHandler SOCKET_READ = Utils.getHandler(SocketReadEvent.class);
    public final static EventHandler SOCKET_WRITE = Utils.getHandler(SocketWriteEvent.class);
    public final static EventHandler FILE_READ = Utils.getHandler(FileReadEvent.class);
    public final static EventHandler FILE_WRITE = Utils.getHandler(FileWriteEvent.class);
    public final static EventHandler FILE_FORCE = Utils.getHandler(FileForceEvent.class);
    public final static EventHandler ERROR_THROWN = Utils.getHandler(ErrorThrownEvent.class);
    public final static 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);
    }
}

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

public final class JDKEvents {

    private static final Class<?>[] mirrorEventClasses = {
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class,
        ProcessStartEvent.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.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,
        jdk.internal.event.X509CertificateEvent.class,
        jdk.internal.event.X509ValidationEvent.class,

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Event fields with their types and descriptions
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
Example event data values and properties
bytesWritten long: bytes
1
path string
/tmp/jfr_agent15005275580992799933.jar
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
27
lineNumber int
844
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
403656357
Example event data values and properties
bytesWritten long: bytes
8216
path string
/tmp/jar_cache1614000980657683947.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
Interpreted
…
truncated boolean
false
startTime long: millis
485843019811
Example event data values and properties
bytesWritten long: bytes
8188
path string
/tmp/jar_cache13473187686794800317.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
481014957042

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

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling false true
default false true

Event fields with their types and descriptions
Field Type Description
message string Message
thrownClass Class Class

Examples 3
Example event data values and properties
message string
static Ljfr_sample/Main$4;.<clinit>()V
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
1421625944
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
Example event data values and properties
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
453485439601
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
Example event data values and properties
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
448056040680
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

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/events/Handlers.java:

package jdk.jfr.events;
import jdk.jfr.internal.handlers.EventHandler;
import jdk.jfr.internal.Utils;

public final class Handlers {
    public final static EventHandler SOCKET_READ = Utils.getHandler(SocketReadEvent.class);
    public final static EventHandler SOCKET_WRITE = Utils.getHandler(SocketWriteEvent.class);
    public final static EventHandler FILE_READ = Utils.getHandler(FileReadEvent.class);
    public final static EventHandler FILE_WRITE = Utils.getHandler(FileWriteEvent.class);
    public final static EventHandler FILE_FORCE = Utils.getHandler(FileForceEvent.class);
    public final static EventHandler ERROR_THROWN = Utils.getHandler(ErrorThrownEvent.class);
    public final static EventHandler EXCEPTION_THROWN = Utils.getHandler(ExceptionThrownEvent.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/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) {

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

    private static final Class<?>[] mirrorEventClasses = {
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class,
        ProcessStartEvent.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.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,
        jdk.internal.event.X509CertificateEvent.class,
        jdk.internal.event.X509ValidationEvent.class,
        jdk.internal.event.ProcessStartEvent.class,

Event configuration settings across JFR profiles
Configuration enabled stackTrace threshold
profiling true true 10 ms
default true true 20 ms

Event fields with their types and descriptions
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
Example event data values and properties
address string
127.0.0.1
bytesRead long: bytes
64
endOfStream boolean
false
host string
127.0.0.1
port int
34343
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
2814205529
timeout long: millis
0
Example event data values and properties
address string
127.0.0.1
bytesRead long: bytes
64
endOfStream boolean
false
host string
127.0.0.1
port int
38500
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
1761392644
timeout long: millis
0
Example event data values and properties
address string
127.0.0.1
bytesRead long: bytes
64
endOfStream boolean
false
host string
127.0.0.1
port int
41946
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
1564472417
timeout long: millis
0

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) {
  EventClassLoadingStatistics event;
  event.set_loadedClassCount(ClassLoadingService::loaded_class_count());
  event.set_unloadedClassCount(ClassLoadingService::unloaded_class_count());

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 1000 ms
default true 1000 ms

Event fields with their types and descriptions
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
Example event data values and properties
accumulatedCount long
261
activeCount long
21
daemonCount long
16
peakCount long
22
startTime long: millis
12630289702
Example event data values and properties
accumulatedCount long
1934
activeCount long
69
daemonCount long
64
peakCount long
297
startTime long: millis
499994786547
Example event data values and properties
accumulatedCount long
1919
activeCount long
65
daemonCount long
64
peakCount long
297
startTime long: millis
481851027813

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:

  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) {
  EventClassLoadingStatistics event;
  event.set_loadedClassCount(ClassLoadingService::loaded_class_count());
  event.set_unloadedClassCount(ClassLoadingService::unloaded_class_count());
  event.commit();
}

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 ?

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 1000 ms
default true 1000 ms

Event fields with their types and descriptions
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
Example event data values and properties
loadedClassCount long
136607
startTime long: millis
485104661224
unloadedClassCount long
3128
Example event data values and properties
loadedClassCount long
3904
startTime long: millis
4419758056
unloadedClassCount long
63
Example event data values and properties
loadedClassCount long
132418
startTime long: millis
465815209994
unloadedClassCount long
3085

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:

  event.set_unloadedClassCount(ClassLoadingService::unloaded_class_count());
  event.commit();
}

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;

Event configuration settings across JFR profiles
Configuration enabled period
profiling true everyChunk
default true everyChunk

Event fields with their types and descriptions
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
Example event data values and properties
blockSize ulong: bytes
11966560
chunkSize ulong: bytes
11986944
classCount long
1481
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
classLoaderData ulong: address
140168481972448
hiddenBlockSize ulong: bytes
0
hiddenChunkSize ulong: bytes
0
hiddenClassCount long
0
parentClassLoader 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
startTime long: millis
448951403416
Example event data values and properties
blockSize ulong: bytes
5656
chunkSize ulong: bytes
6144
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
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
140617334585552
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
454658374705
Example event data values and properties
blockSize ulong: bytes
0
chunkSize ulong: bytes
0
classCount long
0
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
classLoaderData ulong: address
140367183975808
hiddenBlockSize ulong: bytes
0
hiddenChunkSize ulong: bytes
0
hiddenClassCount long
0
parentClassLoader ClassLoader
name string
platform
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$PlatformClassLoader
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
startTime long: millis
364847107

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.

Event configuration settings across JFR profiles
Configuration enabled period
profiling true everyChunk
default true everyChunk

Event fields with their types and descriptions
Field Type Description
allocated ulong: bytes Allocated Approximate number of bytes allocated since thread start
thread Thread Thread

Examples 3
Example event data values and properties
allocated ulong: bytes
0
startTime long: millis
8024967526
thread Thread
group ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
JFR Recorder Thread
javaThreadId long
22
osName string
JFR Recorder Thread
osThreadId long
5032
virtual boolean
false
Example event data values and properties
allocated ulong: bytes
505983152
startTime long: millis
447754205507
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Executor task launch worker for task 3.0 in stage 38.0 (TID 149)
javaThreadId long
1709
osName string
Executor task launch worker for task 3.0 in stage 38.0 (TID 149)
osThreadId long
4230
virtual boolean
false
Example event data values and properties
allocated ulong: bytes
56
startTime long: millis
453049846731
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
map-output-dispatcher-0
javaThreadId long
1691
osName string
map-output-dispatcher-0
osThreadId long
4605
virtual boolean
false

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/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;
}

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

        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class,
        ProcessStartEvent.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.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,
        jdk.internal.event.X509CertificateEvent.class,
        jdk.internal.event.X509ValidationEvent.class,
        jdk.internal.event.ProcessStartEvent.class,
        DirectBufferStatisticsEvent.class
    };

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

    private static boolean initializationTriggered;

    @SuppressWarnings("unchecked")
    public synchronized static 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);
                }
                initializationTriggered = true;
                RequestEngine.addTrustedJDKHook(ExceptionStatisticsEvent.class, emitExceptionStatistics);
                RequestEngine.addTrustedJDKHook(DirectBufferStatisticsEvent.class, emitDirectBufferStatistics);
            }
        } catch (Exception e) {
            Logger.log(LogTag.JFR_SYSTEM, LogLevel.WARN, "Could not initialize JDK events. " + e.getMessage());
        }
    }

    public static void addInstrumentation() {
        try {
            List<Class<?>> list = new ArrayList<>();
            for (int i = 0; i < instrumentationClasses.length; i++) {

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 emitExceptionStatistics() {
        ExceptionStatisticsEvent t = new ExceptionStatisticsEvent();
        t.throwables = ThrowableTracer.numThrowables();
        t.commit();
    }

    @SuppressWarnings("deprecation")
    public static byte[] retransformCallback(Class<?> klass, byte[] oldBytes) throws Throwable {
        if (java.lang.Throwable.class == klass) {
            Logger.log(LogTag.JFR_SYSTEM, LogLevel.TRACE, "Instrumenting java.lang.Throwable");
            return ConstructorTracerWriter.generateBytes(java.lang.Throwable.class, oldBytes);
        }

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 1000 ms
default true 1000 ms

Event fields with their types and descriptions
Field Type Description
throwables long Exceptions Created

Examples 3
Example event data values and properties
startTime long: millis
469645546592
throwables long
2355919
Example event data values and properties
startTime long: millis
4419767674
throwables long
299
Example event data values and properties
startTime long: millis
491165635471
throwables long
2362826

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/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;
}

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

        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,
        ErrorThrownEvent.class,
        ActiveSettingEvent.class,
        ActiveRecordingEvent.class,
        jdk.internal.event.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,
        jdk.internal.event.X509CertificateEvent.class,
        jdk.internal.event.X509ValidationEvent.class,
        jdk.internal.event.ProcessStartEvent.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 synchronized static 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);
                }
                initializationTriggered = true;
                RequestEngine.addTrustedJDKHook(ExceptionStatisticsEvent.class, emitExceptionStatistics);
                RequestEngine.addTrustedJDKHook(DirectBufferStatisticsEvent.class, emitDirectBufferStatistics);
            }
        } catch (Exception e) {
            Logger.log(LogTag.JFR_SYSTEM, LogLevel.WARN, "Could not initialize JDK events. " + e.getMessage());
        }
    }

    public static void addInstrumentation() {
        try {
            List<Class<?>> list = new ArrayList<>();
            for (int i = 0; i < instrumentationClasses.length; i++) {
                JIInstrumentationTarget tgt = instrumentationClasses[i].getAnnotation(JIInstrumentationTarget.class);

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

        for (int i = 0; i < targetClasses.length; i++) {
            if (targetClasses[i].equals(klass)) {
                Class<?> c = instrumentationClasses[i];
                if (Logger.shouldLog(LogTag.JFR_SYSTEM, LogLevel.TRACE)) {
                    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(JDKEvents::emitExceptionStatistics);
        RequestEngine.removeHook(emitDirectBufferStatistics);
    }

    private static void emitDirectBufferStatistics() {
        DirectBufferStatisticsEvent e = new DirectBufferStatisticsEvent();
        e.commit();
    }
}

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 5 s
default true 5 s

Examples 3
Example event data values and properties
startTime long: millis
15750895233
Example event data values and properties
startTime long: millis
474301347467
Example event data values and properties
startTime long: millis
490162186349

Java Development Kit

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/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/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

public final class JDKEvents {

    private static final Class<?>[] mirrorEventClasses = {
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class,
        ProcessStartEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,

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;
}

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling false true
default false true

Event fields with their types and descriptions
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
Example event data values and properties
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
832755528
Example event data values and properties
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
1108105596
Example event data values and properties
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
1104300297

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/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(x -> x.hashCode())
                    .toArray();
            int anchorCertId =
                    anchor.getTrustedCert().hashCode();
            if (xve.shouldCommit()) {
                xve.certificateId = anchorCertId;
                int certificatePos = 1; //anchor cert
                xve.certificatePosition = certificatePos;
                xve.validationCounter = validationCounter.incrementAndGet();

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/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

public final class JDKEvents {

    private static final Class<?>[] mirrorEventClasses = {
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class,
        ProcessStartEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,

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;
}

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling false true
default false true

Event fields with their types and descriptions
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
Example event data values and properties
certificateId long: certificateId
998794918
certificatePosition int
4
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
802449311
validationCounter long
1
Example event data values and properties
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
1064399000
validationCounter long
1
Example event data values and properties
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
1067323110
validationCounter long
1

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/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();

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/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

public final class JDKEvents {

    private static final Class<?>[] mirrorEventClasses = {
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class,
        ProcessStartEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,

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;
}

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling false true
default false true

Event fields with their types and descriptions
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
Example event data values and properties
algorithm string
SHA384withRSA
certificateId long: certificateId
657172038
issuer string
CN=GTS Root R1, O=Google Trust Services LLC, C=US
keyLength int
4096
keyType string
RSA
serialNumber string
02:03:e5:93:6f:31:b0:13:49:88:6b:a2:17
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
575378060
subject string
CN=GTS Root R1, O=Google Trust Services LLC, C=US
validFrom long: epochmillis
1466553600000
validUntil long: epochmillis
2097705600000
Example event data values and properties
algorithm string
SHA384withRSA
certificateId long: certificateId
3373940126
issuer string
CN=emSign Root CA - G2, O=eMudhra Technologies Limited, OU=emSign PKI, C=IN
keyLength int
4096
keyType string
RSA
serialNumber string
00:86:4d:bf:0f:e3:5e:d7:7d:8e:d8
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
687624880
subject string
CN=emSign Root CA - G2, O=eMudhra Technologies Limited, OU=emSign PKI, C=IN
validFrom long: epochmillis
1518978600000
validUntil long: epochmillis
2307897000000
Example event data values and properties
algorithm string
SHA256withRSA
certificateId long: certificateId
2255958535
issuer string
CN=Certainly Root R1, O=Certainly, C=US
keyLength int
4096
keyType string
RSA
serialNumber string
00:8e:0f:f9:4b:90:71:68:65:33:54:f4:d4:44:39:b7:e0
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
736854573
subject string
CN=Certainly Root R1, O=Certainly, C=US
validFrom long: epochmillis
1617235200000
validUntil long: epochmillis
2406153600000

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/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/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

public final class JDKEvents {

    private static final Class<?>[] mirrorEventClasses = {
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class,
        ProcessStartEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,

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/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;
}

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling false true
default false true

Event fields with their types and descriptions
Field Type Description
key string Key
value string Value

Examples 3
Example event data values and properties
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
891669707
value string
secp112r1
Example event data values and properties
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
1175633602
value string
secp112r1
Example event data values and properties
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
1229926713
value string
secp112r1

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) {

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
Field Type Description
osVersion string OS Version

Examples 3
Example event data values and properties
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
364510804
Example event data values and properties
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
462141519921
Example event data values and properties
osVersion string
DISTRIB_ID=Ubuntu DISTRIB_RELEASE=24.04 DISTRIB_CODENAME=noble DISTRIB_DESCRIPTION="Ubuntu 24.04.5 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
457784670076

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();
}

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
Field Type Description
name string Name

Examples 3
Example event data values and properties
name string
Hyper-V virtualization
startTime long: millis
8024934183
Example event data values and properties
name string
Hyper-V virtualization
startTime long: millis
464048816922
Example event data values and properties
name string
Hyper-V virtualization
startTime long: millis
449445020969

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 (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 = 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) {

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
Field Type Description
key string Key
value string Value

Examples 3
Example event data values and properties
key string
RUNNER_NAME
startTime long: millis
447754187781
value string
GitHub Actions 1025239075
Example event data values and properties
key string
GITHUB_REPOSITORY_ID
startTime long: millis
364524139
value string
880744334
Example event data values and properties
key string
ANDROID_HOME
startTime long: millis
453049821122
value string
/usr/local/lib/android/sdk

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;
    }
  }
}

Event configuration settings across JFR profiles
Configuration enabled period
profiling true endChunk
default true endChunk

Event fields with their types and descriptions
Field Type Description
pid string Process Identifier
commandLine string Command Line

Examples 3
Example event data values and properties
commandLine string
/usr/lib/systemd/systemd-udevd
pid string
225
startTime long: millis
19479268756
Example event data values and properties
commandLine string
php-fpm: pool www
pid string
1249
startTime long: millis
20528575745
Example event data values and properties
commandLine string
scsi_eh_1
pid string
77
startTime long: millis
7826905875

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

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
Field Type Description
cpu string Type
description string Description
sockets uint Sockets
cores uint Cores
hwThreads uint Hardware Threads

Examples 3
Example event data values and properties
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: 0x02100800, ecx: 0xfeda3203, edx: 0x178bfbff Ext. features: eax: 0x00a10f…
hwThreads uint
4
sockets uint
1
startTime long: millis
470826331340
Example event data values and properties
cores uint
16
cpu string
AMD Unknown x86 (HT) SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 SSE4A AMD64
description string
Brand: AMD EPYC 7763 64-Core Processor , Vendor: AuthenticAMD Family: Unknown x86 (0x19), Model: <unknown> (0x1), Stepping: 0x1 Ext. family: 0xa, Ext. model: 0x0, Type: 0x0, Signature: 0x00a00f11 Features: ebx: 0x02100800, ecx: 0xfeda3203, edx: 0x178bfbff Ext. features: eax: 0x00a00f1…
hwThreads uint
4
sockets uint
1
startTime long: millis
462141546260
Example event data values and properties
cores uint
16
cpu string
AMD Unknown x86 (HT) SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 SSE4A AMD64
description string
Brand: AMD EPYC 7763 64-Core Processor , Vendor: AuthenticAMD Family: Unknown x86 (0x19), Model: <unknown> (0x1), Stepping: 0x1 Ext. family: 0xa, Ext. model: 0x0, Type: 0x0, Signature: 0x00a00f11 Features: ebx: 0x01100800, ecx: 0xfeda3203, edx: 0x178bfbff Ext. features: eax: 0x00a00f1…
hwThreads uint
4
sockets uint
1
startTime long: millis
15623086323

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;

Event configuration settings across JFR profiles
Configuration enabled period
profiling true beginChunk
default true beginChunk

Event fields with their types and descriptions
Field Type Description
fastTimeEnabled boolean Fast Time
fastTimeAutoEnabled boolean Trusted Platform
osFrequency long: hertz OS Frequency
fastTimeFrequency long: hertz Fast Time Frequency

Examples 3
Example event data values and properties
fastTimeAutoEnabled boolean
true
fastTimeEnabled boolean
false
fastTimeFrequency long: hertz
1000000000
osFrequency long: hertz
1000000000
startTime long: millis
496741296781
Example event data values and properties
fastTimeAutoEnabled boolean
true
fastTimeEnabled boolean
false
fastTimeFrequency long: hertz
1000000000
osFrequency long: hertz
1000000000
startTime long: millis
15623091142
Example event data values and properties
fastTimeAutoEnabled boolean
true
fastTimeEnabled boolean
false
fastTimeFrequency long: hertz
1000000000
osFrequency long: hertz
1000000000
startTime long: millis
480800032714

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*)Thread::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();
}

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 1000 ms
default true 1000 ms

Event fields with their types and descriptions
Field Type Description
jvmUser float: percentage JVM User
jvmSystem float: percentage JVM System
machineTotal float: percentage Machine Total

Examples 3
Example event data values and properties
jvmSystem float: percentage
0.0066115703
jvmUser float: percentage
0.8644628
machineTotal float: percentage
0.8743802
startTime long: millis
487630206089
Example event data values and properties
jvmSystem float: percentage
0.013499481
jvmUser float: percentage
0.7227414
machineTotal float: percentage
0.7362409
startTime long: millis
460014555572
Example event data values and properties
jvmSystem float: percentage
0.012690355
jvmUser float: percentage
0.32994923
machineTotal float: percentage
0.3426396
startTime long: millis
21875692325

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

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 10 s
default true 10 s

Event fields with their types and descriptions
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
Example event data values and properties
startTime long: millis
20862481557
system float: percentage
5.259681E-5
user float: percentage
2.4322854E-4
Example event data values and properties
startTime long: millis
455798353258
system float: percentage
2.127479E-5
user float: percentage
0.0
Example event data values and properties
startTime long: millis
461269819977
system float: percentage
0.0
user float: percentage
0.0019815236

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*)Thread::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()) {                                \

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 10 s
default true 10 s

Event fields with their types and descriptions
Field Type Description
switchRate float: hertz Switch Rate Number of context switches per second

Examples 3
Example event data values and properties
startTime long: millis
474305089454
switchRate float: hertz
5243.0356
Example event data values and properties
startTime long: millis
10584510779
switchRate float: hertz
9365.798
Example event data values and properties
startTime long: millis
455800173581
switchRate float: hertz
5914.0635

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();
  const JfrTickspan interval = last_sample_instant == 0 ? cur_time - cur_time : cur_time - last_sample_instant;
  last_sample_instant = cur_time;
  for (NetworkInterface *cur = network_interfaces; cur != NULL; cur = cur->next()) {
    InterfaceEntry& entry = get_entry(cur);
    if (interval.value() > 0) {
      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;
    }

Event configuration settings across JFR profiles
Configuration enabled period
profiling true 5 s
default true 5 s

Event fields with their types and descriptions
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
Example event data values and properties
networkInterface NetworkInterfaceName
eth0
readRate long: bits-per-second
5064
startTime long: millis
490162163684
writeRate long: bits-per-second
9808
Example event data values and properties
networkInterface NetworkInterfaceName
enP22938s1
readRate long: bits-per-second
88
startTime long: millis
454347623289
writeRate long: bits-per-second
11480
Example event data values and properties
networkInterface NetworkInterfaceName
enP22938s1
readRate long: bits-per-second
0
startTime long: millis
20862456941
writeRate long: bits-per-second
8112

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());

Event configuration settings across JFR profiles
Configuration enabled period
profiling true everyChunk
default true everyChunk

Event fields with their types and descriptions
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
Example event data values and properties
startTime long: millis
25441041160
totalSize ulong: bytes
16766414848
usedSize ulong: bytes
1191432192
Example event data values and properties
startTime long: millis
489573473982
totalSize ulong: bytes
16766414848
usedSize ulong: bytes
6770642944
Example event data values and properties
startTime long: millis
473543458984
totalSize ulong: bytes
16766414848
usedSize ulong: bytes
3684597760

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/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/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java:

public final class JDKEvents {

    private static final Class<?>[] mirrorEventClasses = {
        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class,
        ProcessStartEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,
        ErrorThrownEvent.class,

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;
}

Event configuration settings across JFR profiles
Configuration enabled stackTrace
profiling true true
default true true

Event fields with their types and descriptions
Field Type Description
pid long Process Id
directory string Directory
command string Command

Examples 3
Example event data values and properties
command string
java -version
directory string
null
pid long
5056
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
1147234961
Example event data values and properties
command string
rm -rf /home/runner/work/jfrevents/jfrevents/harness-124410-7892773325794487906/apache-spark/gauss-mix/spark-df1eba34-4695-4783-bae8-11dc81e0887a
directory string
null
pid long
4939
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
510403071219
Example event data values and properties
command string
rm -rf /home/runner/work/jfrevents/jfrevents/harness-002552-11024252767585181307/apache-spark/gauss-mix/blockmgr-f7c75636-1699-4af0-941d-65cec3940163
directory string
null
pid long
4462
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
475245775886

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

Event fields with their types and descriptions
Field Type Description
bytecode string Instruction

Examples 3

CalleeMethod

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

Missing in: graalvm_linux_native

Event fields with their types and descriptions
Field Type Description
type string Class
name string Method Name
descriptor string Method Descriptor

Examples 3
Example event data values and properties
descriptor string
(Ljava/lang/String;)Ljava/lang/StringBuilder;
name string
append
type string
java/lang/StringBuilder
Example event data values and properties
descriptor string
(Lorg/apache/spark/storage/BlockInfoManager;JLorg/apache/spark/storage/BlockId;Lorg/apache/spark/storage/BlockInfo;)Ljava/lang/Object;
name string
$anonfun$lockForWriting$2$adapted
type string
org/apache/spark/storage/BlockInfoManager
Example event data values and properties
descriptor string
(Ljava/lang/ref/Reference;)Lorg/apache/spark/CleanupTaskWeakReference;
name string
$anonfun$keepCleaning$2
type string
org/apache/spark/ContextCleaner

ChunkHeader

14+

Chunk Header

Event fields with their types and descriptions
Field Type Description
payload array byte Payload

Class

Java Class

Event fields with their types and descriptions
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

Event fields with their types and descriptions
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

Event fields with their types and descriptions
Field Type Description
type string Type

Examples 3
CodeHeap 'profiled nmethods'
CodeHeap 'non-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

Event fields with their types and descriptions
Field Type Description
phase string Phase

Examples 3
Before RemoveUseless
Barrier expand
Before Iter GVN

CompilerType

14+

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

Missing in: graalvm_linux_native

Compiler Type

Event fields with their types and descriptions
Field Type Description
compiler string Compiler

Examples 3

CopyFailed

Event fields with their types and descriptions
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

Event fields with their types and descriptions
Field Type Description
action string Action

Examples 3
maybe_recompile
maybe_recompile
reinterpret

DeoptimizationReason

14+

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

Missing in: graalvm_linux_native

Deoptimization Reason

Event fields with their types and descriptions
Field Type Description
reason string Reason

Examples 3
unstable_if
profile_predicate
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

Event fields with their types and descriptions
Field Type Description
origin string Origin

Examples 3

FrameType

Frame type

Event fields with their types and descriptions
Field Type Description
description string Description

Examples 3

G1EvacuationStatistics

Appearing in: graalvm_linux_G1GC, linux_G1GC

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

Event fields with their types and descriptions
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
Example event data values and properties
allocated ulong: bytes
49152
directAllocated ulong: bytes
47672
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
1123
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
43208
wasted ulong: bytes
1136
Example event data values and properties
allocated ulong: bytes
630000
directAllocated ulong: bytes
157752
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
1142
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
603592
wasted ulong: bytes
3712
Example event data values and properties
allocated ulong: bytes
3521952
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
30
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
2
undoWaste ulong: bytes
0
used ulong: bytes
3146544
wasted ulong: bytes
58992

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

Event fields with their types and descriptions
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

Event fields with their types and descriptions
Field Type Description
type string Type

Examples 3
Prepare Mixed
Concurrent Start
Prepare Mixed

GCCause

GC Cause

Event fields with their types and descriptions
Field Type Description
cause string Cause

Examples 3
G1 Evacuation Pause
Allocation Failure
G1 Humongous Allocation

GCName

GC Name

Event fields with their types and descriptions
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

Event fields with their types and descriptions
Field Type Description
updater string Updater

Examples 3
compute_new_size
compute_new_size
compute_new_size

GCWhen

GC When

Event fields with their types and descriptions
Field Type Description
when string When

Examples 3

InflateCause

Inflation Cause

Event fields with their types and descriptions
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

Event fields with their types and descriptions
Field Type Description
type string Type

Examples 3

MetaspaceObjectType

Metaspace Object Type

Event fields with their types and descriptions
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

Event fields with their types and descriptions
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
Example event data values and properties
committed ulong: bytes
957808640
reserved ulong: bytes
1879048192
used ulong: bytes
954268464
Example event data values and properties
committed ulong: bytes
179175424
reserved ulong: bytes
1073741824
used ulong: bytes
177477752
Example event data values and properties
committed ulong: bytes
778633216
reserved ulong: bytes
805306368
used ulong: bytes
776790712

Method

Java Method

Event fields with their types and descriptions
Field Type Description
type Class Type
name Symbol Name
descriptor Symbol Descriptor
modifiers int Access Modifiers
hidden boolean Hidden

Module

Module

Event fields with their types and descriptions
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

Event fields with their types and descriptions
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

Event fields with their types and descriptions
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

Event fields with their types and descriptions
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
Example event data values and properties
end ulong: address
34024194048
size ulong: bytes
1061158912
start ulong: address
32963035136
used ulong: bytes
121027792
Example event data values and properties
end ulong: address
34080817152
size ulong: bytes
4194304
start ulong: address
34076622848
used ulong: bytes
3191552
Example event data values and properties
end ulong: address
32398901248
size ulong: bytes
2231369728
start ulong: address
30167531520
used ulong: bytes
260918584

OldObject

Appearing in: graalvm_linux_G1GC, graalvm_linux_native, linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: linux_ShenandoahGC, linux_ZGC

Old Object

Event fields with their types and descriptions
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
Example event data values and properties
address ulong: address
30253451208
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
Example event data values and properties
address ulong: address
30174834560
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
Example event data values and properties
address ulong: address
30222928184
description string
null
referrer Reference
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/agrona/concurrent/UnsafeBuffer
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/agrona/concurrent

OldObjectArray

Old Object Array

Event fields with their types and descriptions
Field Type Description
size int Array Size Size of array
index int Index Index in the array

OldObjectField

Old Object Field

Event fields with their types and descriptions
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

Event fields with their types and descriptions
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

Event fields with their types and descriptions
Field Type Description
system string System

OldObjectRootType

GC Root Type

Event fields with their types and descriptions
Field Type Description
type string Type

Package

Package

Event fields with their types and descriptions
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

Event fields with their types and descriptions
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

Event fields with their types and descriptions
Field Type Description
type string Type

Examples 3
Weak reference
Phantom reference
Final 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

Event fields with their types and descriptions
Field Type Description
state string State

Examples 3
Empty Committed
Empty Uncommitted
Humongous Continuation

StackFrame

Event fields with their types and descriptions
Field Type Description
method Method Java Method
lineNumber int Line Number
bytecodeIndex int Bytecode Index
type FrameType Frame Type

Examples 3
Example event data values and properties
bytecodeIndex int
0
lineNumber int
164
method Method
descriptor string
()Lcom/codahale/metrics/Timer$Context;
hidden boolean
false
modifiers int
1
name string
time
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
com/codahale/metrics/Timer
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/codahale/metrics
type FrameType
JIT compiled
Example event data values and properties
bytecodeIndex int
274
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/String;ID[DII[DII)V
hidden boolean
false
modifiers int
9
name string
dsyr
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/netlib/blas/Dsyr
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/netlib/blas
type FrameType
JIT compiled
Example event data values and properties
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

StackTrace

Stacktrace

Event fields with their types and descriptions
Field Type Description
truncated boolean Truncated
frames array StackFrame struct Stack Frames

Symbol

Symbol

Event fields with their types and descriptions
Field Type Description
string string String

Thread

Thread

Event fields with their types and descriptions
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

Event fields with their types and descriptions
Field Type Description
parent ThreadGroup Parent
name string Name

Examples 3
Example event data values and properties
name string
system
parent ThreadGroup
null
null
Example event data values and properties
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null

ThreadState

Java Thread State

Event fields with their types and descriptions
Field Type Description
name string Name

Examples 3
STATE_RUNNABLE
STATE_RUNNABLE
STATE_RUNNABLE

VMOperationType

VM Operation Type

Event fields with their types and descriptions
Field Type Description
type string Type

Examples 3
GC_HeapInspection
G1CollectForAllocation
ParallelGCCollect

VirtualSpace

Event fields with their types and descriptions
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
Example event data values and properties
committedEnd ulong: address
30196891648
committedSize ulong: bytes
29360128
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520
Example event data values and properties
committedEnd ulong: address
33621540864
committedSize ulong: bytes
3454009344
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520
Example event data values and properties
committedEnd ulong: address
32365346816
committedSize ulong: bytes
2197815296
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

Event fields with their types and descriptions
Field Type Description
type string Type

Examples 2

ZStatisticsCounterType

Appearing in: linux_ZGC

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

Z Statistics Counter

Event fields with their types and descriptions
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

Event fields with their types and descriptions
Field Type Description
sampler string Sampler

Examples 2
Concurrent Mark
Concurrent Roots ClassLoaderDataGraph

XML Content Types

address

Annotation: jdk.jfr.MemoryAddress

Examples 3
31014780928
31018637096
94895174441632

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
2.88972337853357E8
1.5673204779473382E8
9.541052997618986E8

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
2255958535
998794918
1917811103

epochmillis

Annotation: jdk.jfr.Timestamp(MILLISECONDS_SINCE_EPOCH)

Examples 3
1788871449128
-9223372036854775808
1788871449508

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
5243.0356
1000000000
1000000000

millis

Annotation: jdk.jfr.Timespan(MILLISECONDS)

Examples 3
453256930674
452950925172
453283823383

nanos

Annotation: jdk.jfr.Timespan(NANOSECONDS)

Examples 3
1000000
59341475790
119999999419

percentage

Annotation: jdk.jfr.Percentage

Examples 3
0.7227414
0.7362409
0.013499481

tickspan

Annotation: jdk.jfr.Timespan(TICKS)

Examples 3
104245825
104299946
284834109004

tickstamp

Annotation: jdk.jfr.Timestamp(TICKS)

XML Types

Class

Property Value
Parameter Type const Klass*
Field Type const Klass*
Java Type java.lang.Class
Examples 3
null
null
Example event data values and properties
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

ClassLoader

Property Value
Parameter Type const ClassLoaderData*
Field Type const ClassLoaderData*
Examples 3
Example event data values and properties
name string
bootstrap
type Class
null
Example event data values and properties
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
Example event data values and properties
name string
bootstrap
type Class
null

Method

Property Value
Parameter Type const Method*
Field Type const Method*
Examples 3
Example event data values and properties
descriptor string
(Ljava/lang/String;ID[DII[DII)V
hidden boolean
false
modifiers int
9
name string
dsyr
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/netlib/blas/Dsyr
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/netlib/blas
Example event data values and properties
descriptor string
()Lcom/codahale/metrics/Timer$Context;
hidden boolean
false
modifiers int
1
name string
time
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
com/codahale/metrics/Timer
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/codahale/metrics
Example event data values and properties
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

Module

Property Value
Parameter Type const ModuleEntry*
Field Type const ModuleEntry*
Examples 3
Example event data values and properties
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
Example event data values and properties
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1
Example event data values and properties
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.4.1

Package

Property Value
Parameter Type const PackageEntry*
Field Type const PackageEntry*
Examples 3
Example event data values and properties
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
Example event data values and properties
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
Example event data values and properties
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

StackTrace

15+

Property Value
Parameter Type u8
Field Type u8
Java Type jdk.types.StackTrace
Examples 3
Example event data values and properties
frames StackFrame
bytecodeIndex int
0
lineNumber int
164
method Method
descriptor string
()Lcom/codahale/metrics/Timer$Context;
hidden boolean
false
modifiers int
1
name string
time
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
com/codahale/metrics/Timer
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/codahale/metrics
type FrameType
JIT compiled
…
truncated boolean
false
Example event data values and properties
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
Example event data values and properties
frames StackFrame
bytecodeIndex int
274
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/String;ID[DII[DII)V
hidden boolean
false
modifiers int
9
name string
dsyr
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/netlib/blas/Dsyr
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/netlib/blas
type FrameType
JIT compiled
…
truncated boolean
false

Thread

Property Value
Parameter Type u8
Field Type u8
Java Type java.lang.Thread
Examples 3
Example event data values and properties
group ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Reference Handler
javaThreadId long
13
osName string
Reference Handler
osThreadId long
2545
virtual boolean
false
Example event data values and properties
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Executor task launch worker for task 2.0 in stage 47.0 (TID 184)
javaThreadId long
1733
osName string
Executor task launch worker for task 2.0 in stage 47.0 (TID 184)
osThreadId long
4650
virtual boolean
false
Example event data values and properties
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
SparkUI-1705
javaThreadId long
1705
osName string
SparkUI-1705
osThreadId long
4618
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

Property Value
Parameter Type const Ticks&
Field Type Ticks
Java Type long
Content Type tickstamp
Examples 3
244442933552
25395074555
225557361761

Tickspan

unsigned

Property Value
Parameter Type const Tickspan&
Field Type Tickspan
Java Type long
Content Type tickspan

boolean

Property Value
Parameter Type bool
Field Type bool
Java Type boolean
Examples 3

byte

Property Value
Parameter Type s1
Field Type s1
Java Type byte

char

Property Value
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

Property Value
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

Property Value
Parameter Type float
Field Type float
Java Type float
Examples 3

int

Property Value
Parameter Type s4
Field Type s4
Java Type int
Examples 3

long

Property Value
Parameter Type s8
Field Type s8
Java Type long
Examples 3

short

Property Value
Parameter Type s2
Field Type s2
Java Type short

string

Property Value
Parameter Type const char*
Field Type const char*
Java Type java.lang.String
Examples 3
java/net
java/net/URLClassLoader
bootstrap

ubyte

unsigned

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

Missing in: graalvm_linux_native

Property Value
Parameter Type u1
Field Type u1
Java Type byte
Examples 3

uint

unsigned

Property Value
Parameter Type unsigned
Field Type unsigned
Java Type int
Examples 3

ulong

unsigned

Property Value
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

Property Value
Parameter Type u2
Field Type u2
Java Type short
Examples 3