Introduction

The following are the events for OpenJDK 15 (jdk-15.0.10+5, permalink, 15-November-2024). The events are collected from the event configuration and the source code. Visit the jfreventcollector repository for more information. This is also the place you can contribute additional event descriptions, if you don't want to contribute them directly to the OpenJDK. The site generator lives on GitHub , too.

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

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

Flight Recorder

DumpReason

default profiling startTime 11 17 21 23 24

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

Configuration enabled
default true
profiling true

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

DataLoss

default profiling startTime 11 17 21 23 24

Category: Flight Recorder

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

Code Context

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

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

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

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

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

Configuration enabled
default true
profiling true

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

Flush

experimental startTime duration 14 17 21 23 24

Category: Flight Recorder

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

class StackTraceRepository : public StackObj {
 private:

Configuration enabled threshold
default false 0 ns
profiling false 0 ns

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

Examples 3
elements ulong
507
flushId ulong
34
size ulong: bytes
596588
startTime long: millis
36411434250
elements ulong
92
flushId ulong
56
size ulong: bytes
88132
startTime long: millis
62800269708
elements ulong
2531
flushId ulong
624
size ulong: bytes
1000640
startTime long: millis
809683272208

ActiveRecording

default profiling startTime duration stackTrace 11 17 21 23 24

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

Category: Flight Recorder

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined 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,

Configuration enabled
default true
profiling true

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

Examples 3
destination string
[...]/code/experiments/jfreventcollector/jfr/sample_UseSerialGC.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
1702899981921
stackTrace StackTrace
null
startTime long: millis
75960656375
destination string
[...]/code/experiments/jfreventcollector/jfr/sample_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
1727266203142
startTime long: millis
914255486833
destination string
[...]/code/experiments/jfreventcollector/jfr/sample_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
1702899886817
stackTrace StackTrace
null
startTime long: millis
39217883625

ActiveSetting

default profiling startTime duration stackTrace 11 17 21 23 24

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

Category: Flight Recorder

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined 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/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<?>[] {

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

Configuration enabled
default true
profiling true

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

Examples 3
id long
44
name string
enabled
stackTrace StackTrace
null
startTime long: millis
416785542
value string
true
id long
66
name string
enabled
startTime long: millis
791746993083
value string
true
id long
65
name string
threshold
stackTrace StackTrace
null
startTime long: millis
360834042
value string
0 ms

JVM

JVMInformation

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Java Virtual Machine

Description of JVM and the Java application

Code Context

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

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

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

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

TRACE_REQUEST_FUNC(OSInformation) {

Configuration enabled period
default true beginChunk
profiling true beginChunk

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

Examples 3
javaArguments string
[...]/code/experiments/jfreventcollector/.cache/renaissance.jar -t 5 -r 1 all
jvmArguments string
-XX:StartFlightRecording=filename=[...]/code/experiments/jfreventcollector/jfr/sample_UseParallelGC.jfr,settings=[...]/code/experiments/jfreventcollector/.cache/jfc.jfc -XX:+UseParallelGC
jvmFlags string
null
jvmName string
OpenJDK 64-Bit Server VM
jvmStartTime long: epochmillis
1702899886436
jvmVersion string
OpenJDK 64-Bit Server VM (21.0.1+12-LTS) for bsd-aarch64 JRE (21.0.1+12-LTS), built on 2023-10-17T00:00:00Z by "admin" with clang Apple LLVM 12.0.0 (clang-1200.0.32.29)
pid long
13981
startTime long: millis
30585938083
javaArguments string
[...]/code/experiments/jfreventcollector/.cache/renaissance.jar -t 5 -r 1 all
jvmArguments string
-XX:StartFlightRecording=filename=[...]/code/experiments/jfreventcollector/jfr/sample_UseG1GC.jfr,settings=[...]/code/experiments/jfreventcollector/.cache/jfc.jfc -XX:+UseG1GC
jvmFlags string
null
jvmName string
OpenJDK 64-Bit Server VM
jvmStartTime long: epochmillis
1727266202802
jvmVersion string
OpenJDK 64-Bit Server VM (22+36) for bsd-aarch64 JRE (22+36), built on 2024-03-13T13:18:01Z by "sapmachine" with clang Apple LLVM 13.0.0 (clang-1300.0.29.3)
pid long
26284
startTime long: millis
904000689375
javaArguments string
[...]/code/experiments/jfreventcollector/.cache/renaissance.jar -t 5 -r 1 all
jvmArguments string
-XX:StartFlightRecording=filename=[...]/code/experiments/jfreventcollector/jfr/sample_UseSerialGC.jfr,settings=[...]/code/experiments/jfreventcollector/.cache/jfc.jfc -XX:+UseSerialGC
jvmFlags string
null
jvmName string
OpenJDK 64-Bit Server VM
jvmStartTime long: epochmillis
1702899981604
jvmVersion string
OpenJDK 64-Bit Server VM (21.0.1+12-LTS) for bsd-aarch64 JRE (21.0.1+12-LTS), built on 2023-10-17T00:00:00Z by "admin" with clang Apple LLVM 12.0.0 (clang-1200.0.32.29)
pid long
14273
startTime long: millis
75961227292

InitialSystemProperty

default profiling startTime end of every chunk 11 17 21 23 24

Category: Java Virtual Machine

System Property at JVM start

Code Context

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

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

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

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

TRACE_REQUEST_FUNC(ThreadAllocationStatistics) {
  ResourceMark rm;

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
key string Key
value string Value

Examples 3
key string
java.vm.specification.vendor
startTime long: millis
30519032542
value string
Oracle Corporation
key string
java.vm.name
startTime long: millis
75084799292
value string
OpenJDK 64-Bit Server VM
key string
java.vm.vendor
startTime long: millis
833225763542
value string
SAP SE

JVM: Class Loading

ClassLoad

startTime duration eventThread stackTrace 11 17 21 23 24

Category: Java Virtual Machine / Class Loading

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

//

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

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

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

Field Type Description
loadedClass Class Loaded Class Consider contributing a description to jfreventcollector.
definingClassLoader ClassLoader Defining Class Loader Consider contributing a description to jfreventcollector.
initiatingClassLoader ClassLoader Initiating Class Loader Consider contributing a description to jfreventcollector.

Examples 3
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
22
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
22
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
22
name string
java/net
hidden boolean
true
modifiers int
4112
name string
org.apache.spark.status.AppStatusListener$$Lambda+0x000007f806381f48/1726027448
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
22
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/spark/status
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
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
22
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
840682885292
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
48
name string
java/util/regex/Pattern$TreeInfo
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util/regex
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
9
lineNumber int
3776
method Method
descriptor string
(Ljava/util/regex/Pattern$Node;)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
32
name string
java/util/regex/Pattern$Start
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util/regex
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
396532000
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
true
modifiers int
4144
name string
java.util.regex.CharPredicates$$Lambda+0x0000000800105800/552936351
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util/regex
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
1057
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
21.0.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
456488708

ClassDefine

startTime eventThread stackTrace 11 17 21 23 24

Category: Java Virtual Machine / Class Loading

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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();

Configuration enabled stackTrace
default false true
profiling false true

Field Type Description
definedClass Class Defined Class Consider contributing a description to jfreventcollector.
definingClassLoader ClassLoader Defining Class Loader Consider contributing a description to jfreventcollector.

Examples 3
definedClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/net
hidden boolean
false
modifiers int
1537
name string
scala/reflect/internal/FreshNames
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
22
name string
java/net
location string
null
name string
null
version string
null
name string
scala/reflect/internal
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
22
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
22
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
843486298583
definedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
48
name string
java/util/regex/Pattern$GroupTail
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util/regex
definingClassLoader ClassLoader
name string
bootstrap
type Class
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
41
lineNumber int
3315
method Method
descriptor string
(Z)Ljava/util/regex/Pattern$Node;
hidden boolean
false
modifiers int
2
name string
createGroup
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
49
name string
java/util/regex/Pattern
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util/regex
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
456196292
definedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1057
name string
java/util/logging/Handler
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.logging
name string
java.logging
version string
21.0.1
name string
java/util/logging
definingClassLoader ClassLoader
name string
bootstrap
type Class
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/String;)Ljava/lang/Class;
hidden boolean
false
modifiers int
266
name string
findBootstrapClass
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1057
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
21.0.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
392539375

ClassRedefinition

default profiling startTime 15 17 21 23 24

Category: Java Virtual Machine / Class Loading

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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)

Configuration enabled
default true
profiling true

Field Type Description
redefinedClass Class Redefined Class Consider contributing a description to jfreventcollector.
classModificationCount int Class Modification Count The number of times the class has changed
redefinitionId ulong Class Redefinition Id

RedefineClasses

default profiling startTime duration eventThread stackTrace 15 17 21 23 24

Category: Java Virtual Machine / Class Loading

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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


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

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

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

RetransformClasses

default profiling startTime duration eventThread stackTrace 15 17 21 23 24

Category: Java Virtual Machine / Class Loading

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

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

ClassUnload

startTime eventThread 11 17 21 23 24

Category: Java Virtual Machine / Class Loading

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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() {

Configuration enabled
default false
profiling false

Field Type Description
unloadedClass Class Unloaded Class Consider contributing a description to jfreventcollector.
definingClassLoader ClassLoader Defining Class Loader Consider contributing a description to jfreventcollector.

Examples 3
definingClassLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
startTime long: millis
4558858375
unloadedClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
hidden boolean
false
modifiers int
48
name string
org/sparkproject/guava/collect/SingletonImmutableBiMap
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
33
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
21.0.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/sparkproject/guava/collect
definingClassLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
startTime long: millis
3889484625
unloadedClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
hidden boolean
false
modifiers int
32
name string
org/sparkproject/guava/collect/RegularImmutableMap$EntrySet
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
33
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
21.0.1
name string
java/net
location string
null
name string
null
version string
null
name string
org/sparkproject/guava/collect
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
22
name string
java/net
startTime long: millis
852482795417
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
22
name string
java/net
hidden boolean
false
modifiers int
1537
name string
scala/reflect/ClassTag
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
22
name string
java/net
location string
null
name string
null
version string
null
name string
scala/reflect

JVM: Code Cache

CodeCacheFull

default profiling startTime eventThread 11 17 21 23 24

Category: Java Virtual Machine / Code Cache

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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();

Configuration enabled
default true
profiling true

Field Type Description
codeBlobType CodeBlobType Code Heap Consider contributing a description to jfreventcollector.
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

default profiling startTime every chunk 11 17 21 23 24

Category: Java Virtual Machine / Code Cache

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

Configuration enabled period
default true everyChunk
profiling true everyChunk

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

Examples 3
adaptorCount int
359
codeBlobType CodeBlobType
CodeHeap 'non-nmethods'
entryCount int
449
fullCount int
0
methodCount int
0
reservedTopAddress ulong: address
5094801408
startAddress ulong: address
5088952320
startTime long: millis
423297625
unallocatedCapacity ulong: bytes
4571136
adaptorCount int
0
codeBlobType CodeBlobType
CodeHeap 'non-profiled nmethods'
entryCount int
4271
fullCount int
0
methodCount int
4271
reservedTopAddress ulong: address
4797415424
startAddress ulong: address
4674502656
startTime long: millis
925568754083
unallocatedCapacity ulong: bytes
115422464
adaptorCount int
0
codeBlobType CodeBlobType
CodeHeap 'profiled nmethods'
entryCount int
3759
fullCount int
0
methodCount int
3759
reservedTopAddress ulong: address
4604248064
startAddress ulong: address
4481351680
startTime long: millis
87695871083
unallocatedCapacity ulong: bytes
113593856

CodeCacheConfiguration

default profiling startTime end of every chunk 11 17 21 23 24

Category: Java Virtual Machine / Code Cache

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

Configuration enabled period
default true beginChunk
profiling true beginChunk

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

Examples 3
expansionSize ulong: bytes
65536
initialSize ulong: bytes
2555904
minBlockLength ulong: bytes
6
nonNMethodSize ulong: bytes
5839564
nonProfiledSize ulong: bytes
122909338
profiledSize ulong: bytes
122909338
reservedSize ulong: bytes
251658240
reservedTopAddress ulong: address
4797415424
startAddress ulong: address
4545757184
startTime long: millis
857447035042
expansionSize ulong: bytes
65536
initialSize ulong: bytes
2555904
minBlockLength ulong: bytes
6
nonNMethodSize ulong: bytes
5839564
nonProfiledSize ulong: bytes
122909338
profiledSize ulong: bytes
122909338
reservedSize ulong: bytes
251658240
reservedTopAddress ulong: address
5217714176
startAddress ulong: address
4966055936
startTime long: millis
93747386417
expansionSize ulong: bytes
65536
initialSize ulong: bytes
2555904
minBlockLength ulong: bytes
6
nonNMethodSize ulong: bytes
5839564
nonProfiledSize ulong: bytes
122909338
profiledSize ulong: bytes
122909338
reservedSize ulong: bytes
251658240
reservedTopAddress ulong: address
4733009920
startAddress ulong: address
4481351680
startTime long: millis
88125696958

JVM: Code Sweeper

SweepCodeCache

default profiling startTime duration eventThread 11 17 until JDK 20

Category: Java Virtual Machine / Code Sweeper

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

  sweep_code_cache();

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

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

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

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

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

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

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

  Log(codecache, sweep) log;

Configuration enabled threshold
default true 100 ms
profiling true 100 ms

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

CodeSweeperStatistics

default profiling startTime every chunk 11 17 until JDK 20

Category: Java Virtual Machine / Code Sweeper

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

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

Configuration enabled period
default true everyChunk
profiling true everyChunk

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

CodeSweeperConfiguration

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

Category: Java Virtual Machine / Code Sweeper

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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;

Configuration enabled period
default true beginChunk
profiling true beginChunk

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

JVM: Compiler

Compilation

default profiling startTime duration eventThread 11 17 21 23 24

Category: Java Virtual Machine / Compiler

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

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

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

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

  class PhaseEvent : AllStatic {
    friend class CompilerPhaseTypeConstant;
   public:
    /**

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

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

Configuration enabled threshold
default true 1000 ms
profiling true 100 ms

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

Examples 3
codeSize ulong: bytes
49760
compileId uint
6694
compileLevel ushort
4
compiler CompilerType
c2
inlinedBytes ulong: bytes
2396
isOsr boolean
false
method Method
descriptor string
()V
hidden boolean
false
modifiers int
2
name string
finishTerminate
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
hidden boolean
false
modifiers int
1537
name string
akka/actor/dungeon/FaultHandling
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
33
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
21.0.1
name string
java/net
location string
null
name string
null
version string
null
name string
akka/actor/dungeon
startTime long: millis
14205774250
succeded boolean
true
codeSize ulong: bytes
26960
compileId uint
15440
compileLevel ushort
4
compiler CompilerType
c2
inlinedBytes ulong: bytes
4597
isOsr boolean
false
method Method
descriptor string
(Lio/netty/channel/AbstractChannelHandlerContext;Ljava/lang/Object;)V
hidden boolean
false
modifiers int
8
name string
invokeUserEventTriggered
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
hidden boolean
false
modifiers int
1056
name string
io/netty/channel/AbstractChannelHandlerContext
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
33
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
21.0.1
name string
java/net
location string
null
name string
null
version string
null
name string
io/netty/channel
startTime long: millis
40809717208
succeded boolean
true
codeSize ulong: bytes
6328
compileId uint
97402
compileLevel ushort
3
compiler CompilerType
c1
inlinedBytes ulong: bytes
177
isOsr boolean
false
method Method
descriptor string
(Ljava/lang/Object;I)Lorg/sparkproject/guava/cache/LocalCache$ReferenceEntry;
hidden boolean
false
modifiers int
0
name string
getEntry
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
22
name string
java/net
hidden boolean
false
modifiers int
8
name string
org/sparkproject/guava/cache/LocalCache$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
22
name string
java/net
location string
null
name string
null
version string
null
name string
org/sparkproject/guava/cache
startTime long: millis
884174809042
succeded boolean
true

CompilerPhase

default profiling startTime duration eventThread 11 17 21 23 24

Category: Java Virtual Machine / Compiler

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

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

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

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

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

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

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

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

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

        private static int getPhaseToId(String phaseName) {
            String[] phaseNames = { phaseName };
            return phaseToId.computeIfAbsent(phaseName, k -> compilerToVM().registerCompilerPhases(phaseNames));
        }

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

Configuration enabled threshold
default true 60 s
profiling true 10 s

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

CompilationFailure

profiling startTime eventThread 11 17 21 23 24

Category: Java Virtual Machine / Compiler

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

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

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

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

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

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

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

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

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

  class PhaseEvent : AllStatic {
    friend class CompilerPhaseTypeConstant;
   public:
    /**
     * 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/compiler/compilerEvent.cpp:

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

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

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

Configuration enabled
default false
profiling true

Field Type Description
failureMessage string Failure Message
compileId uint Compilation Identifier

Examples 3
compileId uint
99696
failureMessage string
concurrent class loading
startTime long: millis
890105317542
compileId uint
22930
failureMessage string
concurrent class loading
startTime long: millis
74091028458
compileId uint
3706
failureMessage string
concurrent class loading
startTime long: millis
3613493750

CompilerInlining

startTime eventThread 11 17 21 23 24

Category: Java Virtual Machine / Compiler / Optimization

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

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

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

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

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

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

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

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

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

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

Configuration enabled
default false
profiling false

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

Examples 3
bci int
6
callee CalleeMethod
descriptor string
(Ljava/lang/Object;)I
name string
typeCode
type string
scala/runtime/BoxesRunTime
caller Method
descriptor string
(Ljava/lang/Number;Ljava/lang/Number;)Z
hidden boolean
false
modifiers int
9
name string
equalsNumNum
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
22
name string
java/net
hidden boolean
false
modifiers int
17
name string
scala/runtime/BoxesRunTime
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
22
name string
java/net
location string
null
name string
null
version string
null
name string
scala/runtime
compileId uint
85847
message string
inline (hot)
startTime long: millis
794959011750
succeeded boolean
true
bci int
2
callee CalleeMethod
descriptor string
(I)Ljava/lang/AbstractStringBuilder;
name string
append
type string
java/lang/AbstractStringBuilder
caller Method
descriptor string
(I)Ljava/lang/StringBuilder;
hidden boolean
false
modifiers int
1
name string
append
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
49
name string
java/lang/StringBuilder
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/lang
compileId uint
1413
message string
callee is too large
startTime long: millis
359610542
succeeded boolean
false
bci int
11
callee CalleeMethod
descriptor string
(J)V
name string
putUncheckedLong
type string
jdk/jfr/internal/event/EventWriter
caller Method
descriptor string
(J)V
hidden boolean
false
modifiers int
1
name string
putLong
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
49
name string
jdk/jfr/internal/event/EventWriter
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
21.0.1
name string
jdk/jfr/internal/event
compileId uint
1490
message string
callee is too large
startTime long: millis
421573708
succeeded boolean
false

Deoptimization

default profiling startTime eventThread stackTrace 14 17 21 23 24

Category: Java Virtual Machine / Compiler

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

Configuration enabled stackTrace
default true false
profiling true true

Field Type Description
compileId uint Compilation Identifier
compiler CompilerType Compiler Consider contributing a description to jfreventcollector.
method Method Method Consider contributing a description to jfreventcollector.
lineNumber int Line Number
bci int Bytecode Index
instruction Bytecode Instruction Consider contributing a description to jfreventcollector.
reason DeoptimizationReason Reason Consider contributing a description to jfreventcollector.
action DeoptimizationAction Action Consider contributing a description to jfreventcollector.

Examples 3
action DeoptimizationAction
maybe_recompile
bci int
5
compileId uint
3150
compiler CompilerType
c2
instruction Bytecode
invokeinterface
lineNumber int
256
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
1
name string
begin
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1057
name string
java/util/stream/Sink$ChainedReference
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util/stream
reason DeoptimizationReason
bimorphic_or_optimized_type_check
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
5
lineNumber int
256
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
1
name string
begin
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1057
name string
java/util/stream/Sink$ChainedReference
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util/stream
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
1860062542
action DeoptimizationAction
maybe_recompile
bci int
5
compileId uint
3210
compiler CompilerType
c2
instruction Bytecode
invokeinterface
lineNumber int
164
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
1
name string
begin
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
name string
java/util/stream/ReduceOps$3ReducingSink
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util/stream
reason DeoptimizationReason
bimorphic_or_optimized_type_check
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
5
lineNumber int
164
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
1
name string
begin
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
name string
java/util/stream/ReduceOps$3ReducingSink
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util/stream
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
3541753833
action DeoptimizationAction
maybe_recompile
bci int
148
compileId uint
88872
compiler CompilerType
c2
instruction Bytecode
instanceof
lineNumber int
872
method Method
descriptor string
(Lscala/concurrent/stm/ccstm/Handle;J)Lscala/Symbol;
hidden boolean
false
modifiers int
2
name string
checkRead
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
22
name string
java/net
hidden boolean
false
modifiers int
1
name string
scala/concurrent/stm/ccstm/InTxnImpl
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
22
name string
java/net
location string
null
name string
null
version string
null
name string
scala/concurrent/stm/ccstm
reason DeoptimizationReason
class_check
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
148
lineNumber int
872
method Method
descriptor string
(Lscala/concurrent/stm/ccstm/Handle;J)Lscala/Symbol;
hidden boolean
false
modifiers int
2
name string
checkRead
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
22
name string
java/net
hidden boolean
false
modifiers int
1
name string
scala/concurrent/stm/ccstm/InTxnImpl
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
22
name string
java/net
location string
null
name string
null
version string
null
name string
scala/concurrent/stm/ccstm
type FrameType
Inlined
truncated boolean
false
startTime long: millis
853170711042

CompilerStatistics

default profiling startTime every chunk 11 17 21 23 24

Category: Java Virtual Machine / Compiler

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

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

Configuration enabled period
default true 1000 ms
profiling true 1000 ms

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

Examples 3
bailoutCount int
11
compileCount int
96235
invalidatedCount int
0
nmethodCodeSize ulong: bytes
125573784
nmethodsSize ulong: bytes
189225792
osrBytesCompiled ulong: bytes
0
osrCompileCount int
1135
peakTimeSpent long: millis
10885
standardBytesCompiled ulong: bytes
0
standardCompileCount int
95100
startTime long: millis
898330801458
totalTimeSpent long: millis
408578
bailoutCount int
2
compileCount int
19631
invalidatedCount int
0
nmethodCodeSize ulong: bytes
23379576
nmethodsSize ulong: bytes
36711528
osrBytesCompiled ulong: bytes
0
osrCompileCount int
181
peakTimeSpent long: millis
1360
standardBytesCompiled ulong: bytes
0
standardCompileCount int
19450
startTime long: millis
79385895583
totalTimeSpent long: millis
64291
bailoutCount int
4
compileCount int
32641
invalidatedCount int
0
nmethodCodeSize ulong: bytes
42788472
nmethodsSize ulong: bytes
65397632
osrBytesCompiled ulong: bytes
0
osrCompileCount int
235
peakTimeSpent long: millis
953
standardBytesCompiled ulong: bytes
0
standardCompileCount int
32406
startTime long: millis
81087491500
totalTimeSpent long: millis
60848

CompilerConfiguration

default profiling startTime end of every chunk 11 17 21 23 24

Category: Java Virtual Machine / Compiler

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

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

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
threadCount int Thread Count
tieredCompilation boolean Tiered Compilation

Examples 3
startTime long: millis
88125694458
threadCount int
4
tieredCompilation boolean
true
startTime long: millis
60345397167
threadCount int
4
tieredCompilation boolean
true
startTime long: millis
833251960792
threadCount int
4
tieredCompilation boolean
true

JVM: Diagnostics

HeapDump

default profiling startTime duration eventThread stackTrace 15 17 21 23 24

Category: Java Virtual Machine / Diagnostics

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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;
    }
  }

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

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

JVM: Flag

IntFlagChanged

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / Flag

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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);
}

Configuration enabled
default true
profiling true

Field Type Description
name string Name
oldValue int Old Value
newValue int New Value
origin FlagValueOrigin Origin Consider contributing a description to jfreventcollector.

UnsignedIntFlagChanged

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / Flag

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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);
}

Configuration enabled
default true
profiling true

Field Type Description
name string Name
oldValue uint Old Value
newValue uint New Value
origin FlagValueOrigin Origin Consider contributing a description to jfreventcollector.

LongFlagChanged

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / Flag

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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);
}

Configuration enabled
default true
profiling true

Field Type Description
name string Name
oldValue long Old Value
newValue long New Value
origin FlagValueOrigin Origin Consider contributing a description to jfreventcollector.

UnsignedLongFlagChanged

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / Flag

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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);
}

Configuration enabled
default true
profiling true

Field Type Description
name string Name
oldValue ulong Old Value
newValue ulong New Value
origin FlagValueOrigin Origin Consider contributing a description to jfreventcollector.

DoubleFlagChanged

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / Flag

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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);
}

Configuration enabled
default true
profiling true

Field Type Description
name string Name
oldValue double Old Value
newValue double New Value
origin FlagValueOrigin Origin Consider contributing a description to jfreventcollector.

BooleanFlagChanged

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / Flag

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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);
}

Configuration enabled
default true
profiling true

Field Type Description
name string Name
oldValue boolean Old Value
newValue boolean New Value
origin FlagValueOrigin Origin Consider contributing a description to jfreventcollector.

StringFlagChanged

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / Flag

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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" {

Configuration enabled
default true
profiling true

Field Type Description
name string Name
oldValue string Old Value
newValue string New Value
origin FlagValueOrigin Origin Consider contributing a description to jfreventcollector.

IntFlag

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Java Virtual Machine / Flag

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
name string Name
value int Value
origin FlagValueOrigin Origin Consider contributing a description to jfreventcollector.

Examples 3
name string
JavaPriority10_To_OSPriority
origin FlagValueOrigin
Default
startTime long: millis
40031148083
value int
-1
name string
UnguardOnExecutionViolation
origin FlagValueOrigin
Default
startTime long: millis
17899850333
value int
0
name string
JavaPriority4_To_OSPriority
origin FlagValueOrigin
Default
startTime long: millis
798681835583
value int
-1

UnsignedIntFlag

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Java Virtual Machine / Flag

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
name string Name
value uint Value
origin FlagValueOrigin Origin Consider contributing a description to jfreventcollector.

Examples 3
name string
ConcGCThreads
origin FlagValueOrigin
Default
startTime long: millis
75962745333
value uint
0
name string
GCTimeLimit
origin FlagValueOrigin
Default
startTime long: millis
791773037292
value uint
98
name string
TestCrashInErrorHandler
origin FlagValueOrigin
Default
startTime long: millis
39268377458
value uint
0

LongFlag

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Java Virtual Machine / Flag

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
name string Name
value long Value
origin FlagValueOrigin Origin Consider contributing a description to jfreventcollector.

Examples 3
name string
IndexSetWatch
origin FlagValueOrigin
Default
startTime long: millis
364806208
value long
0
name string
Tier3BackEdgeThreshold
origin FlagValueOrigin
Default
startTime long: millis
423474583
value long
60000
name string
Tier3BackEdgeThreshold
origin FlagValueOrigin
Default
startTime long: millis
791773047875
value long
60000

UnsignedLongFlag

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Java Virtual Machine / Flag

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
name string Name
value ulong Value
origin FlagValueOrigin Origin Consider contributing a description to jfreventcollector.

Examples 3
name string
HeapMaximumCompactionInterval
origin FlagValueOrigin
Default
startTime long: millis
423578917
value ulong
20
name string
TLABWasteIncrement
origin FlagValueOrigin
Default
startTime long: millis
364827083
value ulong
4
name string
ReservedCodeCacheSize
origin FlagValueOrigin
Ergonomic
startTime long: millis
791773058000
value ulong
251658240

DoubleFlag

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Java Virtual Machine / Flag

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
name string Name
value double Value
origin FlagValueOrigin Origin Consider contributing a description to jfreventcollector.

Examples 3
name string
InitialRAMPercentage
origin FlagValueOrigin
Default
startTime long: millis
39268409875
value double
1.5625
name string
SweeperThreshold
origin FlagValueOrigin
Default
startTime long: millis
15845389125
value double
15.0
name string
ZCollectionInterval
origin FlagValueOrigin
Default
startTime long: millis
798682014417
value double
0.0

BooleanFlag

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Java Virtual Machine / Flag

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
name string Name
value boolean Value
origin FlagValueOrigin Origin Consider contributing a description to jfreventcollector.

Examples 3
name string
PrintNullCheckElimination
origin FlagValueOrigin
Default
startTime long: millis
364840250
value boolean
false
name string
AlignVector
origin FlagValueOrigin
Default
startTime long: millis
423601542
value boolean
false
name string
DeoptC1
origin FlagValueOrigin
Default
startTime long: millis
791773076792
value boolean
true

StringFlag

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Java Virtual Machine / Flag

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
name string Name
value string Value
origin FlagValueOrigin Origin Consider contributing a description to jfreventcollector.

Examples 3
name string
DumpLoadedClassList
origin FlagValueOrigin
Default
startTime long: millis
364877708
value string
null
name string
TraceJVMTI
origin FlagValueOrigin
Default
startTime long: millis
30586899250
value string
null
name string
ErrorFile
origin FlagValueOrigin
Default
startTime long: millis
798682168125
value string
null

JVM: GC: Collector

GarbageCollection

default profiling startTime duration 11 17 21 23 24

Category: Java Virtual Machine / GC / Collector

Garbage collection performed by the JVM

Code Context

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

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

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

typedef uintptr_t TraceAddress;

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

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

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

Examples 3
cause GCCause
Allocation Failure
gcId uint
6
longestPause Tickspan
17460416
name GCName
ParallelScavenge
startTime long: millis
1245449542
sumOfPauses Tickspan
17460416
cause GCCause
G1 Humongous Allocation
gcId uint
899
longestPause Tickspan
0
name GCName
G1Old
startTime long: millis
842437807958
sumOfPauses Tickspan
0
cause GCCause
Allocation Failure
gcId uint
6
longestPause Tickspan
11838500
name GCName
DefNew
startTime long: millis
1199790875
sumOfPauses Tickspan
11838500

ParallelOldGarbageCollection

default profiling startTime duration 11 17 21 23 24

Category: Java Virtual Machine / GC / Collector

Appearing in: ParallelGC

Missing in: G1GC, SerialGC, ShenandoahGC, ZGC

Extra information specific to Parallel Old Garbage Collections

Code Context

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

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

    e.set_smallChunksTotalSize(summary.small_chunks_size_in_bytes());

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

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

    e.commit();
  }
}

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

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

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

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

Examples 1
densePrefix ulong: address
30064771072
gcId uint
1
startTime long: millis
426255417

YoungGarbageCollection

default profiling startTime duration 11 17 21 23 24

Category: Java Virtual Machine / GC / Collector

Appearing in: G1GC, ParallelGC, SerialGC

Missing in: ShenandoahGC, ZGC

Extra information specific to Young Garbage Collections

Code Context

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

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

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

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

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

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
gcId uint GC Identifier
tenuringThreshold uint Tenuring Threshold

Examples 3
gcId uint
85
startTime long: millis
62244256667
tenuringThreshold uint
15
gcId uint
90
startTime long: millis
14644926583
tenuringThreshold uint
1
gcId uint
973
startTime long: millis
897413557917
tenuringThreshold uint
15

OldGarbageCollection

default profiling startTime duration 11 17 21 23 24

Category: Java Virtual Machine / GC / Collector

Appearing in: G1GC, ParallelGC, SerialGC

Missing in: ShenandoahGC, ZGC

Extra information specific to Old Garbage Collections

Code Context

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

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

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

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

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

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
gcId uint GC Identifier

Examples 3
gcId uint
874
startTime long: millis
805719019792
gcId uint
92
startTime long: millis
64383837083
gcId uint
147
startTime long: millis
30202048500

G1GarbageCollection

default profiling startTime duration 11 17 21 23 24

Category: Java Virtual Machine / GC / Collector

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, 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;

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
gcId uint GC Identifier
type G1YCType Type Consider contributing a description to jfreventcollector.

Examples 1
gcId uint
910
startTime long: millis
849799673875
type G1YCType
Normal

JVM: GC: Configuration

GCConfiguration

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Java Virtual Machine / GC / Configuration

The configuration of the garbage collector

Code Context

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

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

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

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

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

Configuration enabled period
default true everyChunk
profiling true everyChunk

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

Examples 3
concurrentGCThreads uint
0
gcTimeRatio uint
99
isExplicitGCConcurrent boolean
false
isExplicitGCDisabled boolean
false
oldCollector GCName
SerialOld
parallelGCThreads uint
0
pauseTarget long: millis
-9223372036854775808
startTime long: millis
96932668417
usesDynamicGCThreads boolean
true
youngCollector GCName
DefNew
concurrentGCThreads uint
2
gcTimeRatio uint
12
isExplicitGCConcurrent boolean
false
isExplicitGCDisabled boolean
false
oldCollector GCName
G1Old
parallelGCThreads uint
8
pauseTarget long: millis
-9223372036854775808
startTime long: millis
925885354875
usesDynamicGCThreads boolean
true
youngCollector GCName
G1New
concurrentGCThreads uint
0
gcTimeRatio uint
99
isExplicitGCConcurrent boolean
false
isExplicitGCDisabled boolean
false
oldCollector GCName
ParallelOld
parallelGCThreads uint
8
pauseTarget long: millis
-9223372036854775808
startTime long: millis
39413196458
usesDynamicGCThreads boolean
true
youngCollector GCName
ParallelScavenge

GCSurvivorConfiguration

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Java Virtual Machine / GC / Configuration

The configuration of the survivors of garbage collection

Code Context

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

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

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

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

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

Configuration enabled period
default true beginChunk
profiling true beginChunk

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

Examples 3
initialTenuringThreshold ubyte
7
maxTenuringThreshold ubyte
15
startTime long: millis
798811220458
initialTenuringThreshold ubyte
7
maxTenuringThreshold ubyte
15
startTime long: millis
93887421833
initialTenuringThreshold ubyte
7
maxTenuringThreshold ubyte
15
startTime long: millis
30690532708

GCTLABConfiguration

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Java Virtual Machine / GC / Configuration

The configuration of the Thread Local Allocation Buffers (TLABs)

Code Context

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

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

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

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

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

Configuration enabled period
default true beginChunk
profiling true beginChunk

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

Examples 3
minTLABSize ulong: bytes
2048
startTime long: millis
39413198375
tlabRefillWasteLimit ulong: bytes
64
usesTLABs boolean
true
minTLABSize ulong: bytes
2048
startTime long: millis
96932669625
tlabRefillWasteLimit ulong: bytes
64
usesTLABs boolean
true
minTLABSize ulong: bytes
2048
startTime long: millis
881475921417
tlabRefillWasteLimit ulong: bytes
64
usesTLABs boolean
true

GCHeapConfiguration

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Java Virtual Machine / GC / Configuration

The configuration of the garbage collected heap

Code Context

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

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

  event.commit();
}

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

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

TRACE_REQUEST_FUNC(YoungGenerationConfiguration) {

Configuration enabled period
default true beginChunk
profiling true beginChunk

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

Examples 3
compressedOopsMode NarrowOopMode
Zero based
heapAddressBits ubyte
32
initialSize ulong: bytes
268435456
maxSize ulong: bytes
4294967296
minSize ulong: bytes
8388608
objectAlignment ulong: bytes
8
startTime long: millis
904194562458
usesCompressedOops boolean
true
compressedOopsMode NarrowOopMode
Zero based
heapAddressBits ubyte
32
initialSize ulong: bytes
268435456
maxSize ulong: bytes
4294967296
minSize ulong: bytes
8388608
objectAlignment ulong: bytes
8
startTime long: millis
79064866750
usesCompressedOops boolean
true
compressedOopsMode NarrowOopMode
Zero based
heapAddressBits ubyte
32
initialSize ulong: bytes
268435456
maxSize ulong: bytes
4294967296
minSize ulong: bytes
8388608
objectAlignment ulong: bytes
8
startTime long: millis
96932670292
usesCompressedOops boolean
true

YoungGenerationConfiguration

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Java Virtual Machine / GC / Configuration

The configuration of the young generation of the garbage collected heap

Code Context

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

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

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

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

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

Configuration enabled period
default true beginChunk
profiling true beginChunk

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

Examples 3
maxSize ulong: bytes
1431633920
minSize ulong: bytes
89456640
newRatio uint
2
startTime long: millis
84639718000
maxSize ulong: bytes
1431306240
minSize ulong: bytes
89128960
newRatio uint
2
startTime long: millis
93887425708
maxSize ulong: bytes
2575302656
minSize ulong: bytes
1363144
newRatio uint
2
startTime long: millis
918161596458

JVM: GC: Detailed

G1MMU

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

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

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

Configuration enabled
default true
profiling true

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

Examples 1
gcId uint
888
gcTime long: millis
51
pauseTarget long: millis
200
startTime long: millis
833719202875
timeSlice long: millis
201

EvacuationInformation

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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();

Configuration enabled
default true
profiling true

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

Examples 1
allocationRegions uint
2
allocationRegionsUsedAfter ulong: bytes
2646912
allocationRegionsUsedBefore ulong: bytes
0
bytesCopied ulong: bytes
2646912
cSetRegions uint
224
cSetUsedAfter ulong: bytes
0
cSetUsedBefore ulong: bytes
468697112
gcId uint
916
regionsFreed uint
224
startTime long: millis
854446081167

ObjectCountAfterGC

startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: G1GC, ParallelGC, SerialGC

Missing in: ShenandoahGC, ZGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

#if INCLUDE_SERVICES

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

bool ObjectCountEventSender::_should_send_requestable_event = false;

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

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

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

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

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

#endif // INCLUDE_SERVICES

Configuration enabled
default false
profiling false

Field Type Description
gcId uint GC Identifier
objectClass Class Object Class Consider contributing a description to jfreventcollector.
count long Count
totalSize ulong: bytes Total Size

Examples 3
count long
1207335
gcId uint
37
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
[B
package Package
null
startTime long: millis
3927158333
totalSize ulong: bytes
42987760
count long
292086
gcId uint
22
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
name string
java/util/HashMap$Node
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util
startTime long: millis
9266401125
totalSize ulong: bytes
9346752
count long
24172
gcId uint
870
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[I
package Package
null
startTime long: millis
798761396708
totalSize ulong: bytes
38327864

G1EvacuationYoungStatistics

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

Memory related evacuation statistics during GC for the young generation

Code Context

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

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

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

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

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

Configuration enabled
default true
profiling true

Field Type Description
statistics G1EvacuationStatistics struct Evacuation Statistics

Examples 1
startTime long: millis
792226049708
statistics G1EvacuationStatistics
allocated ulong: bytes
513936
directAllocated ulong: bytes
74832
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
865
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
469784
wasted ulong: bytes
2760

G1EvacuationOldStatistics

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

Memory related evacuation statistics during GC for the old generation

Code Context

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

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

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

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

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

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

Configuration enabled
default true
profiling true

Field Type Description
statistics G1EvacuationStatistics struct Evacuation Statistics

Examples 1
startTime long: millis
874983597583
statistics G1EvacuationStatistics
allocated ulong: bytes
0
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
937
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
0
wasted ulong: bytes
0

G1BasicIHOP

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

Basic statistics related to current IHOP calculation

Code Context

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

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

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

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

Configuration enabled
default true
profiling true

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

Examples 1
currentOccupancy ulong: bytes
288770344
gcId uint
877
lastMarkingDuration long: millis
3252
recentAllocationRate double: bytes-per-second
1.228512043493862E8
recentMutatorAllocationSize ulong: bytes
2097152
recentMutatorDuration long: millis
17
startTime long: millis
808698624042
targetOccupancy ulong: bytes
2199912448
threshold ulong: bytes
138308982
thresholdPercentage float: percentage
0.06287022

G1AdaptiveIHOP

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

Statistics related to current adaptive IHOP calculation

Code Context

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

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

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

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

Configuration enabled
default true
profiling true

Field Type Description
gcId uint GC Identifier
threshold ulong: bytes Threshold Current IHOP Threshold
thresholdPercentage float: percentage Threshold Current IHOP threshold in percent of the internal target occupancy
ihopTargetOccupancy ulong: bytes IHOP Target Occupancy Internal target old generation occupancy to reach at the start of mixed GC
currentOccupancy ulong: bytes Current Occupancy Current old generation occupancy
additionalBufferSize ulong: bytes Additional Buffer Additional buffer size
predictedAllocationRate double: bytes-per-second 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 1
additionalBufferSize ulong: bytes
694157312
currentOccupancy ulong: bytes
578102416
gcId uint
936
ihopTargetOccupancy ulong: bytes
1235222528
predictedAllocationRate double: bytes-per-second
1.638371548822393E8
predictedMarkingDuration long: millis
3626
predictionActive boolean
true
startTime long: millis
874612323458
threshold ulong: bytes
0
thresholdPercentage float: percentage
0.0

PromoteObjectInNewPLAB

profiling startTime eventThread 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: G1GC, ParallelGC

Missing in: SerialGC, ShenandoahGC, ZGC

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

Code Context

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

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

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

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

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

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

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

Configuration enabled
default false
profiling true

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 2
gcId uint
5
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
[B
package Package
null
objectSize ulong: bytes
24
plabSize ulong: bytes
8176
startTime long: millis
1164776667
tenured boolean
true
tenuringAge uint
1
gcId uint
865
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[F
package Package
null
objectSize ulong: bytes
56
plabSize ulong: bytes
4128
startTime long: millis
792215817792
tenured boolean
false
tenuringAge uint
0

PromoteObjectOutsidePLAB

profiling startTime eventThread 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: G1GC, ParallelGC

Missing in: SerialGC, ShenandoahGC, ZGC

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

Code Context

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

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

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

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

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

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

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

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

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

void OldGCTracer::send_old_gc_event() const {

Configuration enabled
default false
profiling true

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 2
gcId uint
908
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
22
name string
java/util
objectSize ulong: bytes
131088
startTime long: millis
847953369083
tenured boolean
false
tenuringAge uint
1
gcId uint
0
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
[B
package Package
null
objectSize ulong: bytes
37384
startTime long: millis
425906250
tenured boolean
false
tenuringAge uint
0

PromotionFailed

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Promotion of an object failed

Code Context

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

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

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

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

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

Configuration enabled
default true
profiling true

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

EvacuationFailed

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Evacuation of an object failed

Code Context

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

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

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

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

Configuration enabled
default true
profiling true

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

ConcurrentModeFailure

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

Concurrent Mode failed

Code Context

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

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

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

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

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

Configuration enabled
default true
profiling true

Field Type Description
gcId uint GC Identifier

Examples 1
gcId uint
885
startTime long: millis
833402284417

AllocationRequiringGC

startTime eventThread stackTrace 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: G1GC, ParallelGC, SerialGC

Missing in: ShenandoahGC, ZGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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();
  }
}

Configuration enabled stackTrace
default false true
profiling false true

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

Examples 3
gcId uint
976
size ulong: bytes
1048576
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
12
lineNumber int
500
method Method
descriptor string
(Ljava/lang/Object;)Ljava/lang/Object;
hidden boolean
false
modifiers int
8
name string
allocateInstance
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
java/lang/invoke/DirectMethodHandle
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/lang/invoke
type FrameType
Inlined
truncated boolean
true
startTime long: millis
899790527125
gcId uint
82
size ulong: bytes
24
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
177
method Method
descriptor string
(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
hidden boolean
false
modifiers int
0
name string
opWrapSink
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
name string
java/util/stream/IntPipeline$1
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util/stream
type FrameType
JIT compiled
truncated boolean
true
startTime long: millis
61209384500
gcId uint
33
size ulong: bytes
48
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
()Ljava/lang/Object;
hidden boolean
true
modifiers int
1
name string
get
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
true
modifiers int
4144
name string
java.util.stream.Collectors$$Lambda+0x00000008002526b0/1922260655
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util/stream
type FrameType
Inlined
truncated boolean
false
startTime long: millis
1997656875

TenuringDistribution

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: G1GC, SerialGC

Missing in: ParallelGC, ShenandoahGC, ZGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

Configuration enabled
default true
profiling true

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

Examples 2
age uint
14
gcId uint
870
size ulong: bytes
0
startTime long: millis
798808814167
age uint
3
gcId uint
4
size ulong: bytes
0
startTime long: millis
1155137833

G1HeapRegionTypeChange

startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

Information about a G1 heap region type change

Code Context

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

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

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

Configuration enabled
default false
profiling false

Field Type Description
index uint Index
from G1HeapRegionType From Consider contributing a description to jfreventcollector.
to G1HeapRegionType To Consider contributing a description to jfreventcollector.
start ulong: address Start
used ulong: bytes Used

Examples 1
from G1HeapRegionType
Free
index uint
149
start ulong: address
30377246720
startTime long: millis
791919065875
to G1HeapRegionType
Free
used ulong: bytes
0

ObjectCount

startTime every chunk 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: G1GC, ParallelGC, SerialGC

Missing in: ShenandoahGC, ZGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

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

#endif // INCLUDE_SERVICES

Configuration enabled period
default false everyChunk
profiling false everyChunk

Field Type Description
gcId uint GC Identifier
objectClass Class Object Class Consider contributing a description to jfreventcollector.
count long Count
totalSize ulong: bytes Total Size

Examples 3
count long
119027
gcId uint
866
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[Ljava/lang/Object;
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/lang
startTime long: millis
792378118375
totalSize ulong: bytes
9966384
count long
1691
gcId uint
16
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
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
21.0.1
name string
java/util
startTime long: millis
4573757000
totalSize ulong: bytes
2292568
count long
1657
gcId uint
1
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
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
21.0.1
name string
java/util
startTime long: millis
865943958
totalSize ulong: bytes
186904

G1HeapRegionInformation

startTime duration every chunk 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

Information about a specific heap region in the G1 GC

Code Context

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

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

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

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

Configuration enabled period
default false everyChunk
profiling false everyChunk

Field Type Description
index uint Index
type G1HeapRegionType Type Consider contributing a description to jfreventcollector.
start ulong: address Start
used ulong: bytes Used

Examples 1
index uint
11
start ulong: address
30087839744
startTime long: millis
791928935333
type G1HeapRegionType
Old
used ulong: bytes
2096488

ZAllocationStall

default profiling startTime duration eventThread 15 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: ZGC

Missing in: G1GC, ParallelGC, SerialGC, ShenandoahGC

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

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
type ZPageTypeType Type Consider contributing a description to jfreventcollector.
size ulong: bytes Size

Examples 1
size ulong: bytes
2097152
startTime long: millis
17786533375
type ZPageTypeType
Small

ZPageAllocation

default profiling startTime duration eventThread stackTrace 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: ZGC

Missing in: G1GC, ParallelGC, SerialGC, ShenandoahGC

Allocation of a ZPage

Code Context

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

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

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

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

  // Try satisfy stalled allocations
  satisfy_stalled();
}

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

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

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

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

Field Type Description
type ZPageTypeType 15+ Type Consider contributing a description to jfreventcollector.
size ulong: bytes 15+ Size
flushed ulong: bytes 15+ Flushed
committed ulong: bytes 15+ Committed
segments uint 15+ Segments
nonBlocking boolean Non-blocking
noReserve boolean 11 until JDK 16 No Reserve

Examples 1
committed ulong: bytes
0
flushed ulong: bytes
0
nonBlocking boolean
false
segments uint
1
size ulong: bytes
2097152
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
5
lineNumber int
153
method Method
descriptor string
(Ljava/lang/Object;)V
hidden boolean
false
modifiers int
0
name string
linkLast
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
name string
java/util/LinkedList
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util
type FrameType
Inlined
truncated boolean
false
startTime long: millis
15127451916
type ZPageTypeType
Small

ZRelocationSet

default profiling startTime duration eventThread 15 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: ZGC

Missing in: G1GC, ParallelGC, SerialGC, ShenandoahGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

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 1
empty ulong: bytes
1207959552
startTime long: millis
37440802250
total ulong: bytes
1507852288

ZRelocationSetGroup

default profiling startTime duration eventThread 15 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: ZGC

Missing in: G1GC, ParallelGC, SerialGC, ShenandoahGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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() :

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
type ZPageTypeType Type Consider contributing a description to jfreventcollector.
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 1
empty ulong: bytes
0
startTime long: millis
40036978708
total ulong: bytes
20971520
type ZPageTypeType
Large

ZStatisticsCounter

experimental startTime duration eventThread 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: ZGC

Missing in: G1GC, ParallelGC, SerialGC, ShenandoahGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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.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) {

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;

Configuration enabled threshold
default false 0 ms
profiling false 0 ms

Field Type Description
id ZStatisticsCounterType Id Consider contributing a description to jfreventcollector.
increment ulong Increment
value ulong Value

Examples 1
id ZStatisticsCounterType
Allocation Rate
increment ulong
2097152
startTime long: millis
468088541
value ulong
69206016

ZStatisticsSampler

experimental startTime duration eventThread 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: ZGC

Missing in: G1GC, ParallelGC, SerialGC, ShenandoahGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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.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) :

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

Configuration enabled threshold
default false 0 ms
profiling false 0 ms

Field Type Description
id ZStatisticsSamplerType Id Consider contributing a description to jfreventcollector.
value ulong Value

Examples 1
id ZStatisticsSamplerType
GC Locker Stall
startTime long: millis
1030583166
value ulong
0

ZThreadPhase

experimental startTime duration eventThread 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: ZGC

Missing in: G1GC, ParallelGC, SerialGC, ShenandoahGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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.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());
}

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

Configuration enabled threshold
default false 0 ms
profiling false 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 1
gcId uint
3
name string
Concurrent Mark
startTime long: millis
1171055333

ZUncommit

default profiling startTime duration eventThread 15 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Uncommitting of memory

Code Context

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

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

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

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

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

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

      uncommitted += flushed;

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
uncommitted ulong: bytes Uncommitted

ZUnmap

default profiling startTime duration eventThread 15 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: ZGC

Missing in: G1GC, ParallelGC, SerialGC, ShenandoahGC

Unmapping of memory

Code Context

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

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

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

    _lock.wait();
  }
}

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

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

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

void ZUnmapper::unmap_and_destroy_page(ZPage* page) {

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
unmapped ulong: bytes Unmapped

Examples 1
startTime long: millis
31769248125
unmapped ulong: bytes
2097152

ShenandoahHeapRegionStateChange

startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: ShenandoahGC

Missing in: G1GC, ParallelGC, SerialGC, ZGC

Information about a Shenandoah heap region state change

Code Context

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

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

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

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

Configuration enabled
default false
profiling false

Field Type Description
index uint Index
from ShenandoahHeapRegionState From Consider contributing a description to jfreventcollector.
to ShenandoahHeapRegionState To Consider contributing a description to jfreventcollector.
start ulong: address Start
used ulong: bytes Used

Examples 1
from ShenandoahHeapRegionState
Regular
index uint
3
start ulong: address
30071062528
startTime long: millis
805901125
to ShenandoahHeapRegionState
Collection Set
used ulong: bytes
2097152

ShenandoahHeapRegionInformation

startTime duration every chunk 11 17 21 23 24

Category: Java Virtual Machine / GC / Detailed

Appearing in: ShenandoahGC

Missing in: G1GC, ParallelGC, SerialGC, ZGC

Information about a specific heap region in the Shenandoah GC

Code Context

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

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

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

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

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

Configuration enabled period
default false everyChunk
profiling false everyChunk

Field Type Description
index uint Index
state ShenandoahHeapRegionState State Consider contributing a description to jfreventcollector.
start ulong: address Start
used ulong: bytes Used

Examples 1
index uint
27
start ulong: address
30121394176
startTime long: millis
363234292
state ShenandoahHeapRegionState
Empty Committed
used ulong: bytes
0

JVM: GC: Heap

GCHeapSummary

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Heap

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

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

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

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

Configuration enabled
default true
profiling true

Field Type Description
gcId uint GC Identifier
when GCWhen When Consider contributing a description to jfreventcollector.
heapSpace VirtualSpace struct Heap Space Consider contributing a description to jfreventcollector.
heapUsed ulong: bytes Heap Used Bytes allocated by objects in the heap

Examples 3
gcId uint
908
heapSpace VirtualSpace
committedEnd ulong: address
32250003456
committedSize ulong: bytes
2185232384
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4294967296
start ulong: address
30064771072
heapUsed ulong: bytes
1529829888
startTime long: millis
847943268042
when GCWhen
Before GC
gcId uint
2
heapSpace VirtualSpace
committedEnd ulong: address
30324359168
committedSize ulong: bytes
259588096
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4294967296
start ulong: address
30064771072
heapUsed ulong: bytes
24524832
startTime long: millis
1015476542
when GCWhen
After GC
gcId uint
32
heapSpace VirtualSpace
committedEnd ulong: address
31643926528
committedSize ulong: bytes
1579155456
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4294967296
start ulong: address
30064771072
heapUsed ulong: bytes
385298072
startTime long: millis
19724654458
when GCWhen
After GC

MetaspaceSummary

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Heap

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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();
  }
}

Configuration enabled
default true
profiling true

Field Type Description
gcId uint GC Identifier
when GCWhen When Consider contributing a description to jfreventcollector.
gcThreshold ulong: bytes GC Threshold
metaspace MetaspaceSizes struct Total Consider contributing a description to jfreventcollector.
dataSpace MetaspaceSizes struct Data Consider contributing a description to jfreventcollector.
classSpace MetaspaceSizes struct Class Consider contributing a description to jfreventcollector.

Examples 3
classSpace MetaspaceSizes
committed ulong: bytes
2359296
reserved ulong: bytes
1073741824
used ulong: bytes
2291744
dataSpace MetaspaceSizes
committed ulong: bytes
19660800
reserved ulong: bytes
67108864
used ulong: bytes
19568280
gcId uint
3
gcThreshold ulong: bytes
22020096
metaspace MetaspaceSizes
committed ulong: bytes
22020096
reserved ulong: bytes
1140850688
used ulong: bytes
21860024
startTime long: millis
970106000
when GCWhen
Before GC
classSpace MetaspaceSizes
committed ulong: bytes
87556096
reserved ulong: bytes
1073741824
used ulong: bytes
86041024
dataSpace MetaspaceSizes
committed ulong: bytes
553254912
reserved ulong: bytes
603979776
used ulong: bytes
551538296
gcId uint
898
gcThreshold ulong: bytes
1068040192
metaspace MetaspaceSizes
committed ulong: bytes
640811008
reserved ulong: bytes
1677721600
used ulong: bytes
637579320
startTime long: millis
842437782125
when GCWhen
After GC
classSpace MetaspaceSizes
committed ulong: bytes
2621440
reserved ulong: bytes
1073741824
used ulong: bytes
2506856
dataSpace MetaspaceSizes
committed ulong: bytes
21102592
reserved ulong: bytes
67108864
used ulong: bytes
20963272
gcId uint
19
gcThreshold ulong: bytes
38338560
metaspace MetaspaceSizes
committed ulong: bytes
23724032
reserved ulong: bytes
1140850688
used ulong: bytes
23470128
startTime long: millis
1820945583
when GCWhen
Before GC

PSHeapSummary

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Heap

Appearing in: ParallelGC

Missing in: G1GC, SerialGC, ShenandoahGC, ZGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

  void visit(const PSHeapSummary* ps_heap_summary) const {
    visit((GCHeapSummary*)ps_heap_summary);

    const VirtualSpaceSummary& old_summary = ps_heap_summary->old();
    const SpaceSummary& old_space = ps_heap_summary->old_space();
    const VirtualSpaceSummary& young_summary = ps_heap_summary->young();
    const SpaceSummary& eden_space = ps_heap_summary->eden();
    const SpaceSummary& from_space = ps_heap_summary->from();
    const SpaceSummary& to_space = ps_heap_summary->to();

    EventPSHeapSummary e;
    if (e.should_commit()) {
      e.set_gcId(GCId::current());
      e.set_when((u1)_when);

      e.set_oldSpace(to_struct(ps_heap_summary->old()));
      e.set_oldObjectSpace(to_struct(ps_heap_summary->old_space()));
      e.set_youngSpace(to_struct(ps_heap_summary->young()));
      e.set_edenSpace(to_struct(ps_heap_summary->eden()));
      e.set_fromSpace(to_struct(ps_heap_summary->from()));
      e.set_toSpace(to_struct(ps_heap_summary->to()));
      e.commit();

Configuration enabled
default true
profiling true

Field Type Description
gcId uint GC Identifier
when GCWhen When Consider contributing a description to jfreventcollector.
oldSpace VirtualSpace struct Old Space Consider contributing a description to jfreventcollector.
oldObjectSpace ObjectSpace struct Old Object Space Consider contributing a description to jfreventcollector.
youngSpace VirtualSpace struct Young Space Consider contributing a description to jfreventcollector.
edenSpace ObjectSpace struct Eden Space Consider contributing a description to jfreventcollector.
fromSpace ObjectSpace struct From Space Consider contributing a description to jfreventcollector.
toSpace ObjectSpace struct To Space Consider contributing a description to jfreventcollector.

Examples 1
edenSpace ObjectSpace
end ulong: address
32995540992
size ulong: bytes
67108864
start ulong: address
32928432128
used ulong: bytes
0
fromSpace ObjectSpace
end ulong: address
33017561088
size ulong: bytes
11010048
start ulong: address
33006551040
used ulong: bytes
3843952
gcId uint
2
oldObjectSpace ObjectSpace
end ulong: address
30244077568
size ulong: bytes
179306496
start ulong: address
30064771072
used ulong: bytes
2707584
oldSpace VirtualSpace
committedEnd ulong: address
30244077568
committedSize ulong: bytes
179306496
reservedEnd ulong: address
32928432128
reservedSize ulong: bytes
2863661056
start ulong: address
30064771072
startTime long: millis
970096458
toSpace ObjectSpace
end ulong: address
33006551040
size ulong: bytes
11010048
start ulong: address
32995540992
used ulong: bytes
0
when GCWhen
After GC
youngSpace VirtualSpace
committedEnd ulong: address
33017561088
committedSize ulong: bytes
89128960
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
1431306240
start ulong: address
32928432128

G1HeapSummary

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Heap

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

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

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

    EventG1HeapSummary e;
    if (e.should_commit()) {
      e.set_gcId(GCId::current());
      e.set_when((u1)_when);
      e.set_edenUsedSize(g1_heap_summary->edenUsed());
      e.set_edenTotalSize(g1_heap_summary->edenCapacity());
      e.set_survivorUsedSize(g1_heap_summary->survivorUsed());
      e.set_numberOfRegions(g1_heap_summary->numberOfRegions());
      e.commit();
    }
  }

Configuration enabled
default true
profiling true

Field Type Description
gcId uint GC Identifier
when GCWhen When Consider contributing a description to jfreventcollector.
edenUsedSize ulong: bytes Eden Used Size
edenTotalSize ulong: bytes Eden Total Size
survivorUsedSize ulong: bytes Survivor Used Size
numberOfRegions uint Number of Regions

Examples 1
edenTotalSize ulong: bytes
503316480
edenUsedSize ulong: bytes
29360128
gcId uint
913
numberOfRegions uint
400
startTime long: millis
852435474917
survivorUsedSize ulong: bytes
0
when GCWhen
Before GC

JVM: GC: Metaspace

MetaspaceGCThreshold

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Metaspace

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

src/hotspot/share/memory/metaspaceTracer.cpp:

void MetaspaceTracer::report_gc_threshold(size_t old_val,
                                          size_t new_val,
                                          MetaspaceGCThresholdUpdater::Type updater) const {
  EventMetaspaceGCThreshold event;
  if (event.should_commit()) {
    event.set_oldValue(old_val);
    event.set_newValue(new_val);
    event.set_updater((u1)updater);
    event.commit();
  }
}

void MetaspaceTracer::report_metaspace_allocation_failure(ClassLoaderData *cld,
                                                          size_t word_size,
                                                          MetaspaceObj::Type objtype,
                                                          Metaspace::MetadataType mdtype) const {
  send_allocation_failure_event<EventMetaspaceAllocationFailure>(cld, word_size, objtype, mdtype);
}

Configuration enabled
default true
profiling true

Field Type Description
oldValue ulong: bytes Old Value
newValue ulong: bytes New Value
updater GCThresholdUpdater Updater Consider contributing a description to jfreventcollector.

Examples 3
newValue ulong: bytes
138608640
oldValue ulong: bytes
126287872
startTime long: millis
51808362458
updater GCThresholdUpdater
compute_new_size
newValue ulong: bytes
143196160
oldValue ulong: bytes
142802944
startTime long: millis
56772787583
updater GCThresholdUpdater
compute_new_size
newValue ulong: bytes
1509228544
oldValue ulong: bytes
1499594752
startTime long: millis
917935010750
updater GCThresholdUpdater
compute_new_size

MetaspaceAllocationFailure

default profiling startTime stackTrace 11 17 21 23 24

Category: Java Virtual Machine / GC / Metaspace

Appearing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

Missing in: G1GC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

src/hotspot/share/memory/metaspaceTracer.cpp:

  EventMetaspaceGCThreshold event;
  if (event.should_commit()) {
    event.set_oldValue(old_val);
    event.set_newValue(new_val);
    event.set_updater((u1)updater);
    event.commit();
  }
}

void MetaspaceTracer::report_metaspace_allocation_failure(ClassLoaderData *cld,
                                                          size_t word_size,
                                                          MetaspaceObj::Type objtype,
                                                          Metaspace::MetadataType mdtype) const {
  send_allocation_failure_event<EventMetaspaceAllocationFailure>(cld, word_size, objtype, mdtype);
}

void MetaspaceTracer::report_metadata_oom(ClassLoaderData *cld,
                                         size_t word_size,
                                         MetaspaceObj::Type objtype,
                                         Metaspace::MetadataType mdtype) const {
  send_allocation_failure_event<EventMetaspaceOOM>(cld, word_size, objtype, mdtype);
}

template <typename E>
void MetaspaceTracer::send_allocation_failure_event(ClassLoaderData *cld,

Configuration enabled stackTrace
default true true
profiling true true

Field Type Description
classLoader ClassLoader Class Loader Consider contributing a description to jfreventcollector.
hiddenClassLoader boolean 15+ Hidden Class Loader
size ulong: bytes Size
metadataType MetadataType Metadata Type Consider contributing a description to jfreventcollector.
metaspaceObjectType MetaspaceObjectType Metaspace Object Type Consider contributing a description to jfreventcollector.

Examples 3
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
hiddenClassLoader boolean
false
metadataType MetadataType
Metadata
metaspaceObjectType MetaspaceObjectType
Method
size ulong: bytes
88
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
1057
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
21.0.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
858453667
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
hiddenClassLoader boolean
false
metadataType MetadataType
Metadata
metaspaceObjectType MetaspaceObjectType
ConstMethod
size ulong: bytes
104
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
1057
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
21.0.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
817189417
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
hiddenClassLoader boolean
false
metadataType MetadataType
Metadata
metaspaceObjectType MetaspaceObjectType
ConstantPool
size ulong: bytes
2440
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
1057
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
21.0.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
967526042

MetaspaceOOM

default profiling startTime stackTrace 11 17 21 23 24

Category: Java Virtual Machine / GC / Metaspace

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

src/hotspot/share/memory/metaspaceTracer.cpp:

void MetaspaceTracer::report_metaspace_allocation_failure(ClassLoaderData *cld,
                                                          size_t word_size,
                                                          MetaspaceObj::Type objtype,
                                                          Metaspace::MetadataType mdtype) const {
  send_allocation_failure_event<EventMetaspaceAllocationFailure>(cld, word_size, objtype, mdtype);
}

void MetaspaceTracer::report_metadata_oom(ClassLoaderData *cld,
                                         size_t word_size,
                                         MetaspaceObj::Type objtype,
                                         Metaspace::MetadataType mdtype) const {
  send_allocation_failure_event<EventMetaspaceOOM>(cld, word_size, objtype, mdtype);
}

template <typename E>
void MetaspaceTracer::send_allocation_failure_event(ClassLoaderData *cld,
                                                    size_t word_size,
                                                    MetaspaceObj::Type objtype,
                                                    Metaspace::MetadataType mdtype) const {
  E event;
  if (event.should_commit()) {
    event.set_classLoader(cld);
    event.set_hiddenClassLoader(cld->has_class_mirror_holder());

Configuration enabled stackTrace
default true true
profiling true true

Field Type Description
classLoader ClassLoader Class Loader Consider contributing a description to jfreventcollector.
hiddenClassLoader boolean 15+ Hidden Class Loader
size ulong: bytes Size
metadataType MetadataType Metadata Type Consider contributing a description to jfreventcollector.
metaspaceObjectType MetaspaceObjectType Metaspace Object Type Consider contributing a description to jfreventcollector.

MetaspaceChunkFreeListSummary

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Metaspace

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

void GCTracer::send_reference_stats_event(ReferenceType type, size_t count) const {
  EventGCReferenceStatistics e;
  if (e.should_commit()) {
      e.set_gcId(GCId::current());
      e.set_type((u1)type);
      e.set_count(count);
      e.commit();
  }
}

void GCTracer::send_metaspace_chunk_free_list_summary(GCWhen::Type when, Metaspace::MetadataType mdtype,
                                                      const MetaspaceChunkFreeListSummary& summary) const {
  EventMetaspaceChunkFreeListSummary e;
  if (e.should_commit()) {
    e.set_gcId(GCId::current());
    e.set_when(when);
    e.set_metadataType(mdtype);

    e.set_specializedChunks(summary.num_specialized_chunks());
    e.set_specializedChunksTotalSize(summary.specialized_chunks_size_in_bytes());

    e.set_smallChunks(summary.num_small_chunks());
    e.set_smallChunksTotalSize(summary.small_chunks_size_in_bytes());

Configuration enabled
default true
profiling true

Field Type Description
gcId uint GC Identifier
when GCWhen When Consider contributing a description to jfreventcollector.
metadataType MetadataType Metadata Type Consider contributing a description to jfreventcollector.
specializedChunks ulong Specialized Chunks
specializedChunksTotalSize ulong: bytes Specialized Chunks Total Size
smallChunks ulong Small Chunks
smallChunksTotalSize ulong: bytes Small Chunks Total Size
mediumChunks ulong Medium Chunks
mediumChunksTotalSize ulong: bytes Medium Chunks Total Size
humongousChunks ulong Humongous Chunks
humongousChunksTotalSize ulong: bytes Humongous Chunks Total Size

Examples 3
gcId uint
1
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
436368083
when GCWhen
After GC
gcId uint
870
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
798808833042
when GCWhen
After GC
gcId uint
33
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
1997781417
when GCWhen
Before GC

JVM: GC: Phases

GCPhasePause

default profiling startTime duration eventThread 11 17 21 23 24

Category: Java Virtual Machine / GC / Phases

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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");

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
gcId uint
866
name string
Pause Remark
startTime long: millis
792343043833
gcId uint
78
name string
GC Pause
startTime long: millis
11825594500
gcId uint
26
name string
GC Pause
startTime long: millis
16764354208

GCPhasePauseLevel1

default profiling startTime duration eventThread 11 17 21 23 24

Category: Java Virtual Machine / GC / Phases

Appearing in: G1GC, ParallelGC, SerialGC, ShenandoahGC

Missing in: ZGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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()) {

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
gcId uint
3
name string
Compaction Phase
startTime long: millis
978534250
gcId uint
867
name string
Phase 5: Reset Metadata
startTime long: millis
795878875833
gcId uint
23
name string
Notify and keep alive finalizable
startTime long: millis
1877316708

GCPhasePauseLevel2

default profiling startTime duration eventThread 11 17 21 23 24

Category: Java Virtual Machine / GC / Phases

Appearing in: G1GC, ParallelGC, SerialGC

Missing in: ShenandoahGC, ZGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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;

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
gcId uint
874
name string
Report Object Count
startTime long: millis
805815452583
gcId uint
146
name string
Reference Processing
startTime long: millis
28649653458
gcId uint
16
name string
Report Object Count
startTime long: millis
4564341292

GCPhasePauseLevel3

startTime duration eventThread 11 17 21 23 24

Category: Java Virtual Machine / GC / Phases

Appearing in: G1GC, ParallelGC, SerialGC

Missing in: ShenandoahGC, ZGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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;

Configuration enabled threshold
default false 0 ms
profiling false 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
gcId uint
138
name string
Notify Soft/WeakReferences
startTime long: millis
26601859625
gcId uint
864
name string
G1 Complete Cleaning
startTime long: millis
791843312083
gcId uint
54
name string
Notify PhantomReferences
startTime long: millis
30545664375

GCPhasePauseLevel4

startTime duration eventThread 11 17 21 23 24

Category: Java Virtual Machine / GC / Phases

Appearing in: G1GC, ParallelGC

Missing in: SerialGC, ShenandoahGC, ZGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

    e.commit();
  }
}

class PhaseSender : public PhaseVisitor {
  void visit_pause(GCPhase* phase) {
    assert(phase->level() < PhasesStack::PHASE_LEVELS, "Need more event types for PausePhase");

    switch (phase->level()) {
      case 0: send_phase<EventGCPhasePause>(phase); break;
      case 1: send_phase<EventGCPhasePauseLevel1>(phase); break;
      case 2: send_phase<EventGCPhasePauseLevel2>(phase); break;
      case 3: send_phase<EventGCPhasePauseLevel3>(phase); break;
      case 4: send_phase<EventGCPhasePauseLevel4>(phase); break;
      default: /* Ignore sending this phase */ break;
    }
  }

  void visit_concurrent(GCPhase* phase) {
    assert(phase->level() < 2, "There is only two levels for ConcurrentPhase");

    switch (phase->level()) {
      case 0: send_phase<EventGCPhaseConcurrent>(phase); break;
      case 1: send_phase<EventGCPhaseConcurrentLevel1>(phase); break;
      default: /* Ignore sending this phase */ break;

Configuration enabled threshold
default false 0 ms
profiling false 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 2
gcId uint
897
name string
Balance queues
startTime long: millis
841456063500
gcId uint
119
name string
Balance queues
startTime long: millis
93634335583

GCPhaseConcurrent

default profiling startTime duration eventThread 11 17 21 23 24

Category: Java Virtual Machine / GC / Phases

Appearing in: G1GC, ShenandoahGC, ZGC

Missing in: ParallelGC, SerialGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

src/hotspot/share/gc/shenandoah/shenandoahUtils.hpp:

  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:

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

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
gcId uint
2
name string
Concurrent Marking
startTime long: millis
2389656542
gcId uint
931
name string
Concurrent Cleanup for Next Mark
startTime long: millis
872911657875
gcId uint
7
name string
Concurrent Process Non-Strong References
startTime long: millis
3064054458

GCPhaseConcurrentLevel1

default profiling startTime duration eventThread 15 17 21 23 24

Category: Java Virtual Machine / GC / Phases

Appearing in: G1GC, ShenandoahGC, ZGC

Missing in: ParallelGC, SerialGC

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

      case 1: send_phase<EventGCPhasePauseLevel1>(phase); break;
      case 2: send_phase<EventGCPhasePauseLevel2>(phase); break;
      case 3: send_phase<EventGCPhasePauseLevel3>(phase); break;
      case 4: send_phase<EventGCPhasePauseLevel4>(phase); break;
      default: /* Ignore sending this phase */ break;
    }
  }

  void visit_concurrent(GCPhase* phase) {
    assert(phase->level() < 2, "There is only two levels for ConcurrentPhase");

    switch (phase->level()) {
      case 0: send_phase<EventGCPhaseConcurrent>(phase); break;
      case 1: send_phase<EventGCPhaseConcurrentLevel1>(phase); break;
      default: /* Ignore sending this phase */ break;
    }
  }

 public:
  template<typename T>
  void send_phase(GCPhase* phase) {
    T event(UNTIMED);
    if (event.should_commit()) {
      event.set_gcId(GCId::current());
      event.set_name(phase->name());

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 3
gcId uint
47
name string
ClassLoaderData
startTime long: millis
67577520000
gcId uint
1
name string
Trigger cleanups
startTime long: millis
751987791
gcId uint
896
name string
Preclean WeakReferences
startTime long: millis
840000448542

GCPhaseParallel

default profiling startTime duration eventThread 12 17 21 23 24

Category: Java Virtual Machine / GC / Phases

Appearing in: G1GC, ShenandoahGC

Missing in: ParallelGC, SerialGC, ZGC

GC phases for parallel workers

Code Context

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

src/hotspot/share/gc/shenandoah/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) {

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

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
gcId uint GC Identifier
gcWorkerId uint GC Worker Identifier
name string Name

Examples 2
gcId uint
865
gcWorkerId uint
3
name string
JNI Global
startTime long: millis
792216245667
gcId uint
4
gcWorkerId uint
2
name string
Finish Mark
startTime long: millis
5862278125

JVM: GC: Reference

GCReferenceStatistics

default profiling startTime 11 17 21 23 24

Category: Java Virtual Machine / GC / Reference

Total count of processed references during GC

Code Context

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

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

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

void GCTracer::send_reference_stats_event(ReferenceType type, size_t count) const {
  EventGCReferenceStatistics e;
  if (e.should_commit()) {
      e.set_gcId(GCId::current());
      e.set_type((u1)type);
      e.set_count(count);
      e.commit();
  }
}

void GCTracer::send_metaspace_chunk_free_list_summary(GCWhen::Type when, Metaspace::MetadataType mdtype,
                                                      const MetaspaceChunkFreeListSummary& summary) const {
  EventMetaspaceChunkFreeListSummary e;

Configuration enabled
default true
profiling true

Field Type Description
gcId uint GC Identifier
type ReferenceType Type Consider contributing a description to jfreventcollector.
count ulong Total Count

Examples 3
count ulong
0
gcId uint
889
startTime long: millis
837020588333
type ReferenceType
Soft reference
count ulong
11
gcId uint
4
startTime long: millis
1119187625
type ReferenceType
Weak reference
count ulong
0
gcId uint
18
startTime long: millis
1807677125
type ReferenceType
Weak reference

JVM: Profiling

OldObjectSample

cutoff default profiling startTime eventThread stackTrace 11 17 21 23 24

Category: Java Virtual Machine / Profiling

A potential memory leak

Code Context

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

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

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

src/hotspot/share/jfr/jni/jfrJniMethod.cpp:

NO_TRANSITION(jlong, jfr_elapsed_counter(JNIEnv* env, jobject jvm))
  return JfrTicks::now();
NO_TRANSITION_END

NO_TRANSITION(void, jfr_retransform_classes(JNIEnv* env, jobject jvm, jobjectArray classes))
  JfrJvmtiAgent::retransform_classes(env, classes, JavaThread::thread_from_jni_environment(env));
NO_TRANSITION_END

NO_TRANSITION(void, jfr_set_enabled(JNIEnv* env, jobject jvm, jlong event_type_id, jboolean enabled))
  JfrEventSetting::set_enabled(event_type_id, JNI_TRUE == enabled);
  if (EventOldObjectSample::eventId == event_type_id) {
    ThreadInVMfromNative transition(JavaThread::thread_from_jni_environment(env));
    if (JNI_TRUE == enabled) {
      LeakProfiler::start(JfrOptionSet::old_object_queue_size());
    } else {
      LeakProfiler::stop();
    }
  }
NO_TRANSITION_END

NO_TRANSITION(void, jfr_set_file_notification(JNIEnv* env, jobject jvm, jlong threshold))
  JfrChunkRotation::set_threshold(threshold);

Configuration cutoff enabled stackTrace
default 0 ns true false
profiling 0 ns true true

Field Type Description
allocationTime Ticks Allocation Time Consider contributing a description to jfreventcollector.
objectAge Tickspan 14+ Object Age Consider contributing a description to jfreventcollector.
lastKnownHeapUsage ulong: bytes Last Known Heap Usage
object OldObject Object Consider contributing a description to jfreventcollector.
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 Consider contributing a description to jfreventcollector.

Examples 3
allocationTime Ticks
900913696042
arrayElements int
2717
lastKnownHeapUsage ulong: bytes
280109232
object OldObject
address ulong: address
30302269048
description string
null
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[I
package Package
null
objectAge Tickspan
39951986375
root OldObjectGcRoot
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
217
lineNumber int
1740
method Method
descriptor string
(I)V
hidden boolean
false
modifiers int
2
name string
initCEN
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
22
name string
java/util/zip
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
940865682417
allocationTime Ticks
77603893875
arrayElements int
-2147483648
lastKnownHeapUsage ulong: bytes
121099168
object OldObject
address ulong: address
30164644496
description string
Size: 1
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
name string
java/lang/ThreadLocal$ThreadLocalMap
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/lang
objectAge Tickspan
16463016375
root OldObjectGcRoot
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
1
lineNumber int
317
method Method
descriptor string
(Ljava/lang/Thread;Ljava/lang/Object;)V
hidden boolean
false
modifiers int
0
name string
createMap
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
name string
java/lang/ThreadLocal
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
94066910250
allocationTime Ticks
835370958
arrayElements int
5332
lastKnownHeapUsage ulong: bytes
2698432
object OldObject
address ulong: address
31501989920
description string
null
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
[B
package Package
null
objectAge Tickspan
98132626750
root OldObjectGcRoot
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
10
lineNumber int
3863
method Method
descriptor string
([BII)[B
hidden boolean
false
modifiers int
10
name string
copyOfRangeByte
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
49
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
21.0.1
name string
java/util
type FrameType
Inlined
truncated boolean
false
startTime long: millis
98967997708

ExecutionSample

default profiling startTime every chunk 11 17 21 23 24

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

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

Configuration enabled period
default true 20 ms
profiling true 10 ms

Field Type Description
sampledThread Thread Thread Consider contributing a description to jfreventcollector.
stackTrace StackTrace Stack Trace Consider contributing a description to jfreventcollector.
state ThreadState Thread State

Examples 3
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Executor task launch worker for task 1.0 in stage 22.0 (TID 156)
javaThreadId long
1646
osName string
Executor task launch worker for task 1.0 in stage 22.0 (TID 156)
osThreadId long
138519
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
376
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/String;ID[DII[DI)V
hidden boolean
false
modifiers int
9
name string
dspr
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
22
name string
java/net
hidden boolean
false
modifiers int
17
name string
org/netlib/blas/Dspr
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
22
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
801779566958
state ThreadState
STATE_RUNNABLE
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
1
osName string
main
osThreadId long
8707
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
124
lineNumber int
619
method Method
descriptor string
(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
hidden boolean
false
modifiers int
1
name string
computeIfAbsent
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
name string
java/util/TreeMap
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
1617401208
state ThreadState
STATE_RUNNABLE
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
ForkJoinPool.commonPool-worker-5
javaThreadId long
35
osName string
ForkJoinPool.commonPool-worker-5
osThreadId long
32771
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
9
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/Object;Ljava/lang/Object;)V
hidden boolean
true
modifiers int
1
name string
accept
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
true
modifiers int
4144
name string
java.util.stream.Collectors$$Lambda+0x0000000800252c98/415232454
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util/stream
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
1706272833
state ThreadState
STATE_RUNNABLE

NativeMethodSample

default profiling startTime every chunk 11 17 21 23 24

Category: Java Virtual Machine / Profiling

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

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

Configuration enabled period
default true 20 ms
profiling true 20 ms

Field Type Description
sampledThread Thread Thread Consider contributing a description to jfreventcollector.
stackTrace StackTrace Stack Trace Consider contributing a description to jfreventcollector.
state ThreadState Thread State

Examples 3
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
1
osName string
main
osThreadId long
10499
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/Class;)Ljava/lang/Object;
hidden boolean
false
modifiers int
257
name string
allocateInstance
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
49
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
21.0.1
name string
jdk/internal/misc
type FrameType
Native
truncated boolean
true
startTime long: millis
1891806708
state ThreadState
STATE_RUNNABLE
sampledThread Thread
group ThreadGroup
name string
finagle/netty4
parent ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
finagle/netty4-2-16
javaThreadId long
1292
osName string
finagle/netty4-2-16
osThreadId long
46627
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(IJIJ)I
hidden boolean
false
modifiers int
264
name string
poll
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
sun/nio/ch/KQueue
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
sun/nio/ch
type FrameType
Native
truncated boolean
false
startTime long: millis
794245440250
state ThreadState
STATE_RUNNABLE
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
1
osName string
main
osThreadId long
8707
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
([BII)I
hidden boolean
false
modifiers int
258
name string
readBytes0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
name string
java/io/RandomAccessFile
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/io
type FrameType
Native
truncated boolean
false
startTime long: millis
2394028083
state ThreadState
STATE_RUNNABLE

JVM: Runtime

BiasedLockRevocation

default profiling 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;

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

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

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

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

Field Type Description
lockClass Class Lock Class Class of object whose biased lock was revoked

BiasedLockClassRevocation

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

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

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

default profiling startTime eventThread stackTrace 11 17 21 23 24

Category: Java Virtual Machine / Runtime

Activation of Reserved Stack Area caused by stack overflow with ReservedStackAccess annotated method in call stack

Code Context

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

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

        for (ScopeDesc *sd = nm->scope_desc_near(fr.pc()); sd != NULL; sd = sd->sender()) {
          method = sd->method();
          if (method != NULL && method->has_reserved_stack_access()) {
            found = true;
      }
    }
      }
    }
    if (found) {
      activation = fr;
      warning("Potentially dangerous stack overflow in "
              "ReservedStackAccess annotated method %s [%d]",
              method->name_and_sig_as_C_string(), count++);
      EventReservedStackActivation event;
      if (event.should_commit()) {
        event.set_method(method);
        event.commit();
      }
    }
    if (fr.is_first_java_frame()) {
      break;
    } else {
      fr = fr.java_sender();
    }
  }

Configuration enabled stackTrace
default true true
profiling true true

Field Type Description
method Method Java Method

SafepointBegin

default profiling startTime duration eventThread 11 17 21 23 24

Category: Java Virtual Machine / Runtime / Safepoint

Safepointing begin

Code Context

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

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

static void post_safepoint_begin_event(EventSafepointBegin& event,
                                       uint64_t safepoint_id,
                                       int thread_count,
                                       int critical_thread_count) {
  if (event.should_commit()) {
    event.set_safepointId(safepoint_id);
    event.set_totalThreadCount(thread_count);
    event.set_jniCriticalThreadCount(critical_thread_count);
    event.commit();
  }
}

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

  OrderAccess::storestore(); // storestore, global state -> local state
  for (JavaThreadIteratorWithHandle jtiwh; JavaThread *cur = jtiwh.next(); ) {
    // Make sure the threads start polling, it is time to yield.
    SafepointMechanism::arm_local_poll(cur);
  }

  OrderAccess::fence(); // storestore|storeload, global state -> local state
}

// Roll all threads forward to a safepoint and suspend them all
void SafepointSynchronize::begin() {
  assert(Thread::current()->is_VM_thread(), "Only VM thread may execute a safepoint");

  EventSafepointBegin begin_event;
  SafepointTracing::begin(VMThread::vm_op_type());

  Universe::heap()->safepoint_synchronize_begin();

  // By getting the Threads_lock, we assure that no threads are about to start or
  // exit. It is released again in SafepointSynchronize::end().
  Threads_lock->lock();

  assert( _state == _not_synchronized, "trying to safepoint synchronize with wrong state");

  int nof_threads = Threads::number_of_threads();

Configuration enabled threshold
default true 10 ms
profiling true 0 ms

Field Type Description
safepointId ulong Safepoint Identifier
totalThreadCount int Total Threads The total number of threads at the start of safe point
jniCriticalThreadCount int JNI Critical Threads The number of threads in JNI critical sections

Examples 3
jniCriticalThreadCount int
0
safepointId ulong
50
startTime long: millis
7934954500
totalThreadCount int
46
jniCriticalThreadCount int
0
safepointId ulong
1974
startTime long: millis
842441386875
totalThreadCount int
180
jniCriticalThreadCount int
0
safepointId ulong
79
startTime long: millis
5911631458
totalThreadCount int
28

SafepointStateSynchronization

startTime duration eventThread 11 17 21 23 24

Category: Java Virtual Machine / Runtime / Safepoint

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

Configuration enabled threshold
default false 10 ms
profiling false 0 ms

Field Type Description
safepointId ulong Safepoint Identifier
initialThreadCount int Initial Threads The number of threads running at the beginning of state check
runningThreadCount int Running Threads The number of threads still running
iterations int Iterations Number of state check iterations

Examples 3
initialThreadCount int
1
iterations int
3
runningThreadCount int
0
safepointId ulong
1941
startTime long: millis
824168192458
initialThreadCount int
1
iterations int
9
runningThreadCount int
0
safepointId ulong
11
startTime long: millis
1105370917
initialThreadCount int
4
iterations int
3
runningThreadCount int
0
safepointId ulong
99
startTime long: millis
9500421875

SafepointCleanup

startTime duration eventThread 11 17 21 until JDK 23

Category: Java Virtual Machine / Runtime / Safepoint

Safepointing begin running cleanup tasks

Code Context

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

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

static void post_safepoint_begin_event(EventSafepointBegin& event,
                                       uint64_t safepoint_id,
                                       int thread_count,
                                       int critical_thread_count) {
  if (event.should_commit()) {
    event.set_safepointId(safepoint_id);
    event.set_totalThreadCount(thread_count);
    event.set_jniCriticalThreadCount(critical_thread_count);
    event.commit();
  }
}

static void post_safepoint_cleanup_event(EventSafepointCleanup& event, uint64_t safepoint_id) {
  if (event.should_commit()) {
    event.set_safepointId(safepoint_id);
    event.commit();
  }
}

static void post_safepoint_synchronize_event(EventSafepointStateSynchronization& event,
                                             uint64_t safepoint_id,
                                             int initial_number_of_threads,
                                             int threads_waiting_to_block,
                                             uint64_t iterations) {

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

  // Update the count of active JNI critical regions
  GCLocker::set_jni_lock_count(_current_jni_active_count);

  post_safepoint_synchronize_event(sync_event,
                                   _safepoint_id,
                                   initial_running,
                                   _waiting_to_block, iterations);

  SafepointTracing::synchronized(nof_threads, initial_running, _nof_threads_hit_polling_page);

  // We do the safepoint cleanup first since a GC related safepoint
  // needs cleanup to be completed before running the GC op.
  EventSafepointCleanup cleanup_event;
  do_cleanup_tasks();
  post_safepoint_cleanup_event(cleanup_event, _safepoint_id);

  post_safepoint_begin_event(begin_event, _safepoint_id, nof_threads, _current_jni_active_count);
  SafepointTracing::cleanup();
}

void SafepointSynchronize::disarm_safepoint() {
  uint64_t active_safepoint_counter = _safepoint_counter;
  {
    JavaThreadIteratorWithHandle jtiwh;

Configuration enabled threshold
default false 10 ms
profiling false 0 ms

Field Type Description
safepointId ulong Safepoint Identifier

Examples 3
safepointId ulong
1931
startTime long: millis
811025238333
safepointId ulong
92
startTime long: millis
8232301083
safepointId ulong
86
startTime long: millis
16764344500

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

Configuration enabled threshold
default false 10 ms
profiling false 0 ms

Field Type Description
safepointId ulong Safepoint Identifier
name string Task Name The task name

Examples 3
name string
updating inline caches
safepointId ulong
7
startTime long: millis
364351583
name string
updating inline caches
safepointId ulong
1937
startTime long: millis
820975511750
name string
updating inline caches
safepointId ulong
13
startTime long: millis
1245437375

SafepointEnd

startTime duration eventThread 11 17 21 23 24

Category: Java Virtual Machine / Runtime / Safepoint

Safepointing end

Code Context

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

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

static void post_safepoint_cleanup_task_event(EventSafepointCleanupTask& event,
                                              uint64_t safepoint_id,
                                              const char* name) {
  if (event.should_commit()) {
    event.set_safepointId(safepoint_id);
    event.set_name(name);
    event.commit();
  }
}

static void post_safepoint_end_event(EventSafepointEnd& event, uint64_t safepoint_id) {
  if (event.should_commit()) {
    event.set_safepointId(safepoint_id);
    event.commit();
  }
}

// SafepointCheck
SafepointStateTracker::SafepointStateTracker(uint64_t safepoint_id, bool at_safepoint)
  : _safepoint_id(safepoint_id), _at_safepoint(at_safepoint) {}

bool SafepointStateTracker::safepoint_state_changed() {

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

  } // ~JavaThreadIteratorWithHandle

  // Release threads lock, so threads can be created/destroyed again.
  Threads_lock->unlock();

  // Wake threads after local state is correctly set.
  _wait_barrier->disarm();
}

// Wake up all threads, so they are ready to resume execution after the safepoint
// operation has been carried out
void SafepointSynchronize::end() {
  assert(Threads_lock->owned_by_self(), "must hold Threads_lock");
  EventSafepointEnd event;
  assert(Thread::current()->is_VM_thread(), "Only VM thread can execute a safepoint");

  disarm_safepoint();

  Universe::heap()->safepoint_synchronize_end();

  SafepointTracing::end();

  post_safepoint_end_event(event, safepoint_id());
}

Configuration enabled threshold
default false 10 ms
profiling false 0 ms

Field Type Description
safepointId ulong Safepoint Identifier

Examples 3
safepointId ulong
69
startTime long: millis
8756442583
safepointId ulong
1912
startTime long: millis
800285503833
safepointId ulong
54
startTime long: millis
4005072000

ExecuteVMOperation

default profiling startTime duration eventThread 11 17 21 23 24

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

Configuration enabled threshold
default true 10 ms
profiling true 0 ms

Field Type Description
operation VMOperationType Operation Consider contributing a description to jfreventcollector.
safepoint boolean At Safepoint If the operation occured at a safepoint
blocking boolean Caller Blocked If the calling thread was blocked until the operation was complete
caller Thread Caller Thread requesting operation. If non-blocking, will be set to 0 indicating thread is unknown
safepointId ulong Safepoint Identifier The safepoint (if any) under which this operation was completed

Examples 3
blocking boolean
true
caller Thread
group ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
JFR Recorder Thread
javaThreadId long
19
osName string
JFR Recorder Thread
osThreadId long
27395
virtual boolean
false
operation VMOperationType
JFRCheckpoint
safepoint boolean
true
safepointId ulong
1906
startTime long: millis
795906504917
blocking boolean
true
caller Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
ForkJoinPool.commonPool-worker-1
javaThreadId long
31
osName string
ForkJoinPool.commonPool-worker-1
osThreadId long
30983
virtual boolean
false
operation VMOperationType
ParallelGCFailedAllocation
safepoint boolean
true
safepointId ulong
44
startTime long: millis
6355090708
blocking boolean
true
caller Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
ForkJoinPool.commonPool-worker-2
javaThreadId long
24
osName string
ForkJoinPool.commonPool-worker-2
osThreadId long
25351
virtual boolean
false
operation VMOperationType
GenCollectForAllocation
safepoint boolean
true
safepointId ulong
63
startTime long: millis
4626462458

Shutdown

default profiling startTime eventThread stackTrace 11 17 21 23 24

Category: Java Virtual Machine / Runtime

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

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

Configuration enabled stackTrace
default true true
profiling true true

Field Type Description
reason string Reason Reason for JVM shutdown

Examples 3
reason string
Shutdown requested from Java
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
()V
hidden boolean
false
modifiers int
264
name string
beforeHalt
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
name string
java/lang/Shutdown
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
94066455250
reason string
Shutdown requested from Java
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
()V
hidden boolean
false
modifiers int
264
name string
beforeHalt
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
name string
java/lang/Shutdown
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
98967385458
reason string
No remaining non-daemon Java threads
stackTrace StackTrace
null
startTime long: millis
940851933500

SymbolTableStatistics

default profiling startTime duration every chunk 13 17 21 23 24

Category: Java Virtual Machine / Runtime / Tables

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

  event.set_entryCount(statistics._number_of_entries);
  event.set_totalFootprint(statistics._total_footprint);
  event.set_bucketCountMaximum(statistics._maximum_bucket_size);
  event.set_bucketCountAverage(statistics._average_bucket_size);
  event.set_bucketCountVariance(statistics._variance_of_bucket_size);
  event.set_bucketCountStandardDeviation(statistics._stddev_of_bucket_size);
  event.set_insertionRate(statistics._add_rate);
  event.set_removalRate(statistics._remove_rate);
  event.commit();
}

TRACE_REQUEST_FUNC(SymbolTableStatistics) {
  TableStatistics statistics = SymbolTable::get_table_statistics();
  emit_table_statistics<EventSymbolTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(StringTableStatistics) {
  TableStatistics statistics = StringTable::get_table_statistics();
  emit_table_statistics<EventStringTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(PlaceholderTableStatistics) {
  TableStatistics statistics = SystemDictionary::placeholders_statistics();
  emit_table_statistics<EventPlaceholderTableStatistics>(statistics);
}

Configuration enabled period
default true 10 s
profiling true 10 s

Field Type Description
bucketCount ulong Bucket Count Number of buckets
entryCount ulong Entry Count Number of all entries
totalFootprint ulong: bytes Total Footprint Total memory footprint (the table itself plus all of the entries)
bucketCountMaximum ulong Maximum Bucket Count The maximum bucket length (entries in a single bucket)
bucketCountAverage float Average Bucket Count The average bucket length
bucketCountVariance float Bucket Count Variance How far bucket lengths are spread out from their average value
bucketCountStandardDeviation float Bucket Count Standard Deviation How far bucket lengths are spread out from their mean (expected) value
insertionRate float Insertion Rate How many items were added since last event (per second)
removalRate float Removal Rate How many items were removed since last event (per second)

Examples 3
bucketCount ulong
32768
bucketCountAverage float
4.3593445
bucketCountMaximum ulong
15
bucketCountStandardDeviation float
2.1059704
bucketCountVariance float
4.435111
entryCount ulong
142847
insertionRate float
6.1487455
removalRate float
35.00818
startTime long: millis
42452494875
totalFootprint ulong: bytes
11790928
bucketCount ulong
32768
bucketCountAverage float
5.020691
bucketCountMaximum ulong
18
bucketCountStandardDeviation float
2.2593527
bucketCountVariance float
5.1046743
entryCount ulong
164518
insertionRate float
3.701437
removalRate float
0.9740624
startTime long: millis
98631548708
totalFootprint ulong: bytes
14301672
bucketCount ulong
65536
bucketCountAverage float
7.767639
bucketCountMaximum ulong
21
bucketCountStandardDeviation float
2.7926807
bucketCountVariance float
7.799066
entryCount ulong
509060
insertionRate float
0.09782524
removalRate float
0.0
startTime long: millis
839841975500
totalFootprint ulong: bytes
54764784

StringTableStatistics

default profiling startTime duration every chunk 13 17 21 23 24

Category: Java Virtual Machine / Runtime / Tables

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

  event.set_bucketCountStandardDeviation(statistics._stddev_of_bucket_size);
  event.set_insertionRate(statistics._add_rate);
  event.set_removalRate(statistics._remove_rate);
  event.commit();
}

TRACE_REQUEST_FUNC(SymbolTableStatistics) {
  TableStatistics statistics = SymbolTable::get_table_statistics();
  emit_table_statistics<EventSymbolTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(StringTableStatistics) {
  TableStatistics statistics = StringTable::get_table_statistics();
  emit_table_statistics<EventStringTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(PlaceholderTableStatistics) {
  TableStatistics statistics = SystemDictionary::placeholders_statistics();
  emit_table_statistics<EventPlaceholderTableStatistics>(statistics);
}

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

Configuration enabled period
default true 10 s
profiling true 10 s

Field Type Description
bucketCount ulong Bucket Count Number of buckets
entryCount ulong Entry Count Number of all entries
totalFootprint ulong: bytes Total Footprint Total memory footprint (the table itself plus all of the entries)
bucketCountMaximum ulong Maximum Bucket Count The maximum bucket length (entries in a single bucket)
bucketCountAverage float Average Bucket Count The average bucket length
bucketCountVariance float Bucket Count Variance How far bucket lengths are spread out from their average value
bucketCountStandardDeviation float Bucket Count Standard Deviation How far bucket lengths are spread out from their mean (expected) value
insertionRate float Insertion Rate How many items were added since last event (per second)
removalRate float Removal Rate How many items were removed since last event (per second)

Examples 3
bucketCount ulong
65536
bucketCountAverage float
1.722702
bucketCountMaximum ulong
9
bucketCountStandardDeviation float
1.30967
bucketCountVariance float
1.7152354
entryCount ulong
112899
insertionRate float
679.15454
removalRate float
15.449375
startTime long: millis
906628285042
totalFootprint ulong: bytes
12580448
bucketCount ulong
65536
bucketCountAverage float
0.54649353
bucketCountMaximum ulong
6
bucketCountStandardDeviation float
0.7300648
bucketCountVariance float
0.5329946
entryCount ulong
35815
insertionRate float
568.8381
removalRate float
34.001476
startTime long: millis
84147251708
totalFootprint ulong: bytes
3016720
bucketCount ulong
65536
bucketCountAverage float
0.36930847
bucketCountMaximum ulong
6
bucketCountStandardDeviation float
0.60415214
bucketCountVariance float
0.3649998
entryCount ulong
24203
insertionRate float
85.41393
removalRate float
53.478752
startTime long: millis
67214986583
totalFootprint ulong: bytes
2736128

PlaceholderTableStatistics

default profiling startTime duration every chunk 17 until JDK 20

Category: Java Virtual Machine / Runtime / Tables

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

TRACE_REQUEST_FUNC(SymbolTableStatistics) {
  TableStatistics statistics = SymbolTable::get_table_statistics();
  emit_table_statistics<EventSymbolTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(StringTableStatistics) {
  TableStatistics statistics = StringTable::get_table_statistics();
  emit_table_statistics<EventStringTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(PlaceholderTableStatistics) {
  TableStatistics statistics = SystemDictionary::placeholders_statistics();
  emit_table_statistics<EventPlaceholderTableStatistics>(statistics);
}

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

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

Configuration enabled period
default true 10 s
profiling true 10 s

Field Type Description
bucketCount ulong Bucket Count Number of buckets
entryCount ulong Entry Count Number of all entries
totalFootprint ulong: bytes Total Footprint Total memory footprint (the table itself plus all of the entries)
bucketCountMaximum ulong Maximum Bucket Count The maximum bucket length (entries in a single bucket)
bucketCountAverage float Average Bucket Count The average bucket length
bucketCountVariance float Bucket Count Variance How far bucket lengths are spread out from their average value
bucketCountStandardDeviation float Bucket Count Standard Deviation How far bucket lengths are spread out from their mean (expected) value
insertionRate float Insertion Rate How many items were added since last event (per second)
removalRate float Removal Rate How many items were removed since last event (per second)

LoaderConstraintsTableStatistics

default profiling startTime duration every chunk 17 until JDK 20

Category: Java Virtual Machine / Runtime / Tables

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

TRACE_REQUEST_FUNC(StringTableStatistics) {
  TableStatistics statistics = StringTable::get_table_statistics();
  emit_table_statistics<EventStringTableStatistics>(statistics);
}

TRACE_REQUEST_FUNC(PlaceholderTableStatistics) {
  TableStatistics statistics = SystemDictionary::placeholders_statistics();
  emit_table_statistics<EventPlaceholderTableStatistics>(statistics);
}

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

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

TRACE_REQUEST_FUNC(CompilerStatistics) {
  EventCompilerStatistics event;
  event.set_compileCount(CompileBroker::get_total_compile_count());
  event.set_bailoutCount(CompileBroker::get_total_bailout_count());

Configuration enabled period
default true 10 s
profiling true 10 s

Field Type Description
bucketCount ulong Bucket Count
entryCount ulong Entry Count Number of all entries
totalFootprint ulong: bytes Total Footprint Total memory footprint (the table itself plus all of the entries)
bucketCountMaximum ulong Maximum Bucket Count The maximum bucket length (entries in a single bucket)
bucketCountAverage float Average Bucket Count The average bucket length
bucketCountVariance float Bucket Count Variance How far bucket lengths are spread out from their average value
bucketCountStandardDeviation float Bucket Count Standard Deviation How far bucket lengths are spread out from their mean (expected) value
insertionRate float Insertion Rate How many items were added since last event (per second)
removalRate float Removal Rate How many items were removed since last event (per second)

ProtectionDomainCacheTableStatistics

default profiling startTime duration every chunk 17 until JDK 20

Category: Java Virtual Machine / Runtime / Tables

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

TRACE_REQUEST_FUNC(PlaceholderTableStatistics) {
  TableStatistics statistics = SystemDictionary::placeholders_statistics();
  emit_table_statistics<EventPlaceholderTableStatistics>(statistics);
}

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

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

TRACE_REQUEST_FUNC(CompilerStatistics) {
  EventCompilerStatistics event;
  event.set_compileCount(CompileBroker::get_total_compile_count());
  event.set_bailoutCount(CompileBroker::get_total_bailout_count());
  event.set_invalidatedCount(CompileBroker::get_total_invalidated_count());
  event.set_osrCompileCount(CompileBroker::get_total_osr_compile_count());
  event.set_standardCompileCount(CompileBroker::get_total_standard_compile_count());
  event.set_osrBytesCompiled(CompileBroker::get_sum_osr_bytes_compiled());
  event.set_standardBytesCompiled(CompileBroker::get_sum_standard_bytes_compiled());

Configuration enabled period
default true 10 s
profiling true 10 s

Field Type Description
bucketCount ulong Bucket Count Number of buckets
entryCount ulong Entry Count Number of all entries
totalFootprint ulong: bytes Total Footprint Total memory footprint (the table itself plus all of the entries)
bucketCountMaximum ulong Maximum Bucket Count The maximum bucket length (entries in a single bucket)
bucketCountAverage float Average Bucket Count The average bucket length
bucketCountVariance float Bucket Count Variance How far bucket lengths are spread out from their average value
bucketCountStandardDeviation float Bucket Count Standard Deviation How far bucket lengths are spread out from their mean (expected) value
insertionRate float Insertion Rate How many items were added since last event (per second)
removalRate float Removal Rate How many items were removed since last event (per second)

ThreadDump

default profiling startTime duration every chunk 11 17 21 23 24

Category: Java Virtual Machine / Runtime

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

/*
 * This is left empty on purpose, having ExecutionSample as a requestable
 * is a way of getting the period. The period is passed to ThreadSampling::update_period.
 * Implementation in jfrSamples.cpp
 */
TRACE_REQUEST_FUNC(ExecutionSample) {
}
TRACE_REQUEST_FUNC(NativeMethodSample) {
}

TRACE_REQUEST_FUNC(ThreadDump) {
  ResourceMark rm;
  EventThreadDump event;
  event.set_result(JfrDcmdEvent::thread_dump());
  event.commit();
}

static int _native_library_callback(const char* name, address base, address top, void *param) {
  EventNativeLibrary event(UNTIMED);
  event.set_name(name);
  event.set_baseAddress((u8)base);
  event.set_topAddress((u8)top);
  event.set_endtime(*(JfrTicks*) param);
  event.commit();

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

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

Configuration enabled period
default true everyChunk
profiling true 60 s

Field Type Description
result string Thread Dump

Examples 3
result string
2024-09-25 14:24:36 Full thread dump OpenJDK 64-Bit Server VM (22+36 mixed mode, sharing): Threads class SMR info: _java_thread_list=0x0000600006146140, length=116, elements={ 0x000000014c808c00, 0x000000013d835200, 0x000000014c863a00, 0x000000013c81ac00, 0x000000013d835a00, 0x000000013c812a00, 0x0
startTime long: millis
874049188417
result string
2023-12-18 12:45:49 Full thread dump OpenJDK 64-Bit Server VM (21.0.1+12-LTS mixed mode): Threads class SMR info: _java_thread_list=0x00006000003cd500, length=77, elements={ 0x000000011f00f200, 0x000000010e038800, 0x000000010e03b200, 0x000000011f80ec00, 0x000000011f80c800, 0x000000011f811600, 0x000
startTime long: millis
63501309417
result string
2023-12-18 12:47:28 Full thread dump OpenJDK 64-Bit Server VM (21.0.1+12-LTS mixed mode): Threads class SMR info: _java_thread_list=0x000060000092cca0, length=77, elements={ 0x0000000132812000, 0x0000000131017000, 0x0000000131014c00, 0x000000013203b200, 0x0000000132008200, 0x0000000132009600, 0x000
startTime long: millis
67214999000

NativeLibrary

default profiling startTime every chunk 11 17 21 23 24

Category: Java Virtual Machine / Runtime

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

TRACE_REQUEST_FUNC(ExecutionSample) {
}
TRACE_REQUEST_FUNC(NativeMethodSample) {
}

TRACE_REQUEST_FUNC(ThreadDump) {
  ResourceMark rm;
  EventThreadDump event;
  event.set_result(JfrDcmdEvent::thread_dump());
  event.commit();
}

static int _native_library_callback(const char* name, address base, address top, void *param) {
  EventNativeLibrary event(UNTIMED);
  event.set_name(name);
  event.set_baseAddress((u8)base);
  event.set_topAddress((u8)top);
  event.set_endtime(*(JfrTicks*) param);
  event.commit();
  return 0;
}

TRACE_REQUEST_FUNC(NativeLibrary) {
  JfrTicks ts= JfrTicks::now();
  os::get_loaded_modules_info(&_native_library_callback, (void *)&ts);

Configuration enabled period
default true everyChunk
profiling true everyChunk

Field Type Description
name string Name
baseAddress ulong: address Base Address Starting address of the module
topAddress ulong: address Top Address Ending address of the module

Examples 3
baseAddress ulong: address
6847246336
name string
/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
startTime long: millis
791772826333
topAddress ulong: address
0
baseAddress ulong: address
6777712640
name string
/usr/lib/system/libcache.dylib
startTime long: millis
364596583
topAddress ulong: address
0
baseAddress ulong: address
4300652544
name string
[...]/.sdkman/candidates/java/21.0.1-tem/lib/libjli.dylib
startTime long: millis
423214667
topAddress ulong: address
0

ModuleRequire

default profiling startTime every chunk 11 17 21 23 24

Category: Java Virtual Machine / Runtime / Modules

A directed edge representing a dependency

Code Context

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

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

   ModuleDependencyClosure(const ModuleEntry* module, EventFunc ef) : ModuleEventCallbackClosure(ef), _module(module) {}
   void do_module(ModuleEntry* entry);
};

class ModuleExportClosure : public ModuleEventCallbackClosure {
 private:
  const PackageEntry* const _package;
 public:
  ModuleExportClosure(const PackageEntry* pkg, EventFunc ef) : ModuleEventCallbackClosure(ef), _package(pkg) {}
  void do_module(ModuleEntry* entry);
};

static void write_module_dependency_event(const void* from_module, const ModuleEntry* to_module) {
  EventModuleRequire event(UNTIMED);
  event.set_endtime(invocation_time);
  event.set_source((const ModuleEntry* const)from_module);
  event.set_requiredModule(to_module);
  event.commit();
}

static void write_module_export_event(const void* package, const ModuleEntry* qualified_export) {
  EventModuleExport event(UNTIMED);
  event.set_endtime(invocation_time);
  event.set_exportedPackage((const PackageEntry*)package);
  event.set_targetModule(qualified_export);

Configuration enabled period
default true endChunk
profiling true endChunk

Field Type Description
source Module Source Module
requiredModule Module Required Module Consider contributing a description to jfreventcollector.

Examples 3
requiredModule Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
source Module
classLoader 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
22
name string
jdk/internal/loader
location string
jrt:/java.scripting
name string
java.scripting
version string
22
startTime long: millis
795760285625
requiredModule Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
source Module
classLoader ClassLoader
name string
platform
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
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
21.0.1
name string
jdk/internal/loader
location string
jrt:/jdk.localedata
name string
jdk.localedata
version string
21.0.1
startTime long: millis
16763952708
requiredModule Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.xml
name string
java.xml
version string
21.0.1
source Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
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
21.0.1
name string
jdk/internal/loader
location string
jrt:/jdk.unsupported.desktop
name string
jdk.unsupported.desktop
version string
21.0.1
startTime long: millis
14998474333

ModuleExport

default profiling startTime every chunk 11 17 21 23 24

Category: Java Virtual Machine / Runtime / Modules

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

  ModuleExportClosure(const PackageEntry* pkg, EventFunc ef) : ModuleEventCallbackClosure(ef), _package(pkg) {}
  void do_module(ModuleEntry* entry);
};

static void write_module_dependency_event(const void* from_module, const ModuleEntry* to_module) {
  EventModuleRequire event(UNTIMED);
  event.set_endtime(invocation_time);
  event.set_source((const ModuleEntry* const)from_module);
  event.set_requiredModule(to_module);
  event.commit();
}

static void write_module_export_event(const void* package, const ModuleEntry* qualified_export) {
  EventModuleExport event(UNTIMED);
  event.set_endtime(invocation_time);
  event.set_exportedPackage((const PackageEntry*)package);
  event.set_targetModule(qualified_export);
  event.commit();
}

void ModuleDependencyClosure::do_module(ModuleEntry* to_module) {
  assert_locked_or_safepoint(Module_lock);
  assert(to_module != NULL, "invariant");
  assert(_module != NULL, "invariant");
  assert(_event_func != NULL, "invariant");

Configuration enabled period
default true endChunk
profiling true endChunk

Field Type Description
exportedPackage Package Exported Package Consider contributing a description to jfreventcollector.
targetModule Module Target Module Module to which the package is qualifiedly exported. If null or N/A, the package is unqualifiedly exported

Examples 3
exportedPackage Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/util
startTime long: millis
16764024625
targetModule Module
null
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
33
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
21.0.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/math
startTime long: millis
14998523917
targetModule Module
null
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
22
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/hadoop/shaded/com/ctc/wstx/stax
startTime long: millis
795760593292
targetModule Module
null

Java Application

ThreadStart

default profiling startTime eventThread stackTrace 11 17 21 23 24

Category: Java Application

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

src/hotspot/share/jfr/support/jfrThreadLocal.cpp:

void JfrThreadLocal::set_thread_blob(const JfrBlobHandle& ref) {
  assert(!_thread.valid(), "invariant");
  _thread = ref;
}

const JfrBlobHandle& JfrThreadLocal::thread_blob() const {
  return _thread;
}

static void send_java_thread_start_event(JavaThread* jt) {
  EventThreadStart event;
  event.set_thread(jt->jfr_thread_local()->thread_id());
  event.set_parentThread(jt->jfr_thread_local()->parent_thread_id());
  event.commit();
}

void JfrThreadLocal::on_start(Thread* t) {
  assert(t != NULL, "invariant");
  assert(Thread::current() == t, "invariant");
  JfrJavaSupport::on_thread_start(t);
  if (JfrRecorder::is_recording()) {
    JfrCheckpointManager::write_thread_checkpoint(t);

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

#if INCLUDE_JNI_CHECK
  if (CheckJNICalls) return jni_functions_check();
#endif // INCLUDE_JNI_CHECK
  return &jni_NativeInterface;
}

// Returns the function structure
struct JNINativeInterface_* jni_functions_nocheck() {
  return &jni_NativeInterface;
}

static void post_thread_start_event(const JavaThread* jt) {
  assert(jt != NULL, "invariant");
  EventThreadStart event;
  if (event.should_commit()) {
    event.set_thread(JFR_THREAD_ID(jt));
    event.set_parentThread((traceid)0);
#if INCLUDE_JFR
    if (EventThreadStart::is_stacktrace_enabled()) {
      jt->jfr_thread_local()->set_cached_stack_trace_id((traceid)0);
      event.commit();
      jt->jfr_thread_local()->clear_cached_stack_trace();
    } else
#endif
    {
      event.commit();
    }
  }
}

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

  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

Configuration enabled stackTrace
default true true
profiling true true

Field Type Description
thread Thread New Java Thread
parentThread Thread Parent Java Thread

Examples 3
parentThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
1
osName string
main
osThreadId long
5123
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
10
lineNumber int
32
method Method
descriptor string
(Ljava/lang/Runnable;)V
hidden boolean
false
modifiers int
1
name string
execute
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
22
name string
java/net
hidden boolean
false
modifiers int
17
name string
io/netty/util/concurrent/ThreadPerTaskExecutor
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
22
name string
java/net
location string
null
name string
null
version string
null
name string
io/netty/util/concurrent
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
845394977000
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
shuffle-server-7-8
javaThreadId long
1841
osName string
shuffle-server-7-8
osThreadId long
108071
virtual boolean
false
parentThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-akka.actor.default-dispatcher-4
javaThreadId long
43
osName string
UCT-akka.actor.default-dispatcher-4
osThreadId long
26895
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
2
lineNumber int
2573
method Method
descriptor string
(Ljava/lang/Thread;Ljdk/internal/vm/ThreadContainer;)V
hidden boolean
false
modifiers int
1
name string
start
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
name string
java/lang/System$2
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
6847215083
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-akka.actor.default-dispatcher-19
javaThreadId long
63
osName string
UCT-akka.actor.default-dispatcher-19
osThreadId long
38403
virtual boolean
false
parentThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-akka.actor.internal-dispatcher-2
javaThreadId long
48
osName string
UCT-akka.actor.internal-dispatcher-2
osThreadId long
42767
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
2
lineNumber int
2573
method Method
descriptor string
(Ljava/lang/Thread;Ljdk/internal/vm/ThreadContainer;)V
hidden boolean
false
modifiers int
1
name string
start
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
name string
java/lang/System$2
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
10735603583
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-akka.actor.internal-dispatcher-20
javaThreadId long
95
osName string
UCT-akka.actor.internal-dispatcher-20
osThreadId long
58883
virtual boolean
false

ThreadEnd

default profiling startTime eventThread 11 17 21 23 24

Category: Java Application

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

src/hotspot/share/jfr/support/jfrThreadLocal.cpp:

  if (t->jfr_thread_local()->has_cached_stack_trace()) {
    t->jfr_thread_local()->clear_cached_stack_trace();
  }
}

static void send_java_thread_end_events(traceid id, JavaThread* jt) {
  assert(jt != NULL, "invariant");
  assert(Thread::current() == jt, "invariant");
  assert(jt->jfr_thread_local()->trace_id() == id, "invariant");
  if (JfrRecorder::is_recording()) {
    EventThreadEnd event;
    event.set_thread(id);
    event.commit();
    JfrThreadCPULoadEvent::send_event_for_thread(jt);
  }
}

void JfrThreadLocal::release(Thread* t) {
  if (has_java_event_writer()) {
    assert(t->is_Java_thread(), "invariant");
    JfrJavaSupport::destroy_global_jni_handle(java_event_writer());
    _java_event_writer = NULL;

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

#if INCLUDE_JVMCI
  JVMCI::shutdown();
#endif

  // Hang forever on exit if we're reporting an error.
  if (ShowMessageBoxOnError && VMError::is_error_reported()) {
    os::infinite_sleep();
  }

  EventThreadEnd event;
  if (event.should_commit()) {
    event.set_thread(JFR_THREAD_ID(thread));
    event.commit();
  }

  JFR_ONLY(Jfr::on_vm_shutdown();)

  // Stop the WatcherThread. We do this before disenrolling various
  // PeriodicTasks to reduce the likelihood of races.
  if (PeriodicTask::num_tasks() > 0) {
    WatcherThread::stop();

Configuration enabled
default true
profiling true

Field Type Description
thread Thread Java Thread

Examples 3
startTime long: millis
11837752292
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-akka.actor.default-dispatcher-10
javaThreadId long
84
osName string
UCT-akka.actor.default-dispatcher-10
osThreadId long
48899
virtual boolean
false
startTime long: millis
821003015542
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
block-manager-storage-async-thread-pool-45
javaThreadId long
1739
osName string
block-manager-storage-async-thread-pool-45
osThreadId long
135439
virtual boolean
false
startTime long: millis
17494176125
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-akka.actor.internal-dispatcher-4
javaThreadId long
93
osName string
UCT-akka.actor.internal-dispatcher-4
osThreadId long
41991
virtual boolean
false

ThreadSleep

default profiling startTime duration eventThread stackTrace 11 17 21 23 24

Category: Java Application

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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()) {

Configuration enabled stackTrace threshold
default true true 20 ms
profiling true true 10 ms

Field Type Description
time long: millis Sleep Time

Examples 3
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
5
lineNumber int
474
method Method
descriptor string
(Ljdk/internal/event/ThreadSleepEvent;)V
hidden boolean
false
modifiers int
10
name string
afterSleep
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
8014319250
time long: millis
8000000
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
91
lineNumber int
600
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
22
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
22
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
794153171208
time long: millis
10000000
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
5
lineNumber int
474
method Method
descriptor string
(Ljdk/internal/event/ThreadSleepEvent;)V
hidden boolean
false
modifiers int
10
name string
afterSleep
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
7554195792
time long: millis
8000000

ThreadPark

default profiling startTime duration eventThread stackTrace 11 17 21 23 24

Category: Java Application

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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 {

Configuration enabled stackTrace threshold
default true true 20 ms
profiling true true 10 ms

Field Type Description
parkedClass Class Class Parked On
timeout long: nanos Park Timeout
until long: epochmillis Park Until
address ulong: address Address of Object Parked

Examples 3
address ulong: address
31586136128
parkedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
name string
java/util/concurrent/ForkJoinPool
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util/concurrent
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
49
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
21.0.1
name string
jdk/internal/misc
type FrameType
Native
truncated boolean
false
startTime long: millis
4823023583
timeout long: nanos
-9223372036854775808
until long: epochmillis
-9223372036854775808
address ulong: address
30121432160
parkedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
24
name string
java/util/concurrent/SynchronousQueue$Transferer
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/util/concurrent
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
22
name string
jdk/internal/misc
type FrameType
Native
truncated boolean
false
startTime long: millis
791549616125
timeout long: nanos
59999998750
until long: epochmillis
-9223372036854775808
address ulong: address
30064838920
parkedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.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
49
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
21.0.1
name string
jdk/internal/misc
type FrameType
Native
truncated boolean
false
startTime long: millis
436966833
timeout long: nanos
59999997167
until long: epochmillis
-9223372036854775808

JavaMonitorEnter

default profiling startTime duration eventThread stackTrace 11 17 21 23 24

Category: Java Application

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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

Configuration enabled stackTrace threshold
default true true 20 ms
profiling true true 10 ms

Field Type Description
monitorClass Class Monitor Class Consider contributing a description to jfreventcollector.
previousOwner Thread Previous Monitor Owner
address ulong: address Monitor Address

Examples 3
address ulong: address
105553345197888
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
22
name string
java/lang
previousOwner Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Executor task launch worker-1
javaThreadId long
1938
osName string
Executor task launch worker-1
osThreadId long
261155
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
7
lineNumber int
572
method Method
descriptor string
(Ljava/lang/String;Z)Ljava/lang/Class;
hidden boolean
false
modifiers int
4
name string
loadClass
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
22
name string
java/lang
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
869872954083
address ulong: address
105553176308912
monitorClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
hidden boolean
false
modifiers int
33
name string
edu/rice/habanero/actors/AkkaActorState$actorLatch$
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
33
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
21.0.1
name string
java/net
location string
null
name string
null
version string
null
name string
edu/rice/habanero/actors
previousOwner Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-akka.actor.default-dispatcher-15
javaThreadId long
67
osName string
UCT-akka.actor.default-dispatcher-15
osThreadId long
39939
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
-1
lineNumber int
115
method Method
descriptor string
()V
hidden boolean
false
modifiers int
33
name string
countUp
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
hidden boolean
false
modifiers int
33
name string
edu/rice/habanero/actors/AkkaActorState$actorLatch$
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
33
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
21.0.1
name string
java/net
location string
null
name string
null
version string
null
name string
edu/rice/habanero/actors
type FrameType
Inlined
truncated boolean
false
startTime long: millis
7372045125
address ulong: address
105553170730032
monitorClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
hidden boolean
false
modifiers int
33
name string
edu/rice/habanero/actors/AkkaActorState$actorLatch$
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
33
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
21.0.1
name string
java/net
location string
null
name string
null
version string
null
name string
edu/rice/habanero/actors
previousOwner Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-akka.actor.default-dispatcher-10
javaThreadId long
52
osName string
UCT-akka.actor.default-dispatcher-10
osThreadId long
41987
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
-1
lineNumber int
115
method Method
descriptor string
()V
hidden boolean
false
modifiers int
33
name string
countUp
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
hidden boolean
false
modifiers int
33
name string
edu/rice/habanero/actors/AkkaActorState$actorLatch$
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
33
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
21.0.1
name string
java/net
location string
null
name string
null
version string
null
name string
edu/rice/habanero/actors
type FrameType
Inlined
truncated boolean
false
startTime long: millis
7294975750

JavaMonitorWait

default profiling startTime duration eventThread stackTrace 11 17 21 23 24

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

Configuration enabled stackTrace threshold
default true true 20 ms
profiling true true 10 ms

Field Type Description
monitorClass Class Monitor Class Class of object waited on
notifier Thread Notifier Thread Notifying Thread
timeout long: millis Timeout Maximum wait time
timedOut boolean Timed Out Wait has been timed out
address ulong: address Monitor Address Address of object waited on

Examples 3
address ulong: address
105553176308912
monitorClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
hidden boolean
false
modifiers int
33
name string
edu/rice/habanero/actors/AkkaActorState$actorLatch$
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
33
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
21.0.1
name string
java/net
location string
null
name string
null
version string
null
name string
edu/rice/habanero/actors
notifier Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-akka.actor.default-dispatcher-9
javaThreadId long
216
osName string
UCT-akka.actor.default-dispatcher-9
osThreadId long
59151
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
33
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
21.0.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
19527384125
timedOut boolean
false
timeout long: millis
0
address ulong: address
105553435724432
monitorClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
hidden boolean
false
modifiers int
33
name string
scala/concurrent/stm/ccstm/TxnLevelImpl
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
33
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
21.0.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/concurrent/stm/ccstm
notifier Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Thread-36
javaThreadId long
365
osName string
Thread-36
osThreadId long
58895
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
33
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
21.0.1
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
75962806250
timedOut boolean
false
timeout long: millis
0
address ulong: address
105553345634640
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
22
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-1
javaThreadId long
1938
osName string
Executor task launch worker-1
osThreadId long
261155
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
22
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
880512912833
timedOut boolean
false
timeout long: millis
0

JavaMonitorInflate

profiling startTime duration eventThread stackTrace 11 17 21 23 24

Category: Java Application

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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

Configuration enabled stackTrace threshold
default false true 20 ms
profiling true true 10 ms

Field Type Description
monitorClass Class Monitor Class Consider contributing a description to jfreventcollector.
address ulong: address Monitor Address
cause InflateCause Monitor Inflation Cause Cause of inflation

ObjectAllocationInNewTLAB

profiling startTime eventThread stackTrace 11 17 21 23 24

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

Configuration enabled stackTrace
default false true
profiling true true

Field Type Description
objectClass Class Object Class Class of allocated object
allocationSize ulong: bytes Allocation Size
tlabSize ulong: bytes TLAB Size

Examples 3
allocationSize ulong: bytes
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
22
name string
java/net
hidden boolean
true
modifiers int
4112
name string
org.apache.spark.scheduler.CompressedMapStatus$$Lambda+0x000007f8062dbc88/845984580
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
22
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/spark/scheduler
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
12
lineNumber int
500
method Method
descriptor string
(Ljava/lang/Object;)Ljava/lang/Object;
hidden boolean
false
modifiers int
8
name string
allocateInstance
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
java/lang/invoke/DirectMethodHandle
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/lang/invoke
type FrameType
Inlined
truncated boolean
false
startTime long: millis
792226705417
tlabSize ulong: bytes
1014560
allocationSize ulong: bytes
64
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
name string
java/util/LinkedHashMap
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
31
lineNumber int
1078
method Method
descriptor string
(I)Ljava/util/LinkedHashMap;
hidden boolean
false
modifiers int
9
name string
newLinkedHashMap
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
name string
java/util/LinkedHashMap
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
547158042
tlabSize ulong: bytes
1433984
allocationSize ulong: bytes
24
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
49
name string
java/lang/String
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/lang
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
7
lineNumber int
752
method Method
descriptor string
([BII)Ljava/lang/String;
hidden boolean
false
modifiers int
9
name string
newString
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
48
name string
java/lang/StringLatin1
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/lang
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
986602042
tlabSize ulong: bytes
1342200

ObjectAllocationOutsideTLAB

profiling startTime eventThread stackTrace 11 17 21 23 24

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

Configuration enabled stackTrace
default false true
profiling true true

Field Type Description
objectClass Class Object Class Class of allocated object
allocationSize ulong: bytes Allocation Size

Examples 3
allocationSize ulong: bytes
16216
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
[Ljava/lang/Object;
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/lang
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
7
lineNumber int
3513
method Method
descriptor string
([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object;
hidden boolean
false
modifiers int
9
name string
copyOf
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
49
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
21.0.1
name string
java/util
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
2020423875
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
71
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
22
name string
java/nio
type FrameType
Inlined
truncated boolean
false
startTime long: millis
799057699208
allocationSize ulong: bytes
32
objectClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
hidden boolean
false
modifiers int
49
name string
scala/collection/immutable/RedBlackTree$Tree
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
33
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
21.0.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/collection/immutable
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
51
lineNumber int
691
method Method
descriptor string
(Lscala/collection/immutable/RedBlackTree$Tree;)Lscala/collection/immutable/RedBlackTree$Tree;
hidden boolean
false
modifiers int
1
name string
withRight
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
hidden boolean
false
modifiers int
49
name string
scala/collection/immutable/RedBlackTree$Tree
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
33
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
21.0.1
name string
java/net
location string
null
name string
null
version string
null
name string
scala/collection/immutable
type FrameType
Inlined
truncated boolean
false
startTime long: millis
16992450333

JavaErrorThrow

default profiling startTime duration stackTrace 11 17 21 23 24

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

Category: Java Application

An object derived from java.lang.Error has been created. OutOfMemoryErrors are ignored

Configuration enabled stackTrace
default true true
profiling true true

Field Type Description
message string Message Consider contributing a description to jfreventcollector.
thrownClass Class Class Consider contributing a description to jfreventcollector.

Examples 3
message string
'int java.lang.invoke.DirectMethodHandle$Holder.invokeVirtual(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
7
lineNumber int
68
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
33
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
21.0.1
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
4047119750
thrownClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/lang
message string
'void java.lang.invoke.DirectMethodHandle$Holder.invokeInterface(java.lang.Object, java.lang.Object, int)'
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
7
lineNumber int
68
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
33
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
21.0.1
name string
java/lang
type FrameType
Interpreted
truncated boolean
true
startTime long: millis
1512076208
thrownClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/lang
message string
static Lorg/apache/spark/sql/types/ByteType;.<clinit>()V
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
22
name string
java/lang
type FrameType
Inlined
truncated boolean
true
startTime long: millis
869711334875
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
22
name string
java/lang

FileForce

default profiling startTime duration stackTrace 11 17 21 23 24

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

Category: Java Application

Force updates to be written to file

Code Context

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

src/jdk.jfr/share/classes/jdk/jfr/internal/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/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/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,

Configuration enabled stackTrace threshold
default true true 20 ms
profiling true true 10 ms

Field Type Description
path string Path Full path of the file
metaData boolean Update Metadata Whether the file metadata is updated

SocketWrite

default profiling startTime duration stackTrace 11 17 21 23 24

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

Category: Java Application

Writing data to a socket

Code Context

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

src/jdk.jfr/share/classes/jdk/jfr/internal/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/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/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/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

Configuration enabled stackTrace threshold
default true true 20 ms
profiling true true 10 ms

Field Type Description
host string Remote Host
address string Remote Address
port int Remote Port
bytesWritten long: bytes Bytes Written Number of bytes written to the socket

Examples 3
address string
127.0.0.1
bytesWritten long: bytes
100
host string
localhost
port int
56443
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
52
lineNumber int
134
method Method
descriptor string
(JJJLjava/net/SocketAddress;)V
hidden boolean
false
modifiers int
9
name string
emit
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
jdk/internal/event/SocketWriteEvent
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
jdk/internal/event
type FrameType
Interpreted
truncated boolean
true
startTime long: millis
926933218500
address string
127.0.0.1
bytesWritten long: bytes
50
host string
port int
52658
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
584
lineNumber int
191
method Method
descriptor string
([Ljava/nio/ByteBuffer;II)J
hidden boolean
false
modifiers int
1
name string
write
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
name string
sun/nio/ch/SocketChannelImpl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
sun/nio/ch
type FrameType
JIT compiled
truncated boolean
true
startTime long: millis
44014186833
address string
127.0.0.1
bytesWritten long: bytes
10
host string
port int
52394
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
584
lineNumber int
191
method Method
descriptor string
([Ljava/nio/ByteBuffer;II)J
hidden boolean
false
modifiers int
1
name string
write
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
name string
sun/nio/ch/SocketChannelImpl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
sun/nio/ch
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
80208289458

JavaExceptionThrow

startTime duration stackTrace 11 17 21 23 24

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

Category: Java Application

An object derived from java.lang.Exception has been created

Configuration enabled stackTrace
default false true
profiling false true

Field Type Description
message string Message Consider contributing a description to jfreventcollector.
thrownClass Class Class Consider contributing a description to jfreventcollector.

Examples 3
message string
scala.collection.immutable.ArraySeq$ofUnit
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
40
lineNumber int
298
method Method
descriptor string
(Ljava/lang/String;Ljava/lang/Throwable;)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
33
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
21.0.1
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
591996583
thrownClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
name string
java/lang/ClassNotFoundException
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/lang
message string
scala.collection.immutable.SeqOps
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
40
lineNumber int
298
method Method
descriptor string
(Ljava/lang/String;Ljava/lang/Throwable;)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
33
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
21.0.1
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
659005833
thrownClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
name string
java/lang/ClassNotFoundException
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/lang
message string
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
71
lineNumber int
395
method Method
descriptor string
(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
hidden boolean
false
modifiers int
4
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Throwable
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/lang
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
792248644333
thrownClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/net
hidden boolean
false
modifiers int
1
name string
scala/runtime/NonLocalReturnControl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/net
location string
null
name string
null
version string
null
name string
scala/runtime

FileWrite

default profiling startTime duration stackTrace 11 17 21 23 24

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

Category: Java Application

Appearing in: G1GC, ParallelGC, ShenandoahGC, ZGC

Missing in: SerialGC

Writing data to a file

Code Context

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

src/jdk.jfr/share/classes/jdk/jfr/internal/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/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/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,

Configuration enabled stackTrace threshold
default true true 20 ms
profiling true true 10 ms

Field Type Description
path string Path Full path of the file
bytesWritten long: bytes Bytes Written Number of bytes written to the file

Examples 3
bytesWritten long: bytes
8192
path string
harness-141003-16632656921422798882/apache-spark/log-regression/input.txt
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
678
lineNumber int
154
method Method
descriptor string
(Ljava/nio/ByteBuffer;)I
hidden boolean
false
modifiers int
1
name string
write
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
sun/nio/ch/FileChannelImpl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
sun/nio/ch
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
865197036833
bytesWritten long: bytes
120
path string
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
171
lineNumber int
103
method Method
descriptor string
([BII)V
hidden boolean
false
modifiers int
1
name string
write
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
name string
java/io/FileOutputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/io
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
56404662458
bytesWritten long: bytes
16384
path string
harness-124802-11372319207631724376/apache-spark/lib/spark-sql_2.13-3.2.0.jar
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
678
lineNumber int
154
method Method
descriptor string
(Ljava/nio/ByteBuffer;)I
hidden boolean
false
modifiers int
1
name string
write
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
name string
sun/nio/ch/FileChannelImpl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
sun/nio/ch
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
2721627083

SocketRead

default profiling startTime duration stackTrace 11 17 21 23 24

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

Category: Java Application

Reading data from a socket

Code Context

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

src/jdk.jfr/share/classes/jdk/jfr/internal/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/events/SocketReadEvent.java:

@Name(Type.EVENT_NAME_PREFIX + "SocketRead")
@Label("Socket Read")
@Category("Java Application")
@Description("Reading data from a socket")
public final class SocketReadEvent extends AbstractJDKEvent {

    // The order of these fields must be the same as the parameters in
    // EventHandler::write(..., String, String, int, long, long, boolean)

    @Label("Remote Host")
    public String host;

    @Label("Remote Address")
    public String address;

    @Label("Remote Port")

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

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

public final class Handlers {
    public 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/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,

Configuration enabled stackTrace threshold
default true true 20 ms
profiling true true 10 ms

Field Type Description
host string Remote Host
address string Remote Address
port int Remote Port
timeout long: millis Timeout Value
bytesRead long: bytes Bytes Read Number of bytes read from the socket
endOfStream boolean End of Stream If end of stream was reached

Examples 3
address string
127.0.0.1
bytesRead long: bytes
65
endOfStream boolean
false
host string
port int
52289
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
846
lineNumber int
72
method Method
descriptor string
(Ljava/nio/ByteBuffer;)I
hidden boolean
false
modifiers int
1
name string
read
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
name string
sun/nio/ch/SocketChannelImpl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
sun/nio/ch
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
36473815250
timeout long: millis
0
address string
127.0.0.1
bytesRead long: bytes
26
endOfStream boolean
false
host string
127.0.0.1
port int
56489
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
70
lineNumber int
142
method Method
descriptor string
(JJJLjava/net/SocketAddress;J)V
hidden boolean
false
modifiers int
9
name string
emit
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
jdk/internal/event/SocketReadEvent
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
jdk/internal/event
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
933488506792
timeout long: millis
0
address string
127.0.0.1
bytesRead long: bytes
65
endOfStream boolean
false
host string
port int
52658
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
846
lineNumber int
72
method Method
descriptor string
(Ljava/nio/ByteBuffer;)I
hidden boolean
false
modifiers int
1
name string
read
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
name string
sun/nio/ch/SocketChannelImpl
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
sun/nio/ch
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
51026146875
timeout long: millis
0

FileRead

default profiling startTime duration stackTrace 11 17 21 23 24

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

Category: Java Application

Appearing in: G1GC, SerialGC, ZGC

Missing in: ParallelGC, ShenandoahGC

Reading data from a file

Code Context

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

src/jdk.jfr/share/classes/jdk/jfr/internal/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/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/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,

Configuration enabled stackTrace threshold
default true true 20 ms
profiling true true 10 ms

Field Type Description
path string Path Full path of the file
bytesRead long: bytes Bytes Read Number of bytes read from the file (possibly 0)
endOfFile boolean End of File If end of file was reached

Examples 3
bytesRead long: bytes
65536
endOfFile boolean
false
path string
[...]/code/experiments/jfreventcollector/harness-141003-16632656921422798882/apache-spark/log-regression/input.txt
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
162
lineNumber int
113
method Method
descriptor string
([BII)I
hidden boolean
false
modifiers int
1
name string
read
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/io/FileInputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/io
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
871912060917
bytesRead long: bytes
4
endOfFile boolean
false
path string
[...]/code/experiments/jfreventcollector/harness-124931-6974251686310067154/apache-spark/lib/curator-recipes-2.13.0.jar
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
114
lineNumber int
114
method Method
descriptor string
([BII)I
hidden boolean
false
modifiers int
1
name string
read
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
name string
java/io/RandomAccessFile
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/io
type FrameType
Inlined
truncated boolean
false
startTime long: millis
30635721500
bytesRead long: bytes
4
endOfFile boolean
false
path string
[...]/code/experiments/jfreventcollector/harness-124622-12434569844652140370/apache-spark/lib/avro-ipc-1.10.2.jar
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
114
lineNumber int
114
method Method
descriptor string
([BII)I
hidden boolean
false
modifiers int
1
name string
read
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
name string
java/io/RandomAccessFile
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/io
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
28227785042

Java Application Statistics

JavaThreadStatistics

default profiling startTime duration every chunk 11 17 21 23 24

Category: Java Application / Statistics

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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());

Configuration enabled period
default true 1000 ms
profiling true 1000 ms

Field Type Description
activeCount long Active Threads Number of live active threads including both daemon and non-daemon threads
daemonCount long Daemon Threads Number of live daemon threads
accumulatedCount long Accumulated Threads Number of threads created and also started since JVM start
peakCount long Peak Threads Peak live thread count since JVM start or when peak count was reset

Examples 3
accumulatedCount long
311
activeCount long
65
daemonCount long
63
peakCount long
84
startTime long: millis
51343858500
accumulatedCount long
2411
activeCount long
85
daemonCount long
76
peakCount long
314
startTime long: millis
923230656667
accumulatedCount long
416
activeCount long
143
daemonCount long
134
peakCount long
143
startTime long: millis
79065166792

ClassLoadingStatistics

default profiling startTime duration every chunk 11 17 21 23 24

Category: Java Application / Statistics

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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 ?

Configuration enabled period
default true 1000 ms
profiling true 1000 ms

Field Type Description
loadedClassCount long Loaded Class Count Number of classes loaded since JVM start
unloadedClassCount long Unloaded Class Count Number of classes unloaded since JVM start

Examples 3
loadedClassCount long
95293
startTime long: millis
840999736583
unloadedClassCount long
2411
loadedClassCount long
14525
startTime long: millis
37414477792
unloadedClassCount long
3144
loadedClassCount long
7912
startTime long: millis
34151957458
unloadedClassCount long
2875

ClassLoaderStatistics

default profiling startTime duration every chunk 11 17 21 23 24

Category: Java Application / Statistics

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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;

Configuration enabled period
default true everyChunk
profiling true everyChunk

Field Type Description
classLoader ClassLoader Class Loader Consider contributing a description to jfreventcollector.
parentClassLoader ClassLoader Parent Class Loader Consider contributing a description to jfreventcollector.
classLoaderData ulong: address ClassLoaderData Pointer Pointer to the ClassLoaderData structure in the JVM
classCount long Classes Number of loaded classes
chunkSize ulong: bytes Total Chunk Size Total size of all allocated metaspace chunks (each chunk has several blocks)
blockSize ulong: bytes Total Block Size Total size of all allocated metaspace blocks (each chunk has several blocks)
hiddenClassCount long 15+ Hidden Classes Number of hidden classes
hiddenChunkSize ulong: bytes 15+ Total Hidden Classes Chunk Size Total size of all allocated metaspace chunks for hidden classes (each chunk has several blocks)
hiddenBlockSize ulong: bytes 15+ Total Hidden Classes Block Size Total size of all allocated metaspace blocks for hidden classes (each chunk has several blocks)

Examples 3
blockSize ulong: bytes
7672
chunkSize ulong: bytes
9216
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
22
name string
java/net
hidden boolean
false
modifiers int
1
name string
org/codehaus/commons/compiler/util/reflect/ByteArrayClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/net
location string
null
name string
null
version string
null
name string
org/codehaus/commons/compiler/util/reflect
classLoaderData ulong: address
105553268133792
hiddenBlockSize ulong: bytes
0
hiddenChunkSize ulong: bytes
0
hiddenClassCount long
0
parentClassLoader ClassLoader
null
startTime long: millis
791772644833
blockSize ulong: bytes
17920976
chunkSize ulong: bytes
18277376
classCount long
2538
classLoader ClassLoader
null
classLoaderData ulong: address
105553176969696
hiddenBlockSize ulong: bytes
267936
hiddenChunkSize ulong: bytes
445440
hiddenClassCount long
145
parentClassLoader ClassLoader
null
startTime long: millis
30201830167
blockSize ulong: bytes
936720
chunkSize ulong: bytes
942080
classCount long
243
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
33
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
21.0.1
name string
java/net
classLoaderData ulong: address
105553169983168
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
32
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
21.0.1
name string
jdk/internal/loader
startTime long: millis
30586574708

ThreadAllocationStatistics

default profiling startTime every chunk 11 17 21 23 24

Category: Java Application / Statistics

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

  GrowableArray<jlong> allocated(initial_size);
  GrowableArray<traceid> thread_ids(initial_size);
  JfrTicks time_stamp = JfrTicks::now();
  JfrJavaThreadIterator iter;
  while (iter.has_next()) {
    JavaThread* const jt = iter.next();
    assert(jt != NULL, "invariant");
    allocated.append(jt->cooked_allocated_bytes());
    thread_ids.append(JFR_THREAD_ID(jt));
  }

  // Write allocation statistics to buffer.
  for(int i = 0; i < thread_ids.length(); i++) {
    EventThreadAllocationStatistics event(UNTIMED);
    event.set_allocated(allocated.at(i));
    event.set_thread(thread_ids.at(i));
    event.set_endtime(time_stamp);
    event.commit();
  }
}

/**
 *  PhysicalMemory event represents:
 *
 *  @totalSize == The amount of physical memory (hw) installed and reported by the OS, in bytes.

Configuration enabled period
default true everyChunk
profiling true everyChunk

Field Type Description
allocated ulong: bytes Allocated Approximate number of bytes allocated since thread start
thread Thread Thread Consider contributing a description to jfreventcollector.

Examples 3
allocated ulong: bytes
51937792
startTime long: millis
16763680292
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-akka.actor.default-dispatcher-7
javaThreadId long
148
osName string
UCT-akka.actor.default-dispatcher-7
osThreadId long
58891
virtual boolean
false
allocated ulong: bytes
661688
startTime long: millis
791772808042
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
dispatcher-event-loop-4
javaThreadId long
1601
osName string
dispatcher-event-loop-4
osThreadId long
145443
virtual boolean
false
allocated ulong: bytes
105279504
startTime long: millis
14906032000
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-akka.actor.internal-dispatcher-2
javaThreadId long
91
osName string
UCT-akka.actor.internal-dispatcher-2
osThreadId long
40455
virtual boolean
false

ExceptionStatistics

default profiling startTime duration stackTrace 11 17 21 23 24

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

Configuration enabled period
default true 1000 ms
profiling true 1000 ms

Field Type Description
throwables long Exceptions Created

Examples 3
stackTrace StackTrace
null
startTime long: millis
29097613333
throwables long
3961
startTime long: millis
884659131875
throwables long
2338964
stackTrace StackTrace
null
startTime long: millis
62484751958
throwables long
204820

DirectBufferStatistics

default profiling startTime duration stackTrace 15 17 21 23 24

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

Configuration enabled period
default true 5 s
profiling true 5 s

Examples 3
startTime long: millis
798811728417
stackTrace StackTrace
null
startTime long: millis
27323890208
stackTrace StackTrace
null
startTime long: millis
93418778375

Java Development Kit

X509Certificate

startTime duration stackTrace 11 17 21 23 24

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

Category: Java Development Kit / Security

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

Details of X.509 Certificate parsed by JDK

Code Context

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

src/jdk.jfr/share/classes/jdk/jfr/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;
}

src/java.base/share/classes/sun/security/provider/X509Factory.java:

                length = (highByte << 24 ) | (nextByte << 16) |
                        (midByte << 8) | lowByte;
            } else { // ignore longer length forms
                throw new IOException("Invalid BER/DER data (too huge?)");
            }
            if (readFully(is, bout, length) != length) {
                throw new IOException("Incomplete BER/DER data");
            }
        }
        return tag;
    }

    private void commitEvent(X509CertImpl info) {
        X509CertificateEvent xce = new X509CertificateEvent();
        if (xce.shouldCommit() || EventHelper.isLoggingSecurity()) {
            PublicKey pKey = info.getPublicKey();
            String algId = info.getSigAlgName();
            String serNum = info.getSerialNumber().toString(16);
            String subject = info.getSubjectDN().getName();
            String issuer = info.getIssuerDN().getName();
            String keyType = pKey.getAlgorithm();
            int length = KeyUtil.getKeySize(pKey);
            int hashCode = info.hashCode();
            long beginDate = info.getNotBefore().getTime();
            long endDate = info.getNotAfter().getTime();

Configuration enabled stackTrace
default false true
profiling false true

Field Type Description
algorithm string Signature Algorithm
serialNumber string Serial Number Consider contributing a description to jfreventcollector.
subject string Subject Consider contributing a description to jfreventcollector.
issuer string Issuer Consider contributing a description to jfreventcollector.
keyType string Key Type Consider contributing a description to jfreventcollector.
keyLength int Key Length
certificateId long: certificateId Certificate Id
validFrom long: epochmillis Valid From
validUntil long: epochmillis Valid Until

Examples 1
algorithm string
SHA1withDSA
certificateId long: certificateId
3045411335
issuer string
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
keyLength int
1024
keyType string
DSA
serialNumber string
46101f71
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
187
lineNumber int
127
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
22
name string
sun/security/jca
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
868429966042
subject string
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
validFrom long: epochmillis
1175461745000
validUntil long: epochmillis
4329061745000

TLSHandshake

startTime duration stackTrace 11 17 21 23 24

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

Category: Java Development Kit / Security

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/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/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/java.base/share/classes/jdk/internal/event/TLSHandshakeEvent.java:

package jdk.internal.event;

/**
 * Event recording details of successful TLS handshakes.
 */

public final class TLSHandshakeEvent extends Event {
    public String peerHost;
    public int peerPort;
    public String protocolVersion;
    public String cipherSuite;
    public long certificateId;
}

Configuration enabled stackTrace
default false true
profiling false true

Field Type Description
peerHost string Peer Host Consider contributing a description to jfreventcollector.
peerPort int Peer Port
protocolVersion string Protocol Version Consider contributing a description to jfreventcollector.
cipherSuite string Cipher Suite Consider contributing a description to jfreventcollector.
certificateId long: certificateId Certificate Id Peer Certificate Id

X509Validation

startTime duration stackTrace 11 17 21 23 24

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

Category: Java Development Kit / Security

Serial numbers from X.509 Certificates forming chain of trust

Code Context

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

src/jdk.jfr/share/classes/jdk/jfr/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;
}

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

Configuration enabled stackTrace
default false true
profiling false true

Field Type Description
certificateId long: certificateId Certificate Id
certificatePosition int Certificate Position Certificate position in chain of trust, 1 = trust anchor
validationCounter long Validation Counter

SecurityPropertyModification

startTime duration stackTrace 11 17 21 23 24

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

Category: Java Development Kit / Security

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

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

    /*

Configuration enabled stackTrace
default false true
profiling false true

Field Type Description
key string Key Consider contributing a description to jfreventcollector.
value string Value Consider contributing a description to jfreventcollector.

Operating System

OSInformation

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Operating System

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

  event.set_jvmVersion(VM_Version::internal_vm_info_string());
  event.set_javaArguments(Arguments::java_command());
  event.set_jvmArguments(Arguments::jvm_args());
  event.set_jvmFlags(Arguments::jvm_flags());
  event.set_jvmStartTime(Management::vm_init_done_time());
  event.set_pid(os::current_process_id());
  event.commit();
 }

TRACE_REQUEST_FUNC(OSInformation) {
  ResourceMark rm;
  char* os_name = NEW_RESOURCE_ARRAY(char, 2048);
  JfrOSInterface::os_version(&os_name);
  EventOSInformation event;
  event.set_osVersion(os_name);
  event.commit();
}

TRACE_REQUEST_FUNC(VirtualizationInformation) {
  EventVirtualizationInformation event;
  event.set_name(JfrOSInterface::virtualization_name());
  event.commit();
}

TRACE_REQUEST_FUNC(ModuleRequire) {

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
osVersion string OS Version

Examples 3
osVersion string
uname: Darwin 24.0.0 Darwin Kernel Version 24.0.0: Mon Aug 12 20:49:48 PDT 2024; root:xnu-11215.1.10~2/RELEASE_ARM64_T8103 arm64
startTime long: millis
904000710208
osVersion string
uname: Darwin 23.2.0 Darwin Kernel Version 23.2.0: Wed Nov 15 21:53:34 PST 2023; root:xnu-10002.61.3~2/RELEASE_ARM64_T8103 arm64
startTime long: millis
52080830500
osVersion string
uname: Darwin 23.2.0 Darwin Kernel Version 23.2.0: Wed Nov 15 21:53:34 PST 2023; root:xnu-10002.61.3~2/RELEASE_ARM64_T8103 arm64
startTime long: millis
39218559875

VirtualizationInformation

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Operating System

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

  event.commit();
 }

TRACE_REQUEST_FUNC(OSInformation) {
  ResourceMark rm;
  char* os_name = NEW_RESOURCE_ARRAY(char, 2048);
  JfrOSInterface::os_version(&os_name);
  EventOSInformation event;
  event.set_osVersion(os_name);
  event.commit();
}

TRACE_REQUEST_FUNC(VirtualizationInformation) {
  EventVirtualizationInformation event;
  event.set_name(JfrOSInterface::virtualization_name());
  event.commit();
}

TRACE_REQUEST_FUNC(ModuleRequire) {
  JfrModuleEvent::generate_module_dependency_events();
}

TRACE_REQUEST_FUNC(ModuleExport) {
  JfrModuleEvent::generate_module_export_events();
}

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
name string Name

Examples 3
name string
No virtualization detected
startTime long: millis
30585953083
name string
No virtualization detected
startTime long: millis
75961240958
name string
No virtualization detected
startTime long: millis
817356592875

InitialEnvironmentVariable

default profiling startTime end of every chunk 11 17 21 23 24

Category: Operating System

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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) {

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
key string Key
value string Value

Examples 3
key string
SDKMAN_CANDIDATES_DIR
startTime long: millis
17889813583
value string
[...]/.sdkman/candidates
key string
JAVA_HOME
startTime long: millis
798650496458
value string
[...]/.sdkman/candidates/java/current
key string
JAVA_HOME
startTime long: millis
364250500
value string
[...]/.sdkman/candidates/java/current

SystemProcess

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Operating System

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

    while (processes != NULL) {
      SystemProcess* tmp = processes;
      const char* info = processes->command_line();
      if (info == NULL) {
         info = processes->path();
      }
      if (info == NULL) {
         info = processes->name();
      }
      if (info == NULL) {
         info = "?";
      }
      jio_snprintf(pid_buf, sizeof(pid_buf), "%d", processes->pid());
      EventSystemProcess event(UNTIMED);
      event.set_pid(pid_buf);
      event.set_commandLine(info);
      event.set_starttime(start_time);
      event.set_endtime(end_time);
      event.commit();
      processes = processes->next();
      delete tmp;
    }
  }
}

Configuration enabled period
default true endChunk
profiling true endChunk

Field Type Description
pid string Process Identifier
commandLine string Command Line

Examples 3
commandLine string
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Support/mds
pid string
562
startTime long: millis
16726490792
commandLine string
/usr/sbin/notifyd
pid string
597
startTime long: millis
14787855958
commandLine string
/usr/libexec/nsurlsessiond
pid string
470
startTime long: millis
795726520208

CPUInformation

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Operating System / Processor

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

TRACE_REQUEST_FUNC(CPUInformation) {
  CPUInformation cpu_info;
  int ret_val = JfrOSInterface::cpu_information(cpu_info);
  if (ret_val == OS_ERR) {
    log_debug(jfr, system)( "Unable to generate requestable event CPUInformation");
    return;
  }
  if (ret_val == FUNCTIONALITY_NOT_IMPLEMENTED) {
     return;
  }
  if (ret_val == OS_OK) {
    EventCPUInformation event;
    event.set_cpu(cpu_info.cpu_name());
    event.set_description(cpu_info.cpu_description());
    event.set_sockets(cpu_info.number_of_sockets());
    event.set_cores(cpu_info.number_of_cores());
    event.set_hwThreads(cpu_info.number_of_hardware_threads());
    event.commit();
  }
}

TRACE_REQUEST_FUNC(CPULoad) {
  double u = 0; // user time

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
cpu string Type
description string Description
sockets uint Sockets
cores uint Cores
hwThreads uint Hardware Threads

Examples 3
cores uint
8
cpu string
AArch64
description string
AArch64 0x61:0x0:0x1b588bb3:0, fp, asimd, aes, pmull, sha1, sha256, crc32, lse, sha3, sha512
hwThreads uint
8
sockets uint
8
startTime long: millis
914271614833
cores uint
8
cpu string
AArch64
description string
AArch64 0x61:0x0:0x1b588bb3:0, fp, asimd, aes, pmull, sha1, sha256, crc32, lse, sha3, sha512
hwThreads uint
8
sockets uint
8
startTime long: millis
15755099875
cores uint
8
cpu string
AArch64
description string
AArch64 0x61:0x0:0x1b588bb3:0, fp, asimd, aes, pmull, sha1, sha256, crc32, lse, sha3, sha512
hwThreads uint
8
sockets uint
8
startTime long: millis
39218572375

CPUTimeStampCounter

default profiling startTime duration end of every chunk 11 17 21 23 24

Category: Operating System / Processor

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

    event.commit();
  }
}

TRACE_REQUEST_FUNC(ThreadCPULoad) {
  JfrThreadCPULoadEvent::send_events();
}

TRACE_REQUEST_FUNC(NetworkUtilization) {
  JfrNetworkUtilization::send_events();
}

TRACE_REQUEST_FUNC(CPUTimeStampCounter) {
  EventCPUTimeStampCounter event;
  event.set_fastTimeEnabled(JfrTime::is_ft_enabled());
  event.set_fastTimeAutoEnabled(JfrTime::is_ft_supported());
  event.set_osFrequency(os::elapsed_frequency());
  event.set_fastTimeFrequency(JfrTime::frequency());
  event.commit();
}

TRACE_REQUEST_FUNC(SystemProcess) {
  char pid_buf[16];
  SystemProcess* processes = NULL;
  int num_of_processes = 0;

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
fastTimeEnabled boolean Fast Time
fastTimeAutoEnabled boolean Trusted Platform
osFrequency long: hertz OS Frequency
fastTimeFrequency long: hertz Fast Time Frequency

Examples 3
fastTimeAutoEnabled boolean
false
fastTimeEnabled boolean
false
fastTimeFrequency long: hertz
1000000000
osFrequency long: hertz
1000000000
startTime long: millis
17889821333
fastTimeAutoEnabled boolean
false
fastTimeEnabled boolean
false
fastTimeFrequency long: hertz
1000000000
osFrequency long: hertz
1000000000
startTime long: millis
75961252333
fastTimeAutoEnabled boolean
false
fastTimeEnabled boolean
false
fastTimeFrequency long: hertz
1000000000
osFrequency long: hertz
1000000000
startTime long: millis
817356620375

CPULoad

default profiling startTime duration every chunk 11 17 21 23 24

Category: Operating System / Processor

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

Configuration enabled period
default true 1000 ms
profiling true 1000 ms

Field Type Description
jvmUser float: percentage JVM User
jvmSystem float: percentage JVM System
machineTotal float: percentage Machine Total

Examples 3
jvmSystem float: percentage
2.3451833E-4
jvmUser float: percentage
0.004804558
machineTotal float: percentage
0.90932983
startTime long: millis
58103833292
jvmSystem float: percentage
6.5429875E-4
jvmUser float: percentage
0.0038061142
machineTotal float: percentage
0.9950434
startTime long: millis
902927711208
jvmSystem float: percentage
3.0066687E-4
jvmUser float: percentage
0.0043566697
machineTotal float: percentage
0.89692307
startTime long: millis
11595033667

ThreadCPULoad

default profiling startTime duration eventThread every chunk 11 17 21 23 24

Category: Operating System / Processor

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

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

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

int JfrThreadCPULoadEvent::get_processor_count() {
  int cur_processor_count = os::active_processor_count();
  int last_processor_count = _last_active_processor_count;
  _last_active_processor_count = cur_processor_count;

  // If the number of processors decreases, we don't know at what point during
  // the sample interval this happened, so use the largest number to try
  // to avoid percentages above 100%
  return MAX2(cur_processor_count, last_processor_count);
}

// Returns false if the thread has not been scheduled since the last call to updateEvent
// (i.e. the delta for both system and user time is 0 milliseconds)
bool JfrThreadCPULoadEvent::update_event(EventThreadCPULoad& event, JavaThread* thread, jlong cur_wallclock_time, int processor_count) {
  JfrThreadLocal* const tl = thread->jfr_thread_local();

  jlong cur_cpu_time = os::thread_cpu_time(thread, true);
  jlong prev_cpu_time = tl->get_cpu_time();

  jlong prev_wallclock_time = tl->get_wallclock_time();
  tl->set_wallclock_time(cur_wallclock_time);

  // Threshold of 1 ms
  if (cur_cpu_time - prev_cpu_time < 1 * NANOSECS_PER_MILLISEC) {
    return false;

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

  Thread* periodic_thread = Thread::current();
  JfrThreadLocal* const periodic_thread_tl = periodic_thread->jfr_thread_local();
  traceid periodic_thread_id = periodic_thread_tl->thread_id();
  const int processor_count = JfrThreadCPULoadEvent::get_processor_count();
  JfrTicks event_time = JfrTicks::now();
  jlong cur_wallclock_time = JfrThreadCPULoadEvent::get_wallclock_time();

  JfrJavaThreadIterator iter;
  int number_of_threads = 0;
  while (iter.has_next()) {
    JavaThread* const jt = iter.next();
    assert(jt != NULL, "invariant");
    ++number_of_threads;
    EventThreadCPULoad event(UNTIMED);
    if (JfrThreadCPULoadEvent::update_event(event, jt, cur_wallclock_time, processor_count)) {
      event.set_starttime(event_time);
      if (jt != periodic_thread) {
        // Commit reads the thread id from this thread's trace data, so put it there temporarily
        periodic_thread_tl->set_thread_id(JFR_THREAD_ID(jt));
      } else {
        periodic_thread_tl->set_thread_id(periodic_thread_id);
      }
      event.commit();
    }
  }
  log_trace(jfr)("Measured CPU usage for %d threads in %.3f milliseconds", number_of_threads,
    (double)(JfrTicks::now() - event_time).milliseconds());
  // Restore this thread's thread id
  periodic_thread_tl->set_thread_id(periodic_thread_id);
}

void JfrThreadCPULoadEvent::send_event_for_thread(JavaThread* jt) {
  EventThreadCPULoad event;
  if (event.should_commit()) {
    if (update_event(event, jt, get_wallclock_time(), get_processor_count())) {
      event.commit();
    }
  }
}

src/hotspot/share/jfr/periodic/jfrThreadCPULoadEvent.hpp:

#ifndef SHARE_JFR_PERIODIC_JFRTHREADCPULOADEVENT_HPP
#define SHARE_JFR_PERIODIC_JFRTHREADCPULOADEVENT_HPP

#include "jni.h"
#include "memory/allocation.hpp"

class JavaThread;
class EventThreadCPULoad;

class JfrThreadCPULoadEvent : public AllStatic {
  static int _last_active_processor_count;
 public:
  static jlong get_wallclock_time();
  static int get_processor_count();
  static bool update_event(EventThreadCPULoad& event, JavaThread* thread, jlong cur_wallclock_time, int processor_count);
  static void send_events();
  static void send_event_for_thread(JavaThread* jt);
};

#endif // SHARE_JFR_PERIODIC_JFRTHREADCPULOADEVENT_HPP

Configuration enabled period
default true 10 s
profiling true 10 s

Field Type Description
user float: percentage User Mode CPU Load User mode thread CPU load
system float: percentage System Mode CPU Load System mode thread CPU load

Examples 3
startTime long: millis
845382183417
system float: percentage
1.4312403E-5
user float: percentage
1.1620784E-4
startTime long: millis
10643453375
system float: percentage
0.0011874962
user float: percentage
0.011394605
startTime long: millis
11595339875
system float: percentage
3.588174E-4
user float: percentage
0.006239521

ThreadContextSwitchRate

default profiling startTime duration every chunk 11 17 21 23 24

Category: Operating System / Processor

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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()) {                                \

Configuration enabled period
default true 10 s
profiling true 10 s

Field Type Description
switchRate float: hertz Switch Rate Number of context switches per second

Examples 3
startTime long: millis
24972492417
switchRate float: hertz
22623.047
startTime long: millis
873949948208
switchRate float: hertz
12028.735
startTime long: millis
52507605667
switchRate float: hertz
45233.6

NetworkUtilization

default profiling startTime every chunk 11 17 21 23 24

Category: Operating System / Network

No additional description available. Write your own and contribute it to jfreventcollector or directly to the OpenJDK.

Code Context

The event is likely defined and utilized 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;
    }

Configuration enabled period
default true 5 s
profiling true 5 s

Field Type Description
networkInterface NetworkInterfaceName Network Interface Network Interface Name
readRate long: bits-per-second Read Rate Number of incoming bits per second
writeRate long: bits-per-second Write Rate Number of outgoing bits per second

Examples 3
networkInterface NetworkInterfaceName
lo0
readRate long: bits-per-second
34336304
startTime long: millis
50339440667
writeRate long: bits-per-second
34336304
networkInterface NetworkInterfaceName
lo0
readRate long: bits-per-second
8088
startTime long: millis
916746363833
writeRate long: bits-per-second
8088
networkInterface NetworkInterfaceName
ap1
readRate long: bits-per-second
0
startTime long: millis
84103802000
writeRate long: bits-per-second
1624

PhysicalMemory

default profiling startTime duration every chunk 11 17 21 23 24

Category: Operating System / Memory

OS Physical Memory

Code Context

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

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

 *  PhysicalMemory event represents:
 *
 *  @totalSize == The amount of physical memory (hw) installed and reported by the OS, in bytes.
 *  @usedSize  == The amount of physical memory currently in use in the system (reserved/committed), in bytes.
 *
 *  Both fields are systemwide, i.e. represents the entire OS/HW environment.
 *  These fields do not include virtual memory.
 *
 *  If running inside a guest OS on top of a hypervisor in a virtualized environment,
 *  the total memory reported is the amount of memory configured for the guest OS by the hypervisor.
 */
TRACE_REQUEST_FUNC(PhysicalMemory) {
  u8 totalPhysicalMemory = os::physical_memory();
  EventPhysicalMemory event;
  event.set_totalSize(totalPhysicalMemory);
  event.set_usedSize(totalPhysicalMemory - os::available_memory());
  event.commit();
}

TRACE_REQUEST_FUNC(JavaThreadStatistics) {
  EventJavaThreadStatistics event;
  event.set_activeCount(ThreadService::get_live_thread_count());
  event.set_daemonCount(ThreadService::get_daemon_thread_count());
  event.set_accumulatedCount(ThreadService::get_total_thread_count());
  event.set_peakCount(ThreadService::get_peak_thread_count());

Configuration enabled period
default true everyChunk
profiling true everyChunk

Field Type Description
totalSize ulong: bytes Total Size Total amount of physical memory available to OS
usedSize ulong: bytes Used Size Total amount of physical memory in use

Examples 3
startTime long: millis
30586739000
totalSize ulong: bytes
17179869184
usedSize ulong: bytes
17037836288
startTime long: millis
14906038542
totalSize ulong: bytes
17179869184
usedSize ulong: bytes
17092460544
startTime long: millis
836937750792
totalSize ulong: bytes
17179869184
usedSize ulong: bytes
17016930304

ProcessStart

default profiling startTime duration stackTrace 15 17 21 23 24

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

Category: Operating System

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

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

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;

Configuration enabled stackTrace
default true true
profiling true true

Field Type Description
pid long Process Id
directory string Directory Consider contributing a description to jfreventcollector.
command string Command Consider contributing a description to jfreventcollector.

Examples 1
command string
rm -rf [...]/code/experiments/jfreventcollector/harness-141003-16632656921422798882/apache-spark/gauss-mix/spark-f58721a2-6206-4716-9555-5f0b2c966476/userFiles-4cfe32a7-54fe-452e-9cac-9aa1f4911677
directory string
null
pid long
57856
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
54
lineNumber int
161
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
22
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
22
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
894828634292

Types

Bytecode

14+

Bytecode Instruction

Field Type Description
bytecode string Instruction

Examples 3
invokeinterface
invokeinterface
instanceof

CalleeMethod

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
type string Class
name string Method Name
descriptor string Method Descriptor

Examples 3
descriptor string
(I)Ljava/lang/AbstractStringBuilder;
name string
append
type string
java/lang/AbstractStringBuilder
descriptor string
(J)V
name string
putUncheckedLong
type string
jdk/jfr/internal/event/EventWriter
descriptor string
(Ljava/lang/Object;)I
name string
typeCode
type string
scala/runtime/BoxesRunTime

ChunkHeader

14+

Chunk Header No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
payload array byte Payload

Class

Java Class

Field Type Description
classLoader ClassLoader Class Loader Consider contributing a description to jfreventcollector.
name Symbol Name Consider contributing a description to jfreventcollector.
package Package Package Consider contributing a description to jfreventcollector.
modifiers int Access Modifiers
hidden boolean 15+ Hidden

ClassLoader

Java Class Loader

Field Type Description
type Class Type Consider contributing a description to jfreventcollector.
name Symbol Name Consider contributing a description to jfreventcollector.

CodeBlobType

Code Blob Type No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
type string Type

Examples 3
CodeHeap 'non-profiled nmethods'
CodeHeap 'profiled nmethods'
CodeHeap 'non-nmethods'

CompilerPhaseType

Compiler Phase Type No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
phase string Phase

CompilerType

14+

Compiler Type No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
compiler string Compiler

Examples 3
c2
c1
c2

CopyFailed

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

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+

Deoptimization Action No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
action string Action

Examples 3
maybe_recompile
maybe_recompile
maybe_recompile

DeoptimizationReason

14+

Deoptimization Reason No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
reason string Reason

Examples 3
bimorphic_or_optimized_type_check
bimorphic_or_optimized_type_check
class_check

FlagValueOrigin

Flag Value Origin No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
origin string Origin

Examples 3
Default
Default
Default

FrameType

Frame type No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
description string Description

Examples 3
Inlined
Interpreted
JIT compiled

G1EvacuationStatistics

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

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 2
allocated ulong: bytes
513936
directAllocated ulong: bytes
74832
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
865
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
469784
wasted ulong: bytes
2760
allocated ulong: bytes
0
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
937
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
0
wasted ulong: bytes
0

G1HeapRegionType

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

G1 Heap Region Type No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
type string Type

Examples 2
Old
Free

G1YCType

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

G1 YC Type No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
type string Type

Examples 1
Normal

GCCause

GC Cause No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
cause string Cause

Examples 3
G1 Humongous Allocation
Allocation Failure
Allocation Failure

GCName

GC Name No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
name string Name

Examples 3
G1New
G1Old
ParallelScavenge

GCThresholdUpdater

GC Threshold Updater No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
updater string Updater

Examples 3
compute_new_size
compute_new_size
compute_new_size

GCWhen

GC When No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
when string When

Examples 3
Before GC
After GC
After GC

InflateCause

Inflation Cause No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
cause string Cause

MetadataType

Metadata Type No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
type string Type

Examples 3
Metadata
Class
Class

MetaspaceObjectType

Appearing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

Missing in: G1GC

Metaspace Object Type No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
type string Type

Examples 3
ConstantPool
ConstMethod
Method

MetaspaceSizes

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
committed ulong: bytes Committed Committed memory for this space
used ulong: bytes Used Bytes allocated by objects in the space
reserved ulong: bytes Reserved Reserved memory for this space

Examples 3
committed ulong: bytes
640811008
reserved ulong: bytes
1677721600
used ulong: bytes
637579320
committed ulong: bytes
553254912
reserved ulong: bytes
603979776
used ulong: bytes
551538296
committed ulong: bytes
87556096
reserved ulong: bytes
1073741824
used ulong: bytes
86041024

Method

Java Method

Field Type Description
type Class Type Consider contributing a description to jfreventcollector.
name Symbol Name Consider contributing a description to jfreventcollector.
descriptor Symbol Descriptor Consider contributing a description to jfreventcollector.
modifiers int Access Modifiers
hidden boolean Hidden

Module

Module No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
name Symbol Name Consider contributing a description to jfreventcollector.
version Symbol Version Consider contributing a description to jfreventcollector.
location Symbol Location Consider contributing a description to jfreventcollector.
classLoader ClassLoader Class Loader Consider contributing a description to jfreventcollector.

NarrowOopMode

Narrow Oop Mode No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
mode string Mode

Examples 3
Zero based
Zero based
Zero based

NetworkInterfaceName

Network Interface No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
networkInterface string Network Interface Network Interface Name

Examples 3
ap1
lo0
lo0

ObjectSpace

Appearing in: ParallelGC

Missing in: G1GC, SerialGC, ShenandoahGC, ZGC

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
start ulong: address Start Address Start address of the space
end ulong: address End Address End address of the space
used ulong: bytes Used Bytes allocated by objects in the space
size ulong: bytes Size Size of the space

Examples 3
end ulong: address
33017561088
size ulong: bytes
11010048
start ulong: address
33006551040
used ulong: bytes
3843952
end ulong: address
32995540992
size ulong: bytes
67108864
start ulong: address
32928432128
used ulong: bytes
0
end ulong: address
30244077568
size ulong: bytes
179306496
start ulong: address
30064771072
used ulong: bytes
2707584

OldObject

Old Object No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
address ulong: address Memory Address
type Class Java Class
description string Object Description Object description
referrer Reference Referrer Object Object referencing this object

Examples 3
address ulong: address
30164644496
description string
Size: 1
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
32
name string
java/lang/ThreadLocal$ThreadLocalMap
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/lang
address ulong: address
31501989920
description string
null
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
[B
package Package
null
address ulong: address
30302269048
description string
null
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[I
package Package
null

OldObjectArray

Old Object Array No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
size int Array Size Size of array
index int Index Index in the array

OldObjectField

Old Object Field No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
name string Field Name of field
modifiers short Field Modifiers Field modifiers

OldObjectGcRoot

GC Root No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

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

OldObjectRootSystem

GC Root System No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
system string System

OldObjectRootType

GC Root Type No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
type string Type

Package

Package No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
name Symbol Name Consider contributing a description to jfreventcollector.
module Module Module Consider contributing a description to jfreventcollector.
exported boolean Exported

Reference

Reference No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

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

ReferenceType

Reference Type No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
type string Type

Examples 3
Weak reference
Weak reference
Soft reference

ShenandoahHeapRegionState

Appearing in: ShenandoahGC

Missing in: G1GC, ParallelGC, SerialGC, ZGC

Shenandoah Heap Region State No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
state string State

Examples 3
Regular
Empty Committed
Collection Set

StackFrame

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
method Method Java Method
lineNumber int Line Number
bytecodeIndex int Bytecode Index
type FrameType Frame Type

Examples 3
bytecodeIndex int
71
lineNumber int
395
method Method
descriptor string
(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
hidden boolean
false
modifiers int
4
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Throwable
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/lang
type FrameType
JIT compiled
bytecodeIndex int
6
lineNumber int
71
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
22
name string
java/nio
type FrameType
Inlined
bytecodeIndex int
12
lineNumber int
500
method Method
descriptor string
(Ljava/lang/Object;)Ljava/lang/Object;
hidden boolean
false
modifiers int
8
name string
allocateInstance
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
java/lang/invoke/DirectMethodHandle
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/lang/invoke
type FrameType
Inlined

StackTrace

Stacktrace No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
truncated boolean Truncated
frames array StackFrame struct Stack Frames

Symbol

Symbol No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
string string String

Thread

Thread No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

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 No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
parent ThreadGroup Parent Consider contributing a description to jfreventcollector.
name string Name

Examples 3
name string
system
parent ThreadGroup
null
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
null

ThreadState

Java Thread State

Field Type Description
name string Name

Examples 3
STATE_RUNNABLE
STATE_RUNNABLE
STATE_RUNNABLE

VMOperationType

VM Operation Type No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
type string Type

Examples 3
ParallelGCFailedAllocation
GenCollectForAllocation
JFRCheckpoint

VirtualSpace

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
start ulong: address Start Address Start address of the virtual space
committedEnd ulong: address Committed End Address End address of the committed memory for the virtual space
committedSize ulong: bytes Committed Size Size of the committed memory for the virtual space
reservedEnd ulong: address Reserved End Address End address of the reserved memory for the virtual space
reservedSize ulong: bytes Reserved Size Size of the reserved memory for the virtual space

Examples 3
committedEnd ulong: address
30244077568
committedSize ulong: bytes
179306496
reservedEnd ulong: address
32928432128
reservedSize ulong: bytes
2863661056
start ulong: address
30064771072
committedEnd ulong: address
32250003456
committedSize ulong: bytes
2185232384
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4294967296
start ulong: address
30064771072
committedEnd ulong: address
31643926528
committedSize ulong: bytes
1579155456
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4294967296
start ulong: address
30064771072

ZPageTypeType

15+

Appearing in: ZGC

Missing in: G1GC, ParallelGC, SerialGC, ShenandoahGC

Z Page Type No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
type string Type

Examples 2
Large
Small

ZStatisticsCounterType

Appearing in: ZGC

Missing in: G1GC, ParallelGC, SerialGC, ShenandoahGC

Z Statistics Counter No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
counter string Counter

Examples 1
Allocation Rate

ZStatisticsSamplerType

Appearing in: ZGC

Missing in: G1GC, ParallelGC, SerialGC, ShenandoahGC

Z Statistics Sampler No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Field Type Description
sampler string Sampler

Examples 1
GC Locker Stall

XML Content Types

address

Annotation: jdk.jfr.MemoryAddress

Examples 3
6847246336
30377246720
0

bits-per-second

Annotation: jdk.jfr.DataAmount(BITS), jdk.jfr.Frequency

Examples 3
8088
1624
0

bytes

Annotation: jdk.jfr.DataAmount(BYTES)

Examples 3
262144000
24
1014560

bytes-per-second

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

Annotation: jdk.jfr.DataAmount(BYTES), jdk.jfr.Frequency

Examples 2
1.228512043493862E8
1.638371548822393E8

certificateId

Appearing in: G1GC

Missing in: ParallelGC, SerialGC, ShenandoahGC, ZGC

Annotation: jdk.jfr.events.CertificateId

Examples 1
3045411335

epochmillis

Annotation: jdk.jfr.Timestamp(MILLISECONDS_SINCE_EPOCH)

Examples 3
-9223372036854775808
1727266202802
1727266203142

hertz

Annotation: jdk.jfr.Frequency

Examples 3
1000000000
1000000000
12028.735

millis

Annotation: jdk.jfr.Timespan(MILLISECONDS)

Examples 3
9223372036854775807
792248644333
1000

nanos

Annotation: jdk.jfr.Timespan(NANOSECONDS)

Examples 3
-9223372036854775808
59999997167
59999998750

percentage

Annotation: jdk.jfr.Percentage

Examples 3
0.0038061142
6.5429875E-4
0.9950434

tickspan

Annotation: jdk.jfr.Timespan(TICKS)

Examples 3
0
39951986375
17460416

tickstamp

Annotation: jdk.jfr.Timestamp(TICKS)

XML Types

Class

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Parameter Type const Klass*
Field Type const Klass*
Java Type java.lang.Class
Examples 3
null
null
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
22
name string
java/net

ClassLoader

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Parameter Type const ClassLoaderData*
Field Type const ClassLoaderData*
Examples 3
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
22
name string
java/net
name string
bootstrap
type Class
null
name string
bootstrap
type Class
null

Method

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Parameter Type const Method*
Field Type const Method*
Examples 3
descriptor string
(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
hidden boolean
false
modifiers int
4
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Throwable
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/lang
descriptor string
(Ljava/lang/Object;)Ljava/lang/Object;
hidden boolean
false
modifiers int
8
name string
allocateInstance
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
java/lang/invoke/DirectMethodHandle
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/lang/invoke
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
22
name string
java/nio

Module

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Parameter Type const ModuleEntry*
Field Type const ModuleEntry*
Examples 3
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
22
name string
java/net
location string
null
name string
null
version string
null
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1

Package

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Parameter Type const PackageEntry*
Field Type const PackageEntry*
Examples 3
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
22
name string
java/net
location string
null
name string
null
version string
null
name string
scala/runtime
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
21.0.1
name string
java/util/regex
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/net

StackTrace

15+

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Parameter Type u8
Field Type u8
Java Type jdk.types.StackTrace
Examples 3
frames StackFrame
bytecodeIndex int
71
lineNumber int
395
method Method
descriptor string
(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
hidden boolean
false
modifiers int
4
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Throwable
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/lang
type FrameType
JIT compiled
truncated boolean
false
frames StackFrame
bytecodeIndex int
6
lineNumber int
71
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
22
name string
java/nio
type FrameType
Inlined
truncated boolean
false
frames StackFrame
bytecodeIndex int
12
lineNumber int
500
method Method
descriptor string
(Ljava/lang/Object;)Ljava/lang/Object;
hidden boolean
false
modifiers int
8
name string
allocateInstance
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
java/lang/invoke/DirectMethodHandle
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
22
name string
java/lang/invoke
type FrameType
Inlined
truncated boolean
false

Thread

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Parameter Type u8
Field Type u8
Java Type java.lang.Thread
Examples 3
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
dispatcher-event-loop-4
javaThreadId long
1601
osName string
dispatcher-event-loop-4
osThreadId long
145443
virtual boolean
false
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
shuffle-server-7-8
javaThreadId long
1841
osName string
shuffle-server-7-8
osThreadId long
108071
virtual boolean
false
group ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
JFR Recorder Thread
javaThreadId long
19
osName string
JFR Recorder Thread
osThreadId long
27395
virtual boolean
false

Ticks

unsigned

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

Parameter Type const Ticks&
Field Type Ticks
Java Type long
Content Type tickstamp
Examples 3
835370958
900913696042
77603893875

Tickspan

unsigned

No description available. Write your own and contribute it to jfreventcollector. or directly to the OpenJDK.

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

boolean

Parameter Type bool
Field Type bool
Java Type boolean
Examples 3
true
true
false

byte

Parameter Type s1
Field Type s1
Java Type byte

char

Parameter Type char
Field Type char
Java Type char

double

Parameter Type double
Field Type double
Java Type double
Examples 3
0.0
1.5625
15.0

float

Parameter Type float
Field Type float
Java Type float
Examples 3
7.799066
7.767639
2.7926807

int

Parameter Type s4
Field Type s4
Java Type int
Examples 3
1
49
48

long

Parameter Type s8
Field Type s8
Java Type long
Examples 3
1
26284
66

short

Parameter Type s2
Field Type s2
Java Type short

string

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

ubyte

unsigned

Parameter Type u1
Field Type u1
Java Type byte
Examples 3
7
15
32

uint

unsigned

Parameter Type unsigned
Field Type unsigned
Java Type int
Examples 3
149
8
8

ulong

unsigned

Parameter Type u8
Field Type u8
Java Type long
Examples 3
251658240
1912
1906

ushort

unsigned

Parameter Type u2
Field Type u2
Java Type short
Examples 3
3
4
4