Introduction

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

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

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

Flight Recorder

DumpReason

default profiling startTime 11 17 21 25 26 27

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:

    return;
  }

  Thread* thread = Thread::current_or_null_safe();
  if (thread == NULL) {
    return;
  }
  // Ensure a JavaThread is _thread_in_vm when we make this call
  JavaThreadInVM jtivm(thread);
  if (!prepare_for_emergency_dump(thread)) {
    return;
  }

  EventDumpReason event;
  if (event.should_commit()) {
    event.set_reason(exception_handler ? "Crash" : "Out of Memory");
    event.set_recordingId(-1);
    event.commit();
  }
  if (!exception_handler) {
    // OOM
    LeakProfiler::emit_events(max_jlong, false);
  }
  const int messages = MSGBIT(MSG_VM_ERROR);
  JfrRecorderService service;

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 25 26 27

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.write<u8>(EventDataLoss::eventId);
    writer.write(JfrTicks::now());
    writer.write(unflushed_size);
    writer.write(total_data_loss);
  }
}

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

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 25 26 27

Category: Flight Recorder

Code Context

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

src/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
928
flushId ulong
24
size ulong: bytes
265673
startTime long: millis
25738241147
elements ulong
524
flushId ulong
16
size ulong: bytes
493689
startTime long: millis
16734905517
elements ulong
14924
flushId ulong
78
size ulong: bytes
1870745
startTime long: millis
80377453565

ActiveRecording

default profiling startTime duration stackTrace 11 17 21 25 26 27

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

Category: Flight Recorder

Code Context

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

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

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

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

    @Label("Id")
    public long id;

    @Label("Name")
    public String name;

    @Label("Destination")
    public String destination;

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

        X509ValidationEvent.class
    };

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

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


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

Configuration enabled
default true
profiling true

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

Examples 3
destination string
/home/runner/work/jfrevents/jfrevents/jfr/sample_linux_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
1780495561697
startTime long: millis
79133745260
destination string
/home/runner/work/jfrevents/jfrevents/jfr/sample_linux_UseG1GC.jfr
flushInterval long: millis
1000
id long
1
maxAge long: millis
9223372036854775807
maxSize long: bytes
262144000
name string
1
recordingDuration long: millis
9223372036854775807
recordingStart long: epochmillis
1780495574399
startTime long: millis
52783539316
destination string
/home/runner/work/jfrevents/jfrevents/jfr/sample_linux_UseG1GC_events.jfr
flushInterval long: millis
1000
id long
1
maxAge long: millis
9223372036854775807
maxSize long: bytes
0
name string
1
recordingDuration long: millis
27000
recordingStart long: epochmillis
1780495704241
startTime long: millis
8283191432

ActiveSetting

default profiling startTime duration stackTrace 11 17 21 25 26 27

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

Category: Flight Recorder

Code Context

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

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

package jdk.jfr.events;

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

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

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

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

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

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

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

        X509CertificateEvent.class,
        X509ValidationEvent.class
    };

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

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


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

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

    void disable() {
        for (NamedControl nc : namedControls) {
            if (nc.control instanceof EnabledSetting) {
                nc.control.setValueSafe("false");
                return;
            }
        }
    }

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

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
145
name string
enabled
startTime long: millis
356902428
value string
true
id long
168
name string
period
startTime long: millis
370445781
value string
endChunk
id long
88
name string
threshold
startTime long: millis
381521681
value string
0 ms

JVM

JVMInformation

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

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
/home/runner/work/jfrevents/jfrevents/.cache/renaissance.jar -t 5 -r 1 all
jvmArguments string
-XX:StartFlightRecording=filename=/home/runner/work/jfrevents/jfrevents/jfr/sample_linux_UseG1GC.jfr,settings=/home/runner/work/jfrevents/jfrevents/.cache/jfc.jfc -XX:+UseG1GC
jvmFlags string
null
jvmName string
OpenJDK 64-Bit Server VM
jvmStartTime long: epochmillis
1780495574039
jvmVersion string
OpenJDK 64-Bit Server VM (25.0.3+9-LTS) for linux-amd64 JRE (25.0.3+9-LTS), built on 2026-04-20T14:40:29Z with gcc 14.2.0
pid long
2776
startTime long: millis
384232489
javaArguments string
/home/runner/work/jfrevents/jfrevents/.cache/renaissance.jar -t 5 -r 1 all
jvmArguments string
-XX:StartFlightRecording=filename=/home/runner/work/jfrevents/jfrevents/jfr/sample_linux_UseParallelGC.jfr,settings=/home/runner/work/jfrevents/jfrevents/.cache/jfc.jfc -XX:+UseParallelGC
jvmFlags string
null
jvmName string
OpenJDK 64-Bit Server VM
jvmStartTime long: epochmillis
1780495561360
jvmVersion string
OpenJDK 64-Bit Server VM (25.0.3+9-LTS) for linux-amd64 JRE (25.0.3+9-LTS), built on 2026-04-20T14:40:29Z with gcc 14.2.0
pid long
2792
startTime long: millis
79134335518
javaArguments string
/home/runner/work/jfrevents/jfrevents/.cache/jfr_sample_app.jar
jvmArguments string
--add-exports=java.base/jdk.internal.vm.annotation=ALL-UNNAMED -Djdk.attach.allowAttachSelf=true -XX:+UnlockDiagnosticVMOptions -XX:DiagnoseSyncOnValueBasedClasses=2 -XX:NativeMemoryTracking=summary -XX:StartFlightRecording=filename=/home/runner/work/jfrevents/jfrevents/jfr/sample_linux_UseG1GC_even
jvmFlags string
null
jvmName string
OpenJDK 64-Bit Server VM
jvmStartTime long: epochmillis
1780495703889
jvmVersion string
OpenJDK 64-Bit Server VM (25.0.3+9-LTS) for linux-amd64 JRE (25.0.3+9-LTS), built on 2026-04-20T14:40:29Z with gcc 14.2.0
pid long
3276
startTime long: millis
8304151539

InitialSystemProperty

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

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
jdk.debug
startTime long: millis
17207059779
value string
release
key string
java.vm.info
startTime long: millis
8304204408
value string
mixed mode, sharing
key string
java.library.path
startTime long: millis
51761440026
value string
/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib

JVM: Class Loading

ClassLoad

startTime duration eventThread stackTrace 11 17 21 25 26 27

Category: Java Virtual Machine / Class Loading

Code Context

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

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

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

static void 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 && !FieldType::is_array(name) &&
         !FieldType::is_obj(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 unsafe_DefineAnonymousClass and redefineclasses
// RedefinedClasses do not add to the class hierarchy
InstanceKlass* SystemDictionary::parse_stream(Symbol* class_name,
                                              Handle class_loader,
                                              Handle protection_domain,
                                              ClassFileStream* st,
                                              const InstanceKlass* unsafe_anonymous_host,
                                              GrowableArray<Handle>* cp_patches,
                                              TRAPS) {

  EventClassLoad class_load_start_event;

  ClassLoaderData* loader_data;
  if (unsafe_anonymous_host != NULL) {
    // Create a new CLD for an unsafe anonymous class, that uses the same class loader
    // as the unsafe_anonymous_host
    guarantee(unsafe_anonymous_host->class_loader() == class_loader(), "should be the same");
    loader_data = ClassLoaderData::unsafe_anonymous_class_loader_data(class_loader);
  } else {
    loader_data = ClassLoaderData::class_loader_data(class_loader());
  }

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

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

Examples 3
definingClassLoader ClassLoader
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
24
name string
java/util/concurrent/ConcurrentHashMap$EntrySetView
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/concurrent
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
12
lineNumber int
1300
method Method
descriptor string
()Ljava/util/Set;
hidden boolean
false
modifiers int
1
name string
entrySet
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/concurrent/ConcurrentHashMap
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/concurrent
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
399734571
definingClassLoader ClassLoader
name string
bootstrap
type Class
null
initiatingClassLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
loadedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/io/ByteArrayOutputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/io
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(Z)[Ljava/lang/reflect/Method;
hidden boolean
false
modifiers int
258
name string
getDeclaredMethods0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/lang/Class
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
394692563
definingClassLoader ClassLoader
name string
bootstrap
type Class
null
initiatingClassLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
loadedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/logging/SimpleFormatter
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
25.0.3
name string
java/util/logging
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
2
lineNumber int
21
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
<clinit>
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
17
name string
org/renaissance/core/Launcher
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
org/renaissance/core
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
385345110

ClassDefine

startTime eventThread stackTrace 11 17 21 25 26 27

Category: Java Virtual Machine / Class Loading

Code Context

The event is likely defined and utilized 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
definingClassLoader ClassLoader Defining Class Loader

Examples 3
definedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
java/security/Provider$UString
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/security
definingClassLoader ClassLoader
name string
bootstrap
type Class
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
163
lineNumber int
1622
method Method
descriptor string
(Ljava/security/Provider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/Map;)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
9
name string
java/security/Provider$Service
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/security
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
400638239
definedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
0
name string
java/time/temporal/TemporalQueries$6
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/time/temporal
definingClassLoader ClassLoader
name string
bootstrap
type Class
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
50
lineNumber int
425
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
<clinit>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/time/temporal/TemporalQueries
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/time/temporal
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
412155774
definedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/logging/SimpleFormatter
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
25.0.3
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
1025
name string
java/lang/ClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
385378490

ClassUnload

startTime eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / Class Loading

Code Context

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

Configuration enabled
default false
profiling false

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

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
25.0.3
name string
java/net
startTime long: millis
3941802125
unloadedClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
17
name string
scala/Tuple2$mcDI$sp
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
location string
null
name string
null
version string
null
name string
scala
definingClassLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
startTime long: millis
5096451292
unloadedClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
1537
name string
scala/Product2$mcJI$sp
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
location string
null
name string
null
version string
null
name string
scala
definingClassLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
0
name string
jfr_sample/Main$2
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
startTime long: millis
5274217230
unloadedClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
0
name string
jfr_sample/Main$2
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
hidden boolean
false
modifiers int
1
name string
jfr_sample/Unloadable369691120287
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
0
name string
jfr_sample/Main$2
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
location string
null
name string
null
version string
null
name string
jfr_sample

JVM: Code Cache

CodeCacheFull

default profiling startTime eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / Code Cache

Code Context

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

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

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

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

  heap->report_full();

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

Configuration enabled
default true
profiling true

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

CodeCacheStatistics

default profiling startTime every chunk 11 17 21 25 26 27

Category: Java Virtual Machine / Code Cache

Code Context

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

src/hotspot/share/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
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
0
codeBlobType CodeBlobType
CodeHeap 'non-profiled nmethods'
entryCount int
932
fullCount int
0
methodCount int
932
reservedTopAddress ulong: address
140142421475328
startAddress ulong: address
140142297743360
startTime long: millis
24983972709
unallocatedCapacity ulong: bytes
122811136
adaptorCount int
0
codeBlobType CodeBlobType
CodeHeap 'profiled nmethods'
entryCount int
4676
fullCount int
0
methodCount int
4676
reservedTopAddress ulong: address
140680974303232
startAddress ulong: address
140680850571264
startTime long: millis
36851803593
unallocatedCapacity ulong: bytes
113664256
adaptorCount int
0
codeBlobType CodeBlobType
CodeHeap 'non-profiled nmethods'
entryCount int
3812
fullCount int
0
methodCount int
3812
reservedTopAddress ulong: address
140405286895616
startAddress ulong: address
140405163163648
startTime long: millis
106734458924
unallocatedCapacity ulong: bytes
118993536

CodeCacheConfiguration

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

Category: Java Virtual Machine / Code Cache

Code Context

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

src/hotspot/share/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
6291456
nonProfiledSize ulong: bytes
123731968
profiledSize ulong: bytes
123731968
reservedSize ulong: bytes
253755392
reservedTopAddress ulong: address
140681104326656
startAddress ulong: address
140680850571264
startTime long: millis
27708746797
expansionSize ulong: bytes
65536
initialSize ulong: bytes
2555904
minBlockLength ulong: bytes
6
nonNMethodSize ulong: bytes
6291456
nonProfiledSize ulong: bytes
123731968
profiledSize ulong: bytes
123731968
reservedSize ulong: bytes
253755392
reservedTopAddress ulong: address
140405286895616
startAddress ulong: address
140405033140224
startTime long: millis
47684761858
expansionSize ulong: bytes
65536
initialSize ulong: bytes
2555904
minBlockLength ulong: bytes
6
nonNMethodSize ulong: bytes
6291456
nonProfiledSize ulong: bytes
123731968
profiledSize ulong: bytes
123731968
reservedSize ulong: bytes
253755392
reservedTopAddress ulong: address
140142421475328
startAddress ulong: address
140142167719936
startTime long: millis
373476187

JVM: Code Sweeper

SweepCodeCache

default profiling startTime duration eventThread 11 17 until JDK 20

Category: Java Virtual Machine / Code Sweeper

Code Context

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

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

  if (_should_sweep) {
    _bytes_changed = 0;
  }

  if (forced) {
    // Notify requester that forced sweep finished
    assert(_force_sweep, "Should be a forced sweep");
    MutexLocker mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
    _force_sweep = false;
    CodeCache_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

Code Context

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

Code Context

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


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

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
sweeperEnabled boolean Code Sweeper Enabled
flushingEnabled boolean Code Cache Flushing Enabled

JVM: Compiler

Compilation

default profiling startTime duration eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / Compiler

Code Context

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

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

package jdk.vm.ci.hotspot;

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

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

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

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

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

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

 * Service-provider class for logging compiler related events.
 */
public interface EventProvider {

    /**
     * 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.
     */
    public interface InstantEvent {
        /**
         * Commits the event.

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

    public interface TimedEvent extends InstantEvent {
        /**
         * Starts the timing for this event.
         */
        void begin();

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

        void setIsOsr(boolean isOsr);

        void setCodeSize(int codeSize);

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(event != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  assert(task != NULL, "invariant");
  event->set_compileId(task->compile_id());
  event->set_compiler(task->compiler()->type());
  event->set_method(task->method());
  event->set_compileLevel(task->comp_level());
  event->set_succeded(task->is_success());
  event->set_isOsr(task->osr_bci() != CompileBroker::standard_entry_bci);
  event->set_codeSize((task->code() == NULL) ? 0 : task->code()->total_size());
  event->set_inlinedBytes(task->num_inlined_bytecodes());

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;

    // Skip redefined methods
    if (target_handle->is_old()) {
      failure_reason = "redefined method";
      retry_message = "not retryable";
      compilable = ciEnv::MethodCompilable_never;
    } else {
      JVMCICompileState compile_state(task);
      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:

    assert(thread->env() == &ci_env, "set by ci_env");
    // The thread-env() field is cleared in ~CompileTaskWrapper.

    // Cache Jvmti state
    ci_env.cache_jvmti_state();

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

Configuration enabled threshold
default true 1000 ms
profiling true 100 ms

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

Examples 3
codeSize ulong: bytes
536
compileId uint
1406
compileLevel ushort
3
compiler CompilerType
c1
inlinedBytes ulong: bytes
5
isOsr boolean
false
method Method
descriptor string
()Z
hidden boolean
false
modifiers int
1
name string
isEnabled
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/jfr/internal/event/EventConfiguration
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.3
name string
jdk/jfr/internal/event
startTime long: millis
372693085
succeded boolean
true
codeSize ulong: bytes
2432
compileId uint
1439
compileLevel ushort
3
compiler CompilerType
c1
inlinedBytes ulong: bytes
51
isOsr boolean
false
method Method
descriptor string
(Z)Z
hidden boolean
false
modifiers int
0
name string
isVisible
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
16
name string
jdk/jfr/internal/Control
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.3
name string
jdk/jfr/internal
startTime long: millis
395403806
succeded boolean
true
codeSize ulong: bytes
232
compileId uint
1410
compileLevel ushort
1
compiler CompilerType
c1
inlinedBytes ulong: bytes
0
isOsr boolean
false
method Method
descriptor string
()Ljdk/jfr/internal/PlatformEventType;
hidden boolean
false
modifiers int
17
name string
getEventType
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1024
name string
jdk/jfr/internal/periodic/EventTask
package Package
exported boolean
false
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.3
name string
jdk/jfr/internal/periodic
startTime long: millis
373537373
succeded boolean
true

CompilerPhase

default profiling startTime duration eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / Compiler

Code Context

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

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

    C->_latest_stage_start_counter.stamp();
  }

  bool should_print(int level = 1) {
#ifndef PRODUCT
    return (_printer && _printer->should_print(level));
#else
    return false;
#endif
  }

  void print_method(CompilerPhaseType cpt, int level = 1, int idx = 0) {
    EventCompilerPhase event;
    if (event.should_commit()) {
      event.set_starttime(C->_latest_stage_start_counter);
      event.set_phase((u1) cpt);
      event.set_compileId(C->_compile_id);
      event.set_phaseLevel(level);
      event.commit();
    }

#ifndef PRODUCT
    if (should_print(level)) {
      char output[1024];
      if (idx != 0) {
        sprintf(output, "%s:%d", CompilerPhaseTypeHelper::to_string(cpt), idx);
      } else {
        sprintf(output, "%s", CompilerPhaseTypeHelper::to_string(cpt));
      }
      _printer->print_method(output, level);
    }
#endif
    C->_latest_stage_start_counter.stamp();
  }

  void end_method(int level = 1) {
    EventCompilerPhase event;
    if (event.should_commit()) {
      event.set_starttime(C->_latest_stage_start_counter);
      event.set_phase((u1) PHASE_END);
      event.set_compileId(C->_compile_id);
      event.set_phaseLevel(level);
      event.commit();
    }
#ifndef PRODUCT
    if (_printer && _printer->should_print(level)) {
      _printer->end_method();
    }

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

Examples 3
compileId uint
1408
phase CompilerPhaseType
Incremental Inline
phaseLevel ushort
2
startTime long: millis
373220696
compileId uint
1380
phase CompilerPhaseType
After Iter GVN
phaseLevel ushort
3
startTime long: millis
379774373
compileId uint
1344
phase CompilerPhaseType
After Macro Expansion
phaseLevel ushort
2
startTime long: millis
358854590

CompilationFailure

profiling startTime eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / Compiler

Code Context

The event is likely defined and utilized 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()) {
    event.set_compileId(compile_id());
    event.set_failureMessage(reason);
    event.commit();
  }
}

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

Configuration enabled
default false
profiling true

Field Type Description
failureMessage string Failure Message
compileId uint Compilation Identifier

Examples 3
compileId uint
47734
failureMessage string
concurrent class loading
startTime long: millis
99760858058
compileId uint
44437
failureMessage string
retry without subsuming loads
startTime long: millis
109323259744
compileId uint
2671
failureMessage string
Jvmti state change invalidated dependencies
startTime long: millis
1467268316

CompilerInlining

startTime eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / Compiler / Optimization

Code Context

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

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

  Value index = args->at(1);
  if (is_store) {
    Value value = args->at(2);
    Instruction* store = append(new StoreIndexed(array, index, NULL, T_CHAR, value, state_before, false, true));
    store->set_flag(Instruction::NeedsRangeCheckFlag, false);
    _memory->store_value(value);
  } else {
    Instruction* load = append(new LoadIndexed(array, index, NULL, T_CHAR, state_before, true));
    load->set_flag(Instruction::NeedsRangeCheckFlag, false);
    push(load->type(), load);
  }
}

static void post_inlining_event(EventCompilerInlining* event,
                                int compile_id,
                                const char* msg,
                                bool success,
                                int bci,
                                ciMethod* caller,
                                ciMethod* callee) {
  assert(caller != NULL, "invariant");
  assert(callee != NULL, "invariant");
  assert(event != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  JfrStructCalleeMethod callee_struct;

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

  event->commit();
}

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()) {
    post_inlining_event(&event, compilation()->env()->task()->compile_id(), msg, success, bci(), method(), callee);
  }

  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:

const char* InlineTree::check_can_parse(ciMethod* callee) {
  // Certain methods cannot be parsed at all:
  if ( callee->is_native())                     return "native method";
  if ( callee->is_abstract())                   return "abstract method";
  if (!callee->has_balanced_monitors())         return "not compilable (unbalanced monitors)";
  if ( callee->get_flow_analysis()->failing())  return "not compilable (flow analysis failed)";
  if (!callee->can_be_parsed())                 return "cannot be parsed";
  return NULL;
}

static void post_inlining_event(int compile_id,const char* msg, bool success, int bci, ciMethod* caller, ciMethod* callee) {
  assert(caller != NULL, "invariant");
  assert(callee != NULL, "invariant");
  EventCompilerInlining event;
  if (event.should_commit()) {
    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());
    event.set_compileId(compile_id);
    event.set_message(msg);
    event.set_succeeded(success);
    event.set_bci(bci);
    event.set_caller(caller->get_Method());
    event.set_callee(callee_struct);

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
7
callee CalleeMethod
descriptor string
([BI)C
name string
getChar
type string
java/lang/StringUTF16
caller Method
descriptor string
([BI)C
hidden boolean
false
modifiers int
9
name string
charAt
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
16
name string
java/lang/StringUTF16
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
compileId uint
1407
message string
intrinsic
startTime long: millis
372748628
succeeded boolean
true
bci int
52
callee CalleeMethod
descriptor string
(Ljava/lang/String;Z)J
name string
addString
type string
jdk/jfr/internal/StringPool
caller Method
descriptor string
(Ljava/lang/String;)V
hidden boolean
false
modifiers int
1
name string
putString
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/jfr/internal/event/EventWriter
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.3
name string
jdk/jfr/internal/event
compileId uint
1433
message string
callee is too large
startTime long: millis
384050761
succeeded boolean
false
bci int
60
callee CalleeMethod
descriptor string
(B)V
name string
putUncheckedByte
type string
jdk/jfr/internal/event/EventWriter
caller Method
descriptor string
(J)V
hidden boolean
false
modifiers int
2
name string
putUncheckedLong
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/jfr/internal/event/EventWriter
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.3
name string
jdk/jfr/internal/event
compileId uint
1388
message string
callee uses too much stack
startTime long: millis
357688711
succeeded boolean
false

Deoptimization

default profiling startTime eventThread stackTrace 14 17 21 25 26 27

Category: Java Virtual Machine / Compiler

Code Context

The event is likely defined and utilized 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
method Method Method
lineNumber int Line Number
bci int Bytecode Index
instruction Bytecode Instruction
reason DeoptimizationReason Reason
action DeoptimizationAction Action

Examples 3
action DeoptimizationAction
maybe_recompile
bci int
34
compileId uint
2226
compiler CompilerType
c2
instruction Bytecode
if_icmpgt
lineNumber int
3786
method Method
descriptor string
(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z
hidden boolean
false
modifiers int
0
name string
match
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
8
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
25.0.3
name string
java/util/regex
reason DeoptimizationReason
loop_limit_check
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
34
lineNumber int
3786
method Method
descriptor string
(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z
hidden boolean
false
modifiers int
0
name string
match
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
8
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
25.0.3
name string
java/util/regex
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
951148899
action DeoptimizationAction
make_not_entrant
bci int
58
compileId uint
2364
compiler CompilerType
c2
instruction Bytecode
invokestatic
lineNumber int
1320
method Method
descriptor string
([Ljava/lang/Object;)[Ljava/lang/Object;
hidden boolean
false
modifiers int
1
name string
toArray
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
java/util/ArrayList$SubList
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util
reason DeoptimizationReason
intrinsic_or_type_checked_inlining
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
58
lineNumber int
1320
method Method
descriptor string
([Ljava/lang/Object;)[Ljava/lang/Object;
hidden boolean
false
modifiers int
1
name string
toArray
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
java/util/ArrayList$SubList
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util
type FrameType
Inlined
truncated boolean
false
startTime long: millis
1231391281
action DeoptimizationAction
maybe_recompile
bci int
1
compileId uint
1233
compiler CompilerType
c2
instruction Bytecode
checkcast
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
hidden boolean
true
modifiers int
8
name string
linkToTargetMethod
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
16
name string
java/lang/invoke/Invokers$Holder
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang/invoke
reason DeoptimizationReason
speculate_class_check
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
1
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
hidden boolean
true
modifiers int
8
name string
linkToTargetMethod
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
16
name string
java/lang/invoke/Invokers$Holder
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang/invoke
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
428592473

CompilerStatistics

default profiling startTime every chunk 11 17 21 25 26 27

Category: Java Virtual Machine / Compiler

Code Context

The event is likely defined and utilized 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
3
compileCount int
36269
invalidatedCount int
0
nmethodCodeSize ulong: bytes
54506840
nmethodsSize ulong: bytes
78047128
osrBytesCompiled ulong: bytes
0
osrCompileCount int
387
peakTimeSpent long: millis
745
standardBytesCompiled ulong: bytes
0
standardCompileCount int
35882
startTime long: millis
98317754251
totalTimeSpent long: millis
106233
bailoutCount int
7
compileCount int
2921
invalidatedCount int
0
nmethodCodeSize ulong: bytes
3903512
nmethodsSize ulong: bytes
5276440
osrBytesCompiled ulong: bytes
0
osrCompileCount int
19
peakTimeSpent long: millis
199
standardBytesCompiled ulong: bytes
0
standardCompileCount int
2902
startTime long: millis
12655578259
totalTimeSpent long: millis
2890
bailoutCount int
2
compileCount int
35069
invalidatedCount int
0
nmethodCodeSize ulong: bytes
48424184
nmethodsSize ulong: bytes
71387128
osrBytesCompiled ulong: bytes
0
osrCompileCount int
378
peakTimeSpent long: millis
981
standardBytesCompiled ulong: bytes
0
standardCompileCount int
34691
startTime long: millis
84517944427
totalTimeSpent long: millis
96182

CompilerConfiguration

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

Category: Java Virtual Machine / Compiler

Code Context

The event is likely defined and utilized 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
63705127639
threadCount int
3
tieredCompilation boolean
true
startTime long: millis
51761540447
threadCount int
3
tieredCompilation boolean
true
startTime long: millis
16516002983
threadCount int
3
tieredCompilation boolean
true

JVM: Flag

IntFlagChanged

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / Flag

Code Context

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

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

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);
  check = flag->set_int(*value);
  *value = old_value;
  flag->set_origin(origin);
  return check;
}

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

Examples 3
name string
HeapDumpGzipLevel
newValue int
1
oldValue int
0
origin FlagValueOrigin
Management
startTime long: millis
1250621574
name string
HeapDumpGzipLevel
newValue int
1
oldValue int
0
origin FlagValueOrigin
Management
startTime long: millis
1178221264
name string
HeapDumpGzipLevel
newValue int
0
oldValue int
1
origin FlagValueOrigin
Management
startTime long: millis
1417934571

UnsignedIntFlagChanged

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / Flag

Code Context

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

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

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);
  check = flag->set_uint(*value);
  *value = old_value;
  flag->set_origin(origin);
  return check;
}

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

Examples 3
name string
FullGCHeapDumpLimit
newValue uint
1
oldValue uint
0
origin FlagValueOrigin
Management
startTime long: millis
1417995725
name string
FullGCHeapDumpLimit
newValue uint
0
oldValue uint
1
origin FlagValueOrigin
Management
startTime long: millis
1178286813
name string
FullGCHeapDumpLimit
newValue uint
0
oldValue uint
1
origin FlagValueOrigin
Management
startTime long: millis
1250739584

LongFlagChanged

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / Flag

Code Context

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

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

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

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

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

UnsignedLongFlagChanged

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / Flag

Code Context

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

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

    if (constraint != NULL) {
      status = constraint->apply_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);
  check = flag->set_uintx(*value);
  *value = old_value;
  flag->set_origin(origin);
  return check;
}

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);
  check = flag->set_uint64_t(*value);
  *value = old_value;
  flag->set_origin(origin);
  return check;
}

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);
  check = flag->set_size_t(*value);
  *value = old_value;
  flag->set_origin(origin);
  return check;
}

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

Examples 3
name string
MinHeapFreeRatio
newValue ulong
45
oldValue ulong
40
origin FlagValueOrigin
Management
startTime long: millis
1417622878
name string
MaxHeapFreeRatio
newValue ulong
75
oldValue ulong
70
origin FlagValueOrigin
Management
startTime long: millis
1249762996
name string
MinHeapFreeRatio
newValue ulong
40
oldValue ulong
45
origin FlagValueOrigin
Management
startTime long: millis
1177982014

DoubleFlagChanged

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / Flag

Code Context

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

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

    if (constraint != NULL) {
      status = constraint->apply_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);
  check = flag->set_double(*value);
  *value = old_value;
  flag->set_origin(origin);
  return check;
}

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

Examples 3
name string
G1PeriodicGCSystemLoadThreshold
newValue double
0.0
oldValue double
0.5
origin FlagValueOrigin
Management
startTime long: millis
1250579165
name string
G1PeriodicGCSystemLoadThreshold
newValue double
0.5
oldValue double
0.0
origin FlagValueOrigin
Management
startTime long: millis
1178143717
name string
G1PeriodicGCSystemLoadThreshold
newValue double
0.5
oldValue double
0.0
origin FlagValueOrigin
Management
startTime long: millis
1417842699

BooleanFlagChanged

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / Flag

Code Context

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

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

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);
  check = flag->set_bool(*value);
  *value = old_value;
  flag->set_origin(origin);
  return check;
}

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

Examples 3
name string
PrintConcurrentLocks
newValue boolean
true
oldValue boolean
false
origin FlagValueOrigin
Management
startTime long: millis
1249518811
name string
PrintConcurrentLocks
newValue boolean
false
oldValue boolean
true
origin FlagValueOrigin
Management
startTime long: millis
1417555723
name string
PrintConcurrentLocks
newValue boolean
false
oldValue boolean
true
origin FlagValueOrigin
Management
startTime long: millis
1177898298

StringFlagChanged

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / Flag

Code Context

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

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

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);
  }
  JVMFlag::Error check = 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 check;
}

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);
  JVMFlag::Error check = 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 check;
}

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

Examples 3
name string
HeapDumpPath
newValue string
/tmp/jfr_heap
oldValue string
null
origin FlagValueOrigin
Management
startTime long: millis
1249818519
name string
HeapDumpPath
newValue string
/tmp/jfr_heap
oldValue string
null
origin FlagValueOrigin
Management
startTime long: millis
1178063076
name string
HeapDumpPath
newValue string
/tmp/jfr_heap
oldValue string
null
origin FlagValueOrigin
Management
startTime long: millis
1417756237

IntFlag

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

Category: Java Virtual Machine / Flag

Configuration enabled period
default true beginChunk
profiling true beginChunk

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

Examples 3
name string
ParGCArrayScanChunk
origin FlagValueOrigin
Default
startTime long: millis
360240390
value int
50
name string
FullGCALotInterval
origin FlagValueOrigin
Default
startTime long: millis
373491545
value int
1
name string
GlibcMallocArenas
origin FlagValueOrigin
Default
startTime long: millis
9176492778
value int
1

UnsignedIntFlag

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

Category: Java Virtual Machine / Flag

Configuration enabled period
default true beginChunk
profiling true beginChunk

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

Examples 3
name string
MarkSweepDeadRatio
origin FlagValueOrigin
Default
startTime long: millis
360263955
value uint
5
name string
TargetPLABWastePct
origin FlagValueOrigin
Default
startTime long: millis
9176509149
value uint
10
name string
StringDeduplicationAgeThreshold
origin FlagValueOrigin
Default
startTime long: millis
373512605
value uint
3

LongFlag

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

Category: Java Virtual Machine / Flag

Configuration enabled period
default true beginChunk
profiling true beginChunk

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

Examples 3
name string
InterpreterProfilePercentage
origin FlagValueOrigin
Default
startTime long: millis
360291226
value long
33
name string
MaxTrivialSize
origin FlagValueOrigin
Default
startTime long: millis
373546999
value long
6
name string
FLOATPRESSURE
origin FlagValueOrigin
Default
startTime long: millis
384731021
value long
-1

UnsignedLongFlag

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

Category: Java Virtual Machine / Flag

Configuration enabled period
default true beginChunk
profiling true beginChunk

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

Examples 3
name string
HeapMaximumCompactionInterval
origin FlagValueOrigin
Default
startTime long: millis
373572737
value ulong
20
name string
CodeCacheMinimumUseSpace
origin FlagValueOrigin
Default
startTime long: millis
384764964
value ulong
409600
name string
MaxMetaspaceExpansion
origin FlagValueOrigin
Default
startTime long: millis
360318407
value ulong
5439488

DoubleFlag

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

Category: Java Virtual Machine / Flag

Configuration enabled period
default true beginChunk
profiling true beginChunk

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

Examples 3
name string
G1ConcMarkStepDurationMillis
origin FlagValueOrigin
Default
startTime long: millis
17433355265
value double
10.0
name string
G1PeriodicGCSystemLoadThreshold
origin FlagValueOrigin
Management
startTime long: millis
8304422095
value double
0.0
name string
MaxRAMPercentage
origin FlagValueOrigin
Default
startTime long: millis
9176575123
value double
25.0

BooleanFlag

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

Category: Java Virtual Machine / Flag

Configuration enabled period
default true beginChunk
profiling true beginChunk

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

Examples 3
name string
BailoutOnExceptionHandlers
origin FlagValueOrigin
Default
startTime long: millis
360357396
value boolean
false
name string
StressRangeCheckElimination
origin FlagValueOrigin
Default
startTime long: millis
384797926
value boolean
false
name string
PrintIR
origin FlagValueOrigin
Default
startTime long: millis
373611610
value boolean
false

StringFlag

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

Category: Java Virtual Machine / Flag

Configuration enabled period
default true beginChunk
profiling true beginChunk

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

Examples 3
name string
TraceJVMTI
origin FlagValueOrigin
Default
startTime long: millis
360411858
value string
null
name string
PrintIdealGraphFile
origin FlagValueOrigin
Default
startTime long: millis
373713070
value string
null
name string
ShenandoahGCMode
origin FlagValueOrigin
Default
startTime long: millis
9176660322
value string
satb

JVM: GC: Collector

GarbageCollection

default profiling startTime duration 11 17 21 25 26 27

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
System.gc()
gcId uint
41
longestPause Tickspan
233934112
name GCName
ParallelOld
startTime long: millis
27524206342
sumOfPauses Tickspan
233934112
cause GCCause
G1 Evacuation Pause
gcId uint
76
longestPause Tickspan
1370359
name GCName
G1New
startTime long: millis
2192981807
sumOfPauses Tickspan
1370359
cause GCCause
G1 Evacuation Pause
gcId uint
27
longestPause Tickspan
12326907
name GCName
G1New
startTime long: millis
2701905728
sumOfPauses Tickspan
12326907

ParallelOldGarbageCollection

default profiling startTime duration 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Collector

Appearing in: linux_ParallelGC

Missing in: linux_G1GC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Extra information specific to Parallel Old Garbage Collections

Code Context

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

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

    e.set_smallChunksTotalSize(summary.small_chunks_size_in_bytes());

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

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

    e.commit();
  }
}

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

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

Configuration enabled threshold
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 2
densePrefix ulong: address
30252990464
gcId uint
66
startTime long: millis
51548805326
densePrefix ulong: address
30173822976
gcId uint
84
startTime long: millis
2461341897

YoungGarbageCollection

default profiling startTime duration 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Collector

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: linux_ShenandoahGC, linux_ZGC

Extra information specific to Young Garbage Collections

Code Context

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

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

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

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

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

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
gcId uint GC Identifier
tenuringThreshold uint Tenuring Threshold

Examples 3
gcId uint
84
startTime long: millis
2299473113
tenuringThreshold uint
1
gcId uint
41
startTime long: millis
6095455456
tenuringThreshold uint
15
gcId uint
3
startTime long: millis
1405502127
tenuringThreshold uint
7

OldGarbageCollection

default profiling startTime duration 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Collector

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: linux_ShenandoahGC, linux_ZGC

Extra information specific to Old Garbage Collections

Code Context

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

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

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

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

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

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
gcId uint GC Identifier

Examples 3
gcId uint
72
startTime long: millis
9461013774
gcId uint
71
startTime long: millis
55210770558
gcId uint
147
startTime long: millis
2964491773

G1GarbageCollection

default profiling startTime duration 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Collector

Appearing in: linux_G1GC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Extra information specific to G1 Garbage Collections

Code Context

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

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

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

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

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

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
gcId uint GC Identifier
type G1YCType Type

Examples 2
gcId uint
97
startTime long: millis
18584419202
type G1YCType
Normal
gcId uint
104
startTime long: millis
2480017241
type G1YCType
Normal

JVM: GC: Configuration

GCConfiguration

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

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
1
gcTimeRatio uint
12
isExplicitGCConcurrent boolean
false
isExplicitGCDisabled boolean
false
oldCollector GCName
G1Old
parallelGCThreads uint
4
pauseTarget long: millis
-9223372036854775808
startTime long: millis
16476792378
usesDynamicGCThreads boolean
true
youngCollector GCName
G1New
concurrentGCThreads uint
1
gcTimeRatio uint
12
isExplicitGCConcurrent boolean
false
isExplicitGCDisabled boolean
false
oldCollector GCName
G1Old
parallelGCThreads uint
4
pauseTarget long: millis
-9223372036854775808
startTime long: millis
107794218880
usesDynamicGCThreads boolean
true
youngCollector GCName
G1New
concurrentGCThreads uint
0
gcTimeRatio uint
99
isExplicitGCConcurrent boolean
false
isExplicitGCDisabled boolean
false
oldCollector GCName
ParallelOld
parallelGCThreads uint
4
pauseTarget long: millis
-9223372036854775808
startTime long: millis
106605952052
usesDynamicGCThreads boolean
true
youngCollector GCName
ParallelScavenge

GCSurvivorConfiguration

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

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
79375063472
initialTenuringThreshold ubyte
7
maxTenuringThreshold ubyte
15
startTime long: millis
63780260614
initialTenuringThreshold ubyte
7
maxTenuringThreshold ubyte
15
startTime long: millis
8329376340

GCTLABConfiguration

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

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
383874197
tlabRefillWasteLimit ulong: bytes
64
usesTLABs boolean
true
minTLABSize ulong: bytes
2048
startTime long: millis
99418708745
tlabRefillWasteLimit ulong: bytes
64
usesTLABs boolean
true
minTLABSize ulong: bytes
2048
startTime long: millis
114082652734
tlabRefillWasteLimit ulong: bytes
64
usesTLABs boolean
true

GCHeapConfiguration

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

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
262144000
maxSize ulong: bytes
4192206848
minSize ulong: bytes
8388608
objectAlignment ulong: bytes
8
startTime long: millis
99331724153
usesCompressedOops boolean
true
compressedOopsMode NarrowOopMode
Zero based
heapAddressBits ubyte
32
initialSize ulong: bytes
262144000
maxSize ulong: bytes
4192206848
minSize ulong: bytes
8388608
objectAlignment ulong: bytes
8
startTime long: millis
8329379536
usesCompressedOops boolean
true
compressedOopsMode NarrowOopMode
Zero based
heapAddressBits ubyte
32
initialSize ulong: bytes
262144000
maxSize ulong: bytes
4192206848
minSize ulong: bytes
8388608
objectAlignment ulong: bytes
8
startTime long: millis
102022117552
usesCompressedOops boolean
true

YoungGenerationConfiguration

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

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
2514485248
minSize ulong: bytes
1363144
newRatio uint
2
startTime long: millis
383878044
maxSize ulong: bytes
2514485248
minSize ulong: bytes
1363144
newRatio uint
2
startTime long: millis
118580051971
maxSize ulong: bytes
1396703232
minSize ulong: bytes
85983232
newRatio uint
2
startTime long: millis
371689235

JVM: GC: Detailed

G1MMU

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_G1GC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Code Context

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

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

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

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

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

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

Configuration enabled
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 2
gcId uint
189
gcTime long: millis
8
pauseTarget long: millis
200
startTime long: millis
3456061315
timeSlice long: millis
201
gcId uint
15
gcTime long: millis
62
pauseTarget long: millis
200
startTime long: millis
1595209304
timeSlice long: millis
201

EvacuationInformation

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_G1GC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Code Context

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

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

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

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

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 2
allocationRegions uint
2
allocationRegionsUsedAfter ulong: bytes
2349536
allocationRegionsUsedBefore ulong: bytes
0
bytesCopied ulong: bytes
2349536
cSetRegions uint
5
cSetUsedAfter ulong: bytes
0
cSetUsedBefore ulong: bytes
10476144
gcId uint
2
regionsFreed uint
5
startTime long: millis
737845393
allocationRegions uint
3
allocationRegionsUsedAfter ulong: bytes
5378560
allocationRegionsUsedBefore ulong: bytes
250832
bytesCopied ulong: bytes
5127728
cSetRegions uint
3
cSetUsedAfter ulong: bytes
0
cSetUsedBefore ulong: bytes
6291456
gcId uint
190
regionsFreed uint
3
startTime long: millis
3461108594

ObjectCountAfterGC

startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: linux_ShenandoahGC, linux_ZGC

Code Context

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

src/hotspot/share/gc/shared/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
count long Count
totalSize ulong: bytes Total Size

Examples 3
count long
926
gcId uint
0
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/ArrayList
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util
startTime long: millis
390792545
totalSize ulong: bytes
22224
count long
27
gcId uint
26
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[C
package Package
null
startTime long: millis
1492277659
totalSize ulong: bytes
203872
count long
98515
gcId uint
16
objectClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
25
name string
scala/concurrent/impl/Promise$Transformation
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
location string
null
name string
null
version string
null
name string
scala/concurrent/impl
startTime long: millis
8832793279
totalSize ulong: bytes
3152480

G1EvacuationYoungStatistics

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_G1GC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Memory related evacuation statistics during GC for the young generation

Code Context

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

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

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

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

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

Configuration enabled
default true
profiling true

Field Type Description
statistics G1EvacuationStatistics struct Evacuation Statistics

Examples 2
startTime long: millis
4407084216
statistics G1EvacuationStatistics
allocated ulong: bytes
30699760
directAllocated ulong: bytes
1806096
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
31
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
16
undoWaste ulong: bytes
0
used ulong: bytes
29032408
wasted ulong: bytes
166864
startTime long: millis
1961542968
statistics G1EvacuationStatistics
allocated ulong: bytes
1768608
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
58
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
1544072
wasted ulong: bytes
49016

G1EvacuationOldStatistics

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_G1GC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Memory related evacuation statistics during GC for the old generation

Code Context

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

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

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

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

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

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

Configuration enabled
default true
profiling true

Field Type Description
statistics G1EvacuationStatistics struct Evacuation Statistics

Examples 2
startTime long: millis
954822348
statistics G1EvacuationStatistics
allocated ulong: bytes
0
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
16
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
0
wasted ulong: bytes
0
startTime long: millis
26692790032
statistics G1EvacuationStatistics
allocated ulong: bytes
0
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
117
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
0
undoWaste ulong: bytes
0
used ulong: bytes
0
wasted ulong: bytes
0

G1BasicIHOP

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_G1GC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Basic statistics related to current IHOP calculation

Code Context

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

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

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

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

Configuration enabled
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 2
currentOccupancy ulong: bytes
17009552
gcId uint
161
lastMarkingDuration long: millis
40
recentAllocationRate double: bytes-per-second
3.1355026663664994E9
recentMutatorAllocationSize ulong: bytes
2520640
recentMutatorDuration long: millis
0
startTime long: millis
3135101815
targetOccupancy ulong: bytes
29360128
threshold ulong: bytes
13212057
thresholdPercentage float: percentage
0.45
currentOccupancy ulong: bytes
94218896
gcId uint
26
lastMarkingDuration long: millis
128
recentAllocationRate double: bytes-per-second
0.0
recentMutatorAllocationSize ulong: bytes
0
recentMutatorDuration long: millis
93
startTime long: millis
2629208517
targetOccupancy ulong: bytes
547356672
threshold ulong: bytes
24509002
thresholdPercentage float: percentage
0.04477702

G1AdaptiveIHOP

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_G1GC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Statistics related to current adaptive IHOP calculation

Code Context

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

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

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

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

Configuration enabled
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 2
additionalBufferSize ulong: bytes
8388608
currentOccupancy ulong: bytes
14716160
gcId uint
76
ihopTargetOccupancy ulong: bytes
33869004
predictedAllocationRate double: bytes-per-second
1.1064860649781075E9
predictedMarkingDuration long: millis
81
predictionActive boolean
false
startTime long: millis
2194297814
threshold ulong: bytes
16043212
thresholdPercentage float: percentage
0.4736842
additionalBufferSize ulong: bytes
75497472
currentOccupancy ulong: bytes
73435680
gcId uint
17
ihopTargetOccupancy ulong: bytes
173329612
predictedAllocationRate double: bytes-per-second
1.3579596248565567E8
predictedMarkingDuration long: millis
219
predictionActive boolean
false
startTime long: millis
1644102006
threshold ulong: bytes
82103500
thresholdPercentage float: percentage
0.47368422

PromoteObjectInNewPLAB

profiling startTime eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_G1GC, linux_ParallelGC

Missing in: linux_SerialGC, linux_ShenandoahGC, linux_ZGC

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

Code Context

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

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

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

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

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

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

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

Configuration enabled
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 3
gcId uint
1
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
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
25.0.3
name string
java/lang
objectSize ulong: bytes
24
plabSize ulong: bytes
8184
startTime long: millis
1058322071
tenured boolean
true
tenuringAge uint
0
gcId uint
8
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
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
25.0.3
name string
java/lang
objectSize ulong: bytes
24
plabSize ulong: bytes
180352
startTime long: millis
1159000953
tenured boolean
true
tenuringAge uint
0
gcId uint
2
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
objectSize ulong: bytes
48
plabSize ulong: bytes
4096
startTime long: millis
577777832
tenured boolean
true
tenuringAge uint
1

PromoteObjectOutsidePLAB

profiling startTime eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_G1GC, linux_ParallelGC

Missing in: linux_SerialGC, linux_ShenandoahGC, linux_ZGC

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

Code Context

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

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

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

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

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

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

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

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

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

void OldGCTracer::send_old_gc_event() const {

Configuration enabled
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 3
gcId uint
3
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[I
package Package
null
objectSize ulong: bytes
16400
startTime long: millis
931109874
tenured boolean
false
tenuringAge uint
1
gcId uint
1
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
objectSize ulong: bytes
4112
startTime long: millis
575399151
tenured boolean
false
tenuringAge uint
0
gcId uint
2
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
25.0.3
name string
java/lang
objectSize ulong: bytes
2097168
startTime long: millis
1320916093
tenured boolean
false
tenuringAge uint
0

PromotionFailed

default profiling startTime 11 17 21 25 26 27

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 25 26 27

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 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_G1GC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Concurrent Mode failed

Code Context

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

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

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

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

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

Configuration enabled
default true
profiling true

Field Type Description
gcId uint GC Identifier

Examples 2
gcId uint
1737
startTime long: millis
23027237440
gcId uint
361
startTime long: millis
117661426759

AllocationRequiringGC

startTime eventThread stackTrace 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: linux_ShenandoahGC, linux_ZGC

Code Context

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

src/hotspot/share/gc/shared/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
23
size ulong: bytes
32
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
51
lineNumber int
681
method Method
descriptor string
(Lscala/collection/immutable/RedBlackTree$Tree;)Lscala/collection/immutable/RedBlackTree$Tree;
hidden boolean
false
modifiers int
1
name string
withLeft
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
25
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
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
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
15695109442
gcId uint
113
size ulong: bytes
56
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
174
method Method
descriptor string
(Ljava/util/function/IntFunction;I)Ljava/util/stream/Stream;
hidden boolean
false
modifiers int
2
name string
mapToObj
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1024
name string
java/util/stream/IntPipeline
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/stream
type FrameType
Inlined
truncated boolean
false
startTime long: millis
26285756184
gcId uint
43
size ulong: bytes
4112
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
24
lineNumber int
494
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
allocateAndGC
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
1813852149

TenuringDistribution

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_G1GC, linux_SerialGC

Missing in: linux_ParallelGC, linux_ShenandoahGC, linux_ZGC

Code Context

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

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

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

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

Configuration enabled
default true
profiling true

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

Examples 3
age uint
6
gcId uint
1
size ulong: bytes
0
startTime long: millis
1076764948
age uint
11
gcId uint
6
size ulong: bytes
0
startTime long: millis
614543088
age uint
10
gcId uint
9
size ulong: bytes
0
startTime long: millis
1208122321

G1HeapRegionTypeChange

startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_G1GC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Information about a G1 heap region type change

Code Context

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

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

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

Configuration enabled
default false
profiling false

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

Examples 2
from G1HeapRegionType
Eden
index uint
13
start ulong: address
30194794496
startTime long: millis
578413532
to G1HeapRegionType
Free
used ulong: bytes
0
from G1HeapRegionType
Eden
index uint
20
start ulong: address
30209474560
startTime long: millis
1160736367
to G1HeapRegionType
Free
used ulong: bytes
0

ObjectCount

startTime every chunk 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: linux_ShenandoahGC, linux_ZGC

Code Context

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

src/hotspot/share/gc/shared/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
count long Count
totalSize ulong: bytes Total Size

Examples 3
count long
166465
gcId uint
16
objectClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
25
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
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
location string
null
name string
null
version string
null
name string
scala/collection/immutable
startTime long: millis
8832793279
totalSize ulong: bytes
5326880
count long
353
gcId uint
0
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/lang/reflect/Field
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang/reflect
startTime long: millis
379054085
totalSize ulong: bytes
22592
count long
915532
gcId uint
25
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
8
name string
java/util/HashMap$Node
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util
startTime long: millis
2863174430
totalSize ulong: bytes
21972768

G1HeapRegionInformation

startTime duration every chunk 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_G1GC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Information about a specific heap region in the G1 GC

Code Context

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

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

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

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

Configuration enabled period
default false everyChunk
profiling false everyChunk

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

Examples 2
index uint
6
start ulong: address
30180114432
startTime long: millis
395084158
type G1HeapRegionType
Free
used ulong: bytes
0
index uint
0
start ulong: address
30167531520
startTime long: millis
16476348541
type G1HeapRegionType
Old
used ulong: bytes
2097128

ZPageAllocation

experimental default profiling startTime duration eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_ZGC

Missing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Allocation of a ZPage

Code Context

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

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

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

void ZTracer::send_page_alloc(size_t size, size_t used, size_t free, size_t cache, ZAllocationFlags flags) {
  NoSafepointVerifier nsv;

  EventZPageAllocation e;
  if (e.should_commit()) {
    e.set_pageSize(size);
    e.set_usedAfter(used);
    e.set_freeAfter(free);
    e.set_inCacheAfter(cache);
    e.set_nonBlocking(flags.non_blocking());
    e.set_noReserve(flags.no_reserve());
    e.commit();
  }
}

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

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

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

inline void ZTracer::report_page_alloc(size_t size, size_t used, size_t free, size_t cache, ZAllocationFlags flags) {
  if (EventZPageAllocation::is_enabled()) {
    send_page_alloc(size, used, free, cache, flags);
  }
}

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

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

Configuration enabled threshold
default true 10 ms
profiling true 10 ms

Field Type Description
pageSize ulong: bytes 11 until JDK 15 Page Size
usedAfter ulong: bytes 11 until JDK 15 Used After
freeAfter ulong: bytes 11 until JDK 15 Free After
inCacheAfter ulong: bytes 11 until JDK 15 In Cache After
nonBlocking boolean Non-blocking
noReserve boolean 11 until JDK 16 No Reserve

Examples 2
nonBlocking boolean
false
startTime long: millis
931225636
nonBlocking boolean
false
startTime long: millis
659413067

ZThreadPhase

experimental default profiling startTime duration eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_ZGC

Missing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Code Context

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

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

  NoSafepointVerifier nsv;

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

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

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

void ZTracer::send_page_alloc(size_t size, size_t used, size_t free, size_t cache, ZAllocationFlags flags) {
  NoSafepointVerifier nsv;

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

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

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

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

inline void ZTracer::report_page_alloc(size_t size, size_t used, size_t free, size_t cache, ZAllocationFlags flags) {
  if (EventZPageAllocation::is_enabled()) {
    send_page_alloc(size, used, free, cache, flags);
  }
}

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

Configuration enabled threshold
default true 0 ms
profiling true 0 ms

Field Type Description
gcId uint GC Identifier
name string Name

Examples 2
gcId uint
0
name string
Concurrent Mark Root Colored
startTime long: millis
400559855
gcId uint
4
name string
Concurrent Mark Root Colored
startTime long: millis
1317292169

ZStatisticsCounter

experimental startTime duration eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_ZGC

Missing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Code Context

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

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

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

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

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

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

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

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

#ifndef SHARE_GC_Z_ZTRACER_INLINE_HPP
#define SHARE_GC_Z_ZTRACER_INLINE_HPP

#include "gc/z/zStat.hpp"
#include "gc/z/zTracer.hpp"
#include "jfr/jfrEvents.hpp"

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

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

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

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

Configuration enabled threshold
default false 0 ms
profiling false 0 ms

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

Examples 2
id ZStatisticsCounterType
Allocation Rate
increment ulong
2097152
startTime long: millis
1083638586
value ulong
169869312
id ZStatisticsCounterType
Allocation Rate
increment ulong
2097152
startTime long: millis
729991831
value ulong
23068672

ZStatisticsSampler

experimental startTime duration eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_ZGC

Missing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Code Context

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

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

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

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

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

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

  EventZThreadPhase e(UNTIMED);

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

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

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

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

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

inline void ZTracer::report_page_alloc(size_t size, size_t used, size_t free, size_t cache, ZAllocationFlags flags) {

Configuration enabled threshold
default false 0 ms
profiling false 0 ms

Field Type Description
id ZStatisticsSamplerType Id
value ulong Value

Examples 2
id ZStatisticsSamplerType
Out Of Memory
startTime long: millis
1084936788
value ulong
0
id ZStatisticsSamplerType
Concurrent Relocate
startTime long: millis
421830149
value ulong
51137

ShenandoahHeapRegionStateChange

startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_ShenandoahGC

Missing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ZGC

Information about a Shenandoah heap region state change

Code Context

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

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

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

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

Configuration enabled
default false
profiling false

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

Examples 2
from ShenandoahHeapRegionState
Empty Uncommitted
index uint
3784
start ulong: address
34135343104
startTime long: millis
569852540
to ShenandoahHeapRegionState
Regular
used ulong: bytes
0
from ShenandoahHeapRegionState
Empty Uncommitted
index uint
3050
start ulong: address
33365688320
startTime long: millis
13004837786
to ShenandoahHeapRegionState
Regular
used ulong: bytes
0

ShenandoahHeapRegionInformation

startTime duration every chunk 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Detailed

Appearing in: linux_ShenandoahGC

Missing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ZGC

Information about a specific heap region in the Shenandoah GC

Code Context

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

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

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

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

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

Configuration enabled period
default false everyChunk
profiling false everyChunk

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

Examples 2
index uint
68
start ulong: address
30238834688
startTime long: millis
374188877
state ShenandoahHeapRegionState
Empty Committed
used ulong: bytes
0
index uint
68
start ulong: address
30238834688
startTime long: millis
15699068911
state ShenandoahHeapRegionState
Empty Uncommitted
used ulong: bytes
0

JVM: GC: Heap

GCHeapSummary

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Heap

Code Context

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

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

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

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

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

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

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

Configuration enabled
default true
profiling true

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

Examples 3
gcId uint
40
heapSpace VirtualSpace
committedEnd ulong: address
32000442368
committedSize ulong: bytes
1832910848
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520
heapUsed ulong: bytes
1109651144
startTime long: millis
26959462160
when GCWhen
Before GC
gcId uint
21
heapSpace VirtualSpace
committedEnd ulong: address
30423384064
committedSize ulong: bytes
255852544
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520
heapUsed ulong: bytes
163071048
startTime long: millis
1308790188
when GCWhen
Before GC
gcId uint
28
heapSpace VirtualSpace
committedEnd ulong: address
30517755904
committedSize ulong: bytes
350224384
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520
heapUsed ulong: bytes
327002768
startTime long: millis
2864160814
when GCWhen
Before GC

MetaspaceSummary

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Heap

Code Context

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

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

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
gcThreshold ulong: bytes GC Threshold
metaspace MetaspaceSizes struct Total
dataSpace MetaspaceSizes struct Data
classSpace MetaspaceSizes struct Class

Examples 3
classSpace MetaspaceSizes
committed ulong: bytes
3014656
reserved ulong: bytes
1073741824
used ulong: bytes
2852816
dataSpace MetaspaceSizes
committed ulong: bytes
11993088
reserved ulong: bytes
67108864
used ulong: bytes
11870720
gcId uint
35
gcThreshold ulong: bytes
25034752
metaspace MetaspaceSizes
committed ulong: bytes
15007744
reserved ulong: bytes
1140850688
used ulong: bytes
14723536
startTime long: millis
1700164111
when GCWhen
After GC
classSpace MetaspaceSizes
committed ulong: bytes
2555904
reserved ulong: bytes
1073741824
used ulong: bytes
2468496
dataSpace MetaspaceSizes
committed ulong: bytes
11141120
reserved ulong: bytes
67108864
used ulong: bytes
11008064
gcId uint
8
gcThreshold ulong: bytes
22872064
metaspace MetaspaceSizes
committed ulong: bytes
13697024
reserved ulong: bytes
1140850688
used ulong: bytes
13476560
startTime long: millis
1160899841
when GCWhen
After GC
classSpace MetaspaceSizes
committed ulong: bytes
2555904
reserved ulong: bytes
1073741824
used ulong: bytes
2468496
dataSpace MetaspaceSizes
committed ulong: bytes
11141120
reserved ulong: bytes
67108864
used ulong: bytes
10997456
gcId uint
2
gcThreshold ulong: bytes
22020096
metaspace MetaspaceSizes
committed ulong: bytes
13697024
reserved ulong: bytes
1140850688
used ulong: bytes
13465952
startTime long: millis
1319786383
when GCWhen
Before GC

PSHeapSummary

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Heap

Appearing in: linux_ParallelGC

Missing in: linux_G1GC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Code Context

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

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

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

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

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

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

Configuration enabled
default true
profiling true

Field Type Description
gcId uint GC Identifier
when GCWhen When
oldSpace VirtualSpace struct Old Space
oldObjectSpace ObjectSpace struct Old Object Space
youngSpace VirtualSpace struct Young Space
edenSpace ObjectSpace struct Eden Space
fromSpace ObjectSpace struct From Space
toSpace ObjectSpace struct To Space

Examples 2
edenSpace ObjectSpace
end ulong: address
33478934528
size ulong: bytes
515899392
start ulong: address
32963035136
used ulong: bytes
0
fromSpace ObjectSpace
end ulong: address
33491517440
size ulong: bytes
6291456
start ulong: address
33485225984
used ulong: bytes
0
gcId uint
23
oldObjectSpace ObjectSpace
end ulong: address
30343692288
size ulong: bytes
176160768
start ulong: address
30167531520
used ulong: bytes
6528320
oldSpace VirtualSpace
committedEnd ulong: address
30343692288
committedSize ulong: bytes
176160768
reservedEnd ulong: address
32963035136
reservedSize ulong: bytes
2795503616
start ulong: address
30167531520
startTime long: millis
1549075844
toSpace ObjectSpace
end ulong: address
33485225984
size ulong: bytes
6291456
start ulong: address
33478934528
used ulong: bytes
0
when GCWhen
After GC
youngSpace VirtualSpace
committedEnd ulong: address
33491517440
committedSize ulong: bytes
528482304
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
1396703232
start ulong: address
32963035136
edenSpace ObjectSpace
end ulong: address
33959182336
size ulong: bytes
996147200
start ulong: address
32963035136
used ulong: bytes
996147200
fromSpace ObjectSpace
end ulong: address
34359738368
size ulong: bytes
201326592
start ulong: address
34158411776
used ulong: bytes
0
gcId uint
27
oldObjectSpace ObjectSpace
end ulong: address
30805065728
size ulong: bytes
637534208
start ulong: address
30167531520
used ulong: bytes
149953824
oldSpace VirtualSpace
committedEnd ulong: address
30805065728
committedSize ulong: bytes
637534208
reservedEnd ulong: address
32963035136
reservedSize ulong: bytes
2795503616
start ulong: address
30167531520
startTime long: millis
18081314201
toSpace ObjectSpace
end ulong: address
34158411776
size ulong: bytes
199229440
start ulong: address
33959182336
used ulong: bytes
0
when GCWhen
Before GC
youngSpace VirtualSpace
committedEnd ulong: address
34359738368
committedSize ulong: bytes
1396703232
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
1396703232
start ulong: address
32963035136

G1HeapSummary

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Heap

Appearing in: linux_G1GC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Code Context

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

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

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

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

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

Configuration enabled
default true
profiling true

Field Type Description
gcId uint GC Identifier
when GCWhen When
edenUsedSize ulong: bytes Eden Used Size
edenTotalSize ulong: bytes Eden Total Size
survivorUsedSize ulong: bytes Survivor Used Size
numberOfRegions uint Number of Regions

Examples 2
edenTotalSize ulong: bytes
51380224
edenUsedSize ulong: bytes
0
gcId uint
35
numberOfRegions uint
47
startTime long: millis
5441541596
survivorUsedSize ulong: bytes
3145728
when GCWhen
Before GC
edenTotalSize ulong: bytes
54525952
edenUsedSize ulong: bytes
0
gcId uint
40
numberOfRegions uint
70
startTime long: millis
1782018316
survivorUsedSize ulong: bytes
2097152
when GCWhen
After GC

JVM: GC: Metaspace

MetaspaceGCThreshold

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Metaspace

Code Context

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

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

void MetaspaceTracer::report_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

Examples 3
newValue ulong: bytes
273612800
oldValue ulong: bytes
238551040
startTime long: millis
51665459292
updater GCThresholdUpdater
compute_new_size
newValue ulong: bytes
26542080
oldValue ulong: bytes
26214400
startTime long: millis
4519679268
updater GCThresholdUpdater
expand_and_allocate
newValue ulong: bytes
25034752
oldValue ulong: bytes
24707072
startTime long: millis
1601624189
updater GCThresholdUpdater
compute_new_size

MetaspaceAllocationFailure

default profiling startTime stackTrace 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Metaspace

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ZGC

Missing in: linux_ShenandoahGC

Code Context

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

src/hotspot/share/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
unsafeAnonymousClassLoader boolean until JDK 15 Unsafe Anonymous Class Loader
size ulong: bytes Size
metadataType MetadataType Metadata Type
metaspaceObjectType MetaspaceObjectType Metaspace Object Type

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
25.0.3
name string
java/net
metadataType MetadataType
Class
metaspaceObjectType MetaspaceObjectType
Class
size ulong: bytes
1072
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(Ljava/lang/ClassLoader;Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class;
hidden boolean
false
modifiers int
264
name string
defineClass1
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1025
name string
java/lang/ClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
type FrameType
Native
truncated boolean
true
startTime long: millis
3937751090
classLoader ClassLoader
name string
bootstrap
type Class
null
metadataType MetadataType
Class
metaspaceObjectType MetaspaceObjectType
Class
size ulong: bytes
592
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
123
lineNumber int
625
method Method
descriptor string
(ZLcom/sun/org/apache/xerces/internal/xni/XMLString;)Ljava/lang/String;
hidden boolean
false
modifiers int
4
name string
scanPseudoAttribute
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1025
name string
com/sun/org/apache/xerces/internal/impl/XMLScanner
package Package
exported boolean
false
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.xml
name string
java.xml
version string
25.0.3
name string
com/sun/org/apache/xerces/internal/impl
type FrameType
Interpreted
truncated boolean
true
startTime long: millis
4519529647
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
metadataType MetadataType
Metadata
metaspaceObjectType MetaspaceObjectType
TypeArrayU8
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
1025
name string
java/lang/ClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
type FrameType
Native
truncated boolean
true
startTime long: millis
4063697112

MetaspaceOOM

default profiling startTime stackTrace 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Metaspace

Code Context

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

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

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

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

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

Configuration enabled stackTrace
default true true
profiling true true

Field Type Description
classLoader ClassLoader Class Loader
unsafeAnonymousClassLoader boolean until JDK 15 Unsafe Anonymous Class Loader
size ulong: bytes Size
metadataType MetadataType Metadata Type
metaspaceObjectType MetaspaceObjectType Metaspace Object Type

MetaspaceChunkFreeListSummary

default profiling startTime 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Metaspace

Code Context

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

src/hotspot/share/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
metadataType MetadataType Metadata Type
specializedChunks ulong Specialized Chunks
specializedChunksTotalSize ulong: bytes Specialized Chunks Total Size
smallChunks ulong Small Chunks
smallChunksTotalSize ulong: bytes Small Chunks Total Size
mediumChunks ulong Medium Chunks
mediumChunksTotalSize ulong: bytes Medium Chunks Total Size
humongousChunks ulong Humongous Chunks
humongousChunksTotalSize ulong: bytes Humongous Chunks Total Size

Examples 3
gcId uint
6
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
1635438776
when GCWhen
After GC
gcId uint
12
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
1400006822
when GCWhen
Before GC
gcId uint
8
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
640938678
when GCWhen
After GC

JVM: GC: Phases

GCPhasePause

default profiling startTime duration eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Phases

Code Context

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

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

    e.set_gcThreshold(meta_space_summary.capacity_until_GC());
    e.set_metaspace(to_struct(meta_space_summary.meta_space()));
    e.set_dataSpace(to_struct(meta_space_summary.data_space()));
    e.set_classSpace(to_struct(meta_space_summary.class_space()));
    e.commit();
  }
}

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

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

  void visit_concurrent(GCPhase* phase) {
    assert(phase->level() < 1, "There is only one level 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
25
name string
Pause Cleanup
startTime long: millis
2935008971
gcId uint
10
name string
GC Pause
startTime long: millis
675552770
gcId uint
48
name string
GC Pause
startTime long: millis
35162337601

GCPhasePauseLevel1

default profiling startTime duration eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Phases

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Missing in: linux_ZGC

Code Context

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

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

    e.set_metaspace(to_struct(meta_space_summary.meta_space()));
    e.set_dataSpace(to_struct(meta_space_summary.data_space()));
    e.set_classSpace(to_struct(meta_space_summary.class_space()));
    e.commit();
  }
}

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

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

  void visit_concurrent(GCPhase* phase) {
    assert(phase->level() < 1, "There is only one level 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
12
name string
Notify PhantomReferences
startTime long: millis
757863662
gcId uint
23
name string
Reference Processing
startTime long: millis
15824839405
gcId uint
6
name string
Notify and keep alive finalizable
startTime long: millis
1048615811

GCPhasePauseLevel2

default profiling startTime duration eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Phases

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: linux_ShenandoahGC, linux_ZGC

Code Context

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

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

    e.set_dataSpace(to_struct(meta_space_summary.data_space()));
    e.set_classSpace(to_struct(meta_space_summary.class_space()));
    e.commit();
  }
}

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

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

  void visit_concurrent(GCPhase* phase) {
    assert(phase->level() < 1, "There is only one level 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
33
name string
Phase 1: Weak Processing
startTime long: millis
5096274712
gcId uint
3
name string
Free Code Blobs
startTime long: millis
590145065
gcId uint
8
name string
Notify and keep alive finalizable
startTime long: millis
2067576926

GCPhasePauseLevel3

startTime duration eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Phases

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC

Missing in: linux_ShenandoahGC, linux_ZGC

Code Context

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

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

    e.set_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() < 1, "There is only one level for ConcurrentPhase");

    switch (phase->level()) {
      case 0: send_phase<EventGCPhaseConcurrent>(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 3
gcId uint
29
name string
ClassLoaderData
startTime long: millis
20190613784
gcId uint
29
name string
Free Code Blobs
startTime long: millis
1595397067
gcId uint
92
name string
Purge Unlinked NMethods
startTime long: millis
17365625050

GCPhasePauseLevel4

startTime duration eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Phases

Appearing in: linux_G1GC, linux_ParallelGC

Missing in: linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Code Context

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

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

    e.commit();
  }
}

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

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

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

    switch (phase->level()) {
      case 0: send_phase<EventGCPhaseConcurrent>(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
113
name string
Balance queues
startTime long: millis
99119212440
gcId uint
251
name string
Balance queues
startTime long: millis
63576692754

GCPhaseConcurrent

default profiling startTime duration eventThread 11 17 21 25 26 27

Category: Java Virtual Machine / GC / Phases

Appearing in: linux_G1GC, linux_ShenandoahGC, linux_ZGC

Missing in: linux_ParallelGC, linux_SerialGC

Code Context

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

src/hotspot/share/gc/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() < 1, "There is only one level for ConcurrentPhase");

    switch (phase->level()) {
      case 0: send_phase<EventGCPhaseConcurrent>(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
82
name string
Concurrent Mark From Roots
startTime long: millis
13457708763
gcId uint
225
name string
Concurrent Scan Root Regions
startTime long: millis
3845388486
gcId uint
12
name string
Concurrent marking roots
startTime long: millis
22653803657

GCPhaseParallel

default profiling startTime duration eventThread 12 17 21 25 26 27

Category: Java Virtual Machine / GC / Phases

Appearing in: linux_G1GC, linux_ShenandoahGC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ZGC

GC phases for parallel workers

Code Context

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

src/hotspot/share/gc/g1/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/g1GCPhaseTimes.hpp:

public:
  G1EvacPhaseWithTrimTimeTracker(G1ParScanThreadState* pss, Tickspan& total_time, Tickspan& trim_time);
  ~G1EvacPhaseWithTrimTimeTracker();

  void stop();
};

class G1GCParPhaseTimesTracker : public CHeapObj<mtGC> {
protected:
  Ticks _start_time;
  G1GCPhaseTimes::GCParPhases _phase;
  G1GCPhaseTimes* _phase_times;
  uint _worker_id;
  EventGCPhaseParallel _event;
  bool _must_record;

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

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

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

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 3
gcId uint
2
gcWorkerId uint
3
name string
MergeLB
startTime long: millis
577531460
gcId uint
40
gcWorkerId uint
0
name string
Finish Mark
startTime long: millis
65776904073
gcId uint
5
gcWorkerId uint
0
name string
ClearLoggedCards
startTime long: millis
1031128512

JVM: GC: Reference

GCReferenceStatistics

default profiling startTime 11 17 21 25 26 27

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
count ulong Total Count

Examples 3
count ulong
0
gcId uint
12
startTime long: millis
757869944
type ReferenceType
Final reference
count ulong
0
gcId uint
18
startTime long: millis
1673403143
type ReferenceType
Final reference
count ulong
5
gcId uint
0
startTime long: millis
363287184
type ReferenceType
Phantom reference

JVM: Profiling

OldObjectSample

cutoff default profiling startTime eventThread stackTrace 11 17 21 25 26 27

Category: Java Virtual Machine / Profiling

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ZGC

Missing in: linux_ShenandoahGC

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:

    // even though it was not reachable / too long to reach,
    // we need to register a top level edge for this object.
    edge = edge_store->put(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:

  assert(tl != NULL, "invariant");
  if (tl->is_excluded()) {
    return 0;
  }
  if (!tl->has_thread_blob()) {
    JfrCheckpointManager::create_thread_blob(thread);
  }
  assert(tl->has_thread_blob(), "invariant");
  return tl->thread_id();
}

static void record_stacktrace(JavaThread* thread) {
  assert(thread != NULL, "invariant");
  if (JfrEventSetting::has_stacktrace(EventOldObjectSample::eventId)) {
    JfrStackTraceRepository::record_and_cache(thread);
  }
}

void ObjectSampler::sample(HeapWord* obj, size_t allocated, JavaThread* thread) {
  assert(thread != NULL, "invariant");
  assert(is_created(), "invariant");
  const traceid thread_id = get_thread_id(thread);
  if (thread_id == 0) {
    return;
  }

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
objectAge Tickspan 14+ Object Age
lastKnownHeapUsage ulong: bytes Last Known Heap Usage
object OldObject Object
arrayElements int Array Elements If the object is an array, the number of elements, or -1 if it is not an array
root OldObjectGcRoot GC Root

Examples 3
allocationTime Ticks
25399081217
arrayElements int
4096
lastKnownHeapUsage ulong: bytes
7765616
object OldObject
address ulong: address
30173537080
description string
null
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
objectAge Tickspan
25509663
root OldObjectGcRoot
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
24
lineNumber int
494
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
allocateAndGC
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
25424590880
allocationTime Ticks
104517349089
arrayElements int
-2147483648
lastKnownHeapUsage ulong: bytes
117325328
object OldObject
address ulong: address
30288125488
description string
Size: 11
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
8
name string
java/lang/ThreadLocal$ThreadLocalMap
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
objectAge Tickspan
8832727050
root OldObjectGcRoot
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
299
method Method
descriptor string
(Ljava/lang/Thread;Ljava/lang/Object;)V
hidden boolean
false
modifiers int
0
name string
createMap
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/ThreadLocal
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
113350076139
allocationTime Ticks
4210208127
arrayElements int
119859
lastKnownHeapUsage ulong: bytes
101564528
object OldObject
address ulong: address
30994295392
description string
null
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
objectAge Tickspan
123665397138
root OldObjectGcRoot
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
163
lineNumber int
1725
method Method
descriptor string
(ILjava/util/zip/ZipCoder;)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
25.0.3
name string
java/util/zip
type FrameType
JIT compiled
truncated boolean
true
startTime long: millis
127875605265

ExecutionSample

default profiling startTime every chunk 11 17 21 25 26 27

Category: Java Virtual Machine / Profiling

Snapshot of a threads state

Code Context

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

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

JVM_ENTRY_NO_ENV(void, jfr_subscribe_log_level(JNIEnv* env, jobject jvm, jobject log_tag, jint id))
  JfrJavaLog::subscribe_log_level(log_tag, id, thread);
JVM_END

JVM_ENTRY_NO_ENV(void, jfr_set_output(JNIEnv* env, jobject jvm, jstring path))
  JfrRepository::set_chunk_path(path, thread);
JVM_END

JVM_ENTRY_NO_ENV(void, jfr_set_method_sampling_interval(JNIEnv* env, jobject jvm, jlong type, jlong intervalMillis))
  if (intervalMillis < 0) {
    intervalMillis = 0;
  }
  JfrEventId typed_event_id = (JfrEventId)type;
  assert(EventExecutionSample::eventId == typed_event_id || EventNativeMethodSample::eventId == typed_event_id, "invariant");
  if (intervalMillis > 0) {
    JfrEventSetting::set_enabled(typed_event_id, true); // ensure sampling event is enabled
  }
  if (EventExecutionSample::eventId == type) {
    JfrThreadSampling::set_java_sample_interval(intervalMillis);
  } else {
    JfrThreadSampling::set_native_sample_interval(intervalMillis);
  }
JVM_END

JVM_ENTRY_NO_ENV(void, jfr_store_metadata_descriptor(JNIEnv* env, jobject jvm, jbyteArray descriptor))
  JfrMetadataEvent::update(descriptor);
JVM_END

// trace thread id for a thread object

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

    case _thread_in_native_trans:
      break;
    case _thread_in_native:
      return true;
    default:
      ShouldNotReachHere();
      break;
  }
  return false;
}

class JfrThreadSampleClosure {
 public:
  JfrThreadSampleClosure(EventExecutionSample* events, EventNativeMethodSample* events_native);
  ~JfrThreadSampleClosure() {}
  EventExecutionSample* next_event() { return &_events[_added_java++]; }
  EventNativeMethodSample* next_event_native() { return &_events_native[_added_native++]; }
  void commit_events(JfrSampleType type);
  bool do_sample_thread(JavaThread* thread, JfrStackFrame* frames, u4 max_frames, JfrSampleType type);
  uint java_entries() { return _added_java; }
  uint native_entries() { return _added_native; }

 private:
  bool sample_thread_in_java(JavaThread* thread, JfrStackFrame* frames, u4 max_frames);
  bool sample_thread_in_native(JavaThread* thread, JfrStackFrame* frames, u4 max_frames);
  EventExecutionSample* _events;
  EventNativeMethodSample* _events_native;
  Thread* _self;
  uint _added_java;
  uint _added_native;
};

class OSThreadSampler : public os::SuspendedThreadTask {
 public:
  OSThreadSampler(JavaThread* thread,
                  JfrThreadSampleClosure& closure,
                  JfrStackFrame *frames,

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

  // Skip sample if we signaled a thread that moved to other state
  if (!thread_state_in_java(jth)) {
    return;
  }
  JfrGetCallTrace trace(true, jth);
  frame topframe;
  if (trace.get_topframe(context.ucontext(), topframe)) {
    if (_stacktrace.record_thread(*jth, topframe)) {
      /* If we managed to get a topframe and a stacktrace, create an event
      * and put it into our array. We can't call Jfr::_stacktraces.add()
      * here since it would allocate memory using malloc. Doing so while
      * the stopped thread is inside malloc would deadlock. */
      _success = true;
      EventExecutionSample *ev = _closure.next_event();
      ev->set_starttime(_suspend_time);
      ev->set_endtime(_suspend_time); // fake to not take an end time
      ev->set_sampledThread(JFR_THREAD_ID(jth));
      ev->set_state(java_lang_Thread::get_thread_status(jth->threadObj()));
    }
  }
}

void OSThreadSampler::take_sample() {
  run();
}

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

bool JfrThreadSampleClosure::sample_thread_in_java(JavaThread* thread, JfrStackFrame* frames, u4 max_frames) {
  OSThreadSampler sampler(thread, *this, frames, max_frames);
  sampler.take_sample();
  /* We don't want to allocate any memory using malloc/etc while the thread
  * is stopped, so everything is stored in stack allocated memory until this
  * point where the thread has been resumed again, if the sampling was a success
  * we need to store the stacktrace in the stacktrace repository and update
  * the event with the id that was returned. */
  if (!sampler.success()) {
    return false;
  }
  EventExecutionSample *event = &_events[_added_java - 1];
  traceid id = JfrStackTraceRepository::add(sampler.stacktrace());
  assert(id != 0, "Stacktrace id should not be 0");
  event->set_stackTrace(id);
  return true;
}

bool JfrThreadSampleClosure::sample_thread_in_native(JavaThread* thread, JfrStackFrame* frames, u4 max_frames) {
  JfrNativeSamplerCallback cb(*this, thread, frames, max_frames);
  if (JfrOptionSet::sample_protection()) {
    os::ThreadCrashProtection crash_protection;
    if (!crash_protection.call(cb)) {

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

    assert(_added_java > 0 && _added_java <= MAX_NR_OF_JAVA_SAMPLES, "invariant");
    for (uint i = 0; i < _added_java; ++i) {
      _events[i].commit();
    }
  } else {
    assert(NATIVE_SAMPLE == type, "invariant");
    assert(_added_native > 0 && _added_native <= MAX_NR_OF_NATIVE_SAMPLES, "invariant");
    for (uint i = 0; i < _added_native; ++i) {
      _events_native[i].commit();
    }
  }
}

JfrThreadSampleClosure::JfrThreadSampleClosure(EventExecutionSample* events, EventNativeMethodSample* events_native) :
  _events(events),
  _events_native(events_native),
  _self(Thread::current()),
  _added_java(0),
  _added_native(0) {
}

class JfrThreadSampler : public NonJavaThread {
  friend class JfrThreadSampling;
 private:
  Semaphore _sample;

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

      last_native_ms = get_monotonic_ms();
    }
  }
}

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


void JfrThreadSampler::task_stacktrace(JfrSampleType type, JavaThread** last_thread) {
  ResourceMark rm;
  EventExecutionSample samples[MAX_NR_OF_JAVA_SAMPLES];
  EventNativeMethodSample samples_native[MAX_NR_OF_NATIVE_SAMPLES];
  JfrThreadSampleClosure sample_task(samples, samples_native);

  const uint sample_limit = JAVA_SAMPLE == type ? MAX_NR_OF_JAVA_SAMPLES : MAX_NR_OF_NATIVE_SAMPLES;
  uint num_samples = 0;
  JavaThread* start = NULL;

  {
    elapsedTimer sample_time;
    sample_time.start();
    {

Configuration enabled period
default true 20 ms
profiling true 10 ms

Field Type Description
sampledThread Thread Thread
stackTrace StackTrace Stack Trace
state ThreadState Thread State

Examples 3
sampledThread Thread
group ThreadGroup
name string
InnocuousForkJoinWorkerThreadGroup
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
ForkJoinPool.commonPool-worker-3
javaThreadId long
38
osName string
ForkJoinPool.commonPool-worker-3
osThreadId long
2809
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
23
lineNumber int
608
method Method
descriptor string
(Ljava/util/stream/Sink;)Ljava/util/stream/Sink;
hidden boolean
false
modifiers int
16
name string
wrapSink
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1024
name string
java/util/stream/AbstractPipeline
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/stream
type FrameType
Inlined
truncated boolean
false
startTime long: millis
2288452596
state ThreadState
STATE_RUNNABLE
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
3
osName string
main
osThreadId long
2793
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
70
lineNumber int
975
method Method
descriptor string
([B[B[B[B)I
hidden boolean
false
modifiers int
2
name string
match
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/jar/JarFile
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/jar
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
493446458
state ThreadState
STATE_RUNNABLE
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
3
osName string
main
osThreadId long
3277
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
56
lineNumber int
414
method Method
descriptor string
(Ljava/lang/Object;)Ljava/util/TreeMap$Entry;
hidden boolean
false
modifiers int
16
name string
getEntryUsingComparator
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
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
25.0.3
name string
java/util
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
699698666
state ThreadState
STATE_RUNNABLE

NativeMethodSample

default profiling startTime every chunk 11 17 21 25 26 27

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

JVM_ENTRY_NO_ENV(void, jfr_subscribe_log_level(JNIEnv* env, jobject jvm, jobject log_tag, jint id))
  JfrJavaLog::subscribe_log_level(log_tag, id, thread);
JVM_END

JVM_ENTRY_NO_ENV(void, jfr_set_output(JNIEnv* env, jobject jvm, jstring path))
  JfrRepository::set_chunk_path(path, thread);
JVM_END

JVM_ENTRY_NO_ENV(void, jfr_set_method_sampling_interval(JNIEnv* env, jobject jvm, jlong type, jlong intervalMillis))
  if (intervalMillis < 0) {
    intervalMillis = 0;
  }
  JfrEventId typed_event_id = (JfrEventId)type;
  assert(EventExecutionSample::eventId == typed_event_id || EventNativeMethodSample::eventId == typed_event_id, "invariant");
  if (intervalMillis > 0) {
    JfrEventSetting::set_enabled(typed_event_id, true); // ensure sampling event is enabled
  }
  if (EventExecutionSample::eventId == type) {
    JfrThreadSampling::set_java_sample_interval(intervalMillis);
  } else {
    JfrThreadSampling::set_native_sample_interval(intervalMillis);
  }
JVM_END

JVM_ENTRY_NO_ENV(void, jfr_store_metadata_descriptor(JNIEnv* env, jobject jvm, jbyteArray descriptor))

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

    case _thread_in_native_trans:
      break;
    case _thread_in_native:
      return true;
    default:
      ShouldNotReachHere();
      break;
  }
  return false;
}

class JfrThreadSampleClosure {
 public:
  JfrThreadSampleClosure(EventExecutionSample* events, EventNativeMethodSample* events_native);
  ~JfrThreadSampleClosure() {}
  EventExecutionSample* next_event() { return &_events[_added_java++]; }
  EventNativeMethodSample* next_event_native() { return &_events_native[_added_native++]; }
  void commit_events(JfrSampleType type);
  bool do_sample_thread(JavaThread* thread, JfrStackFrame* frames, u4 max_frames, JfrSampleType type);
  uint java_entries() { return _added_java; }
  uint native_entries() { return _added_native; }

 private:
  bool sample_thread_in_java(JavaThread* thread, JfrStackFrame* frames, u4 max_frames);
  bool sample_thread_in_native(JavaThread* thread, JfrStackFrame* frames, u4 max_frames);
  EventExecutionSample* _events;
  EventNativeMethodSample* _events_native;
  Thread* _self;
  uint _added_java;
  uint _added_native;
};

class OSThreadSampler : public os::SuspendedThreadTask {
 public:
  OSThreadSampler(JavaThread* thread,
                  JfrThreadSampleClosure& closure,
                  JfrStackFrame *frames,
                  u4 max_frames) : os::SuspendedThreadTask((Thread*)thread),

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

  virtual void call();
  bool success() { return _success; }
  JfrStackTrace& stacktrace() { return _stacktrace; }

 private:
  JfrThreadSampleClosure& _closure;
  JavaThread* _jt;
  JfrStackTrace _stacktrace;
  bool _success;
};

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

void JfrNativeSamplerCallback::call() {
  // When a thread is only attach it will be native without a last java frame
  if (!_jt->has_last_Java_frame()) {
    return;
  }

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

bool JfrThreadSampleClosure::sample_thread_in_native(JavaThread* thread, JfrStackFrame* frames, u4 max_frames) {
  JfrNativeSamplerCallback cb(*this, thread, frames, max_frames);
  if (JfrOptionSet::sample_protection()) {
    os::ThreadCrashProtection crash_protection;
    if (!crash_protection.call(cb)) {
      log_error(jfr)("Thread method sampler crashed for native");
    }
  } else {
    cb.call();
  }
  if (!cb.success()) {
    return false;
  }
  EventNativeMethodSample *event = &_events_native[_added_native - 1];
  traceid id = JfrStackTraceRepository::add(cb.stacktrace());
  assert(id != 0, "Stacktrace id should not be 0");
  event->set_stackTrace(id);
  return true;
}

static const uint MAX_NR_OF_JAVA_SAMPLES = 5;
static const uint MAX_NR_OF_NATIVE_SAMPLES = 1;

void JfrThreadSampleClosure::commit_events(JfrSampleType type) {
  if (JAVA_SAMPLE == type) {

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

    assert(_added_java > 0 && _added_java <= MAX_NR_OF_JAVA_SAMPLES, "invariant");
    for (uint i = 0; i < _added_java; ++i) {
      _events[i].commit();
    }
  } else {
    assert(NATIVE_SAMPLE == type, "invariant");
    assert(_added_native > 0 && _added_native <= MAX_NR_OF_NATIVE_SAMPLES, "invariant");
    for (uint i = 0; i < _added_native; ++i) {
      _events_native[i].commit();
    }
  }
}

JfrThreadSampleClosure::JfrThreadSampleClosure(EventExecutionSample* events, EventNativeMethodSample* events_native) :
  _events(events),
  _events_native(events_native),
  _self(Thread::current()),
  _added_java(0),
  _added_native(0) {
}

class JfrThreadSampler : public NonJavaThread {
  friend class JfrThreadSampling;
 private:
  Semaphore _sample;

src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp:

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


void JfrThreadSampler::task_stacktrace(JfrSampleType type, JavaThread** last_thread) {
  ResourceMark rm;
  EventExecutionSample samples[MAX_NR_OF_JAVA_SAMPLES];
  EventNativeMethodSample samples_native[MAX_NR_OF_NATIVE_SAMPLES];
  JfrThreadSampleClosure sample_task(samples, samples_native);

  const uint sample_limit = JAVA_SAMPLE == type ? MAX_NR_OF_JAVA_SAMPLES : MAX_NR_OF_NATIVE_SAMPLES;
  uint num_samples = 0;
  JavaThread* start = NULL;

  {
    elapsedTimer sample_time;
    sample_time.start();
    {
      MutexLocker tlock(Threads_lock);

Configuration enabled period
default true 20 ms
profiling true 20 ms

Field Type Description
sampledThread Thread Thread
stackTrace StackTrace Stack Trace
state ThreadState Thread State

Examples 3
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
3
osName string
main
osThreadId long
3277
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(Ljava/io/FileDescriptor;IJ)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
1
name string
sun/nio/ch/Net
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
sun/nio/ch
type FrameType
Native
truncated boolean
false
startTime long: millis
1136090522
state ThreadState
STATE_RUNNABLE
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-akka.actor.default-dispatcher-12
javaThreadId long
71
osName string
UCT-akka.actor.default-dispatcher-12
osThreadId long
2863
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
17
name string
jdk/internal/misc/Unsafe
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/misc
type FrameType
Native
truncated boolean
false
startTime long: millis
10716525125
state ThreadState
STATE_RUNNABLE
sampledThread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
3
osName string
main
osThreadId long
2777
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(J[BII[BII)J
hidden boolean
false
modifiers int
258
name string
inflateBytesBytes
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/zip/Inflater
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/zip
type FrameType
Native
truncated boolean
false
startTime long: millis
25815033717
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(&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 25 26 27

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 25 26 27

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:

    Interpreter::notice_safepoints();

    // Make polling safepoint aware
    guarantee (!PageArmed, "invariant") ;
    PageArmed = true;
    os::make_polling_page_unreadable();
  }
}

// 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
16
startTime long: millis
640199105
totalThreadCount int
24
jniCriticalThreadCount int
0
safepointId ulong
75
startTime long: millis
40607980646
totalThreadCount int
45
jniCriticalThreadCount int
0
safepointId ulong
43
startTime long: millis
4470901720
totalThreadCount int
16

SafepointStateSynchronization

startTime duration eventThread 11 17 21 25 26 27

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
2
iterations int
12
runningThreadCount int
0
safepointId ulong
33
startTime long: millis
1451990640
initialThreadCount int
0
iterations int
1
runningThreadCount int
0
safepointId ulong
52
startTime long: millis
4596436348
initialThreadCount int
1
iterations int
3
runningThreadCount int
0
safepointId ulong
69
startTime long: millis
35795410348

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

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(SubTasksDone(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));
      ObjectSynchronizer::deflate_idle_monitors(_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

SafepointEnd

startTime duration eventThread 11 17 21 25 26 27

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
33
startTime long: millis
15825053196
safepointId ulong
50
startTime long: millis
4571342787
safepointId ulong
86
startTime long: millis
2191252801

ExecuteVMOperation

default profiling startTime duration eventThread 11 17 21 25 26 27

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
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
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
3
osName string
main
osThreadId long
2793
virtual boolean
false
operation VMOperationType
HandshakeAllThreads
safepoint boolean
false
safepointId ulong
0
startTime long: millis
624693990
blocking boolean
true
caller Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
pool-1-thread-2
javaThreadId long
35
osName string
pool-1-thread-2
osThreadId long
3308
virtual boolean
false
operation VMOperationType
G1CollectForAllocation
safepoint boolean
true
safepointId ulong
46
startTime long: millis
1675693959
blocking boolean
true
caller Thread
group ThreadGroup
null
javaName string
null
javaThreadId long
0
osName string
G1 Main Marker
osThreadId long
2779
virtual boolean
false
operation VMOperationType
G1PauseCleanup
safepoint boolean
true
safepointId ulong
84
startTime long: millis
7248898210

Shutdown

default profiling startTime eventThread stackTrace 11 17 21 25 26 27

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

  JavaThread* thread = JavaThread::current();

#ifdef ASSERT
  _vm_complete = false;
#endif
  // Wait until we are the last non-daemon thread to execute
  { MonitorLocker nu(Threads_lock);
    while (Threads::number_of_non_daemon_threads() > 1)
      // This wait should make safepoint checks, wait without a timeout,
      // and wait as a suspend-equivalent condition.
      nu.wait(0, Mutex::_as_suspend_equivalent_flag);
  }

  EventShutdown e;
  if (e.should_commit()) {
    e.set_reason("No remaining non-daemon Java threads");
    e.commit();
  }

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

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

  HandleMark hm(THREAD);
  const char* temp_dir = os::get_temp_directory();
  Handle h = java_lang_String::create_from_platform_dependent_str(temp_dir, CHECK_NULL);
  return (jstring) JNIHandles::make_local(env, h());
JVM_END


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

extern volatile jint vm_created;

JVM_ENTRY_NO_ENV(void, JVM_BeforeHalt())
  JVMWrapper("JVM_BeforeHalt");
  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/utilities/vmError.cpp:

      show_message_box(buffer, sizeof(buffer));

      // User has asked JVM to abort. Reset ShowMessageBoxOnError so the
      // WatcherThread can kill JVM if the error handler hangs.
      ShowMessageBoxOnError = false;
    }

    os::check_dump_limit(buffer, sizeof(buffer));

    // reset signal handlers or exception filter; make sure recursive crashes
    // are handled properly.
    reset_signal_handlers();

    EventShutdown e;
    if (e.should_commit()) {
      e.set_reason("VM Error");
      e.commit();
    }

    JFR_ONLY(Jfr::on_vm_shutdown(true);)

  } else {
    // If UseOsErrorReporting we call this for each level of the call stack
    // while searching for the exception handler.  Only the first level needs
    // to be reported.

Configuration enabled stackTrace
default true true
profiling true true

Field Type Description
reason string Reason Reason for JVM shutdown

Examples 3
reason string
No remaining non-daemon Java threads
stackTrace StackTrace
null
startTime long: millis
25424037364
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
0
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
25.0.3
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
127875037324
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
0
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
25.0.3
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
113349532882

SymbolTableStatistics

default profiling startTime duration every chunk 13 17 21 25 26 27

Category: Java Virtual Machine / Runtime / Tables

Code Context

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

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

  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
6.3170166
bucketCountMaximum ulong
19
bucketCountStandardDeviation float
2.515351
bucketCountVariance float
6.3269906
entryCount ulong
206996
insertionRate float
12126.7295
removalRate float
156.68468
startTime long: millis
42161379848
totalFootprint ulong: bytes
19301280
bucketCount ulong
65536
bucketCountAverage float
4.8157043
bucketCountMaximum ulong
16
bucketCountStandardDeviation float
2.2016149
bucketCountVariance float
4.847108
entryCount ulong
315602
insertionRate float
1192.8201
removalRate float
165.65031
startTime long: millis
92611588893
totalFootprint ulong: bytes
32940200
bucketCount ulong
32768
bucketCountAverage float
1.1361389
bucketCountMaximum ulong
7
bucketCountStandardDeviation float
1.0575436
bucketCountVariance float
1.1183985
entryCount ulong
37229
insertionRate float
40.940933
removalRate float
41.038876
startTime long: millis
20834787417
totalFootprint ulong: bytes
2449408

StringTableStatistics

default profiling startTime duration every chunk 13 17 21 25 26 27

Category: Java Virtual Machine / Runtime / Tables

Code Context

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

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

  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
0.7622833
bucketCountMaximum ulong
7
bucketCountStandardDeviation float
0.8697317
bucketCountVariance float
0.7564333
entryCount ulong
49957
insertionRate float
136.91252
removalRate float
44.193905
startTime long: millis
92618286027
totalFootprint ulong: bytes
5433704
bucketCount ulong
65536
bucketCountAverage float
0.09602356
bucketCountMaximum ulong
3
bucketCountStandardDeviation float
0.31060764
bucketCountVariance float
0.096477106
entryCount ulong
6293
insertionRate float
5507.0
removalRate float
28.0
startTime long: millis
10626531440
totalFootprint ulong: bytes
1033512
bucketCount ulong
65536
bucketCountAverage float
0.45220947
bucketCountMaximum ulong
5
bucketCountStandardDeviation float
0.66891974
bucketCountVariance float
0.44745362
entryCount ulong
29636
insertionRate float
1519.2952
removalRate float
32.668808
startTime long: millis
42166654640
totalFootprint ulong: bytes
3297248

PlaceholderTableStatistics

default profiling startTime duration every chunk 17 until JDK 20

Category: Java Virtual Machine / Runtime / Tables

Code Context

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

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

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

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

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

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

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

Configuration enabled period
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

Code Context

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

Code Context

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

Category: Java Virtual Machine / Runtime

Code Context

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

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

  Thread* THREAD = Thread::current();
  assert(!HAS_PENDING_EXCEPTION, "dcmd does not expect pending exceptions on entry!");
  // delegate to DCmd execution
  DCmd::parse_and_execute(DCmd_Source_Internal, &st, cmd, ' ', THREAD);
  if (HAS_PENDING_EXCEPTION) {
    log_debug(jfr, system)("unable to create jfr event for DCMD %s", cmd);
    log_debug(jfr, system)("exception type: %s", PENDING_EXCEPTION->klass()->external_name());
    // don't unwind this exception
    CLEAR_PENDING_EXCEPTION;
    // if exception occurred,
    // reset stream.
    st.reset();
    return false;
  }
  return true;
}

// caller needs ResourceMark
const char* JfrDcmdEvent::thread_dump() {
  assert(EventThreadDump::is_enabled(), "invariant");
  bufferedStream st;
  execute_dcmd(st, "Thread.print");
  return st.as_string();
}

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

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

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

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

Configuration enabled period
default true everyChunk
profiling true 60 s

Field Type Description
result string Thread Dump

Examples 3
result string
2026-06-03 14:07:26 Full thread dump OpenJDK 64-Bit Server VM (25.0.3+9-LTS mixed mode, sharing): Threads class SMR info: _java_thread_list=0x00007ff2bd24b4b0, length=48, elements={ 0x00007ff2e8053b40, 0x00007ff2e8141af0, 0x00007ff2e8143840, 0x00007ff2e8145780, 0x00007ff2e8147490, 0x00007ff2e8148e4
startTime long: millis
72825395628
result string
2026-06-03 14:06:22 Full thread dump OpenJDK 64-Bit Server VM (25.0.3+9-LTS mixed mode, sharing): Threads class SMR info: _java_thread_list=0x00007fb2b2352230, length=21, elements={ 0x00007fb2b0053b20, 0x00007fb2b00ca340, 0x00007fb2b00cbf30, 0x00007fb2b00cdf70, 0x00007fb2b00cfd80, 0x00007fb2b00d15d
startTime long: millis
20773793203
result string
2026-06-03 14:08:34 Full thread dump OpenJDK 64-Bit Server VM (25.0.3+9-LTS mixed mode, sharing): Threads class SMR info: _java_thread_list=0x00007f757d9d5b80, length=25, elements={ 0x00007f757c055840, 0x00007f757c1548e0, 0x00007f757c1567a0, 0x00007f757c158c10, 0x00007f757c15ab50, 0x00007f757c15c6e
startTime long: millis
10626535948

NativeLibrary

default profiling startTime every chunk 11 17 21 25 26 27

Category: Java Virtual Machine / Runtime

Code Context

The event is likely defined and utilized 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
140405580845056
name string
/opt/hostedtoolcache/Java_SapMachine_jdk/25.0.3/x64/bin/../lib/libjli.so
startTime long: millis
8580962970
topAddress ulong: address
140405580914688
baseAddress ulong: address
140681343401984
name string
/opt/hostedtoolcache/Java_SapMachine_jdk/25.0.3/x64/lib/server/libjvm.so
startTime long: millis
384675888
topAddress ulong: address
140681368375296
baseAddress ulong: address
140142713290752
name string
/opt/hostedtoolcache/Java_SapMachine_jdk/25.0.3/x64/bin/../lib/libjli.so
startTime long: millis
8156466995
topAddress ulong: address
140142713360384

ModuleRequire

default profiling startTime every chunk 11 17 21 25 26 27

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

Examples 3
requiredModule Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
jrt:/jdk.internal.opt
name string
jdk.internal.opt
version string
25.0.3
source Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
jrt:/jdk.jdeps
name string
jdk.jdeps
version string
25.0.3
startTime long: millis
8901564364
requiredModule Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.desktop
name string
java.desktop
version string
25.0.3
source Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
jrt:/jdk.unsupported.desktop
name string
jdk.unsupported.desktop
version string
25.0.3
startTime long: millis
8156486581
requiredModule Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
jrt:/jdk.internal.jvmstat
name string
jdk.internal.jvmstat
version string
25.0.3
source Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
jrt:/jdk.jstatd
name string
jdk.jstatd
version string
25.0.3
startTime long: millis
8580978333

ModuleExport

default profiling startTime every chunk 11 17 21 25 26 27

Category: Java Virtual Machine / Runtime / Modules

Code Context

The event is likely defined and utilized 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
targetModule Module Target Module Module to which the package is qualifiedly exported. If null or N/A, the package is unqualifiedly exported

Examples 3
exportedPackage Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/spi
startTime long: millis
8901612804
targetModule Module
null
exportedPackage Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/vm
startTime long: millis
8581054869
targetModule Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.management
name string
java.management
version string
25.0.3
exportedPackage Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.3
name string
jdk/jfr/internal/event
startTime long: millis
8156530253
targetModule Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3

Java Application

ThreadStart

default profiling startTime eventThread 11 17 21 25 26 27

Category: Java Application

Code Context

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

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

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

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

static void post_thread_start_event(const JavaThread* jt) {
  assert(jt != NULL, "invariant");
  EventThreadStart event;
  if (event.should_commit()) {
    event.set_thread(JFR_THREAD_ID(jt));
    event.commit();
  }
}

// Invocation API


// Forward declaration
extern const struct JNIInvokeInterface_ jni_InvokeInterface;

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.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()) {
    if (!t->jfr_thread_local()->is_excluded()) {
      JfrCheckpointManager::write_thread_checkpoint(t);

Configuration enabled
default true
profiling true

Field Type Description
thread Thread Java Thread

Examples 3
startTime long: millis
8516288295
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
51
osName string
UCT-akka.actor.internal-dispatcher-4
osThreadId long
2828
virtual boolean
false
startTime long: millis
4987489111
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Thread-74
javaThreadId long
131
osName string
Thread-74
osThreadId long
3414
virtual boolean
false
startTime long: millis
7662146469
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
53
osName string
UCT-akka.actor.default-dispatcher-10
osThreadId long
2848
virtual boolean
false

ThreadEnd

default profiling startTime eventThread 11 17 21 25 26 27

Category: Java Application

Code Context

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

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

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

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

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

  JFR_ONLY(Jfr::on_vm_shutdown();)

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

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

      JfrCheckpointManager::write_thread_checkpoint(t);
      if (t->is_Java_thread()) {
        send_java_thread_start_event((JavaThread*)t);
      }
    }
  }
}

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;

Configuration enabled
default true
profiling true

Field Type Description
thread Thread Java Thread

Examples 3
startTime long: millis
13759793236
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-akka.actor.default-dispatcher-11
javaThreadId long
76
osName string
UCT-akka.actor.default-dispatcher-11
osThreadId long
2852
virtual boolean
false
startTime long: millis
4660437432
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Thread-67
javaThreadId long
124
osName string
Thread-67
osThreadId long
3407
virtual boolean
false
startTime long: millis
13931594714
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
75
osName string
UCT-akka.actor.internal-dispatcher-2
osThreadId long
2868
virtual boolean
false

ThreadSleep

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

Category: Java Application

Code Context

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

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

  // Implied else: If the JavaThread hasn't started yet, then the
  // priority set in the java.lang.Thread object above will be pushed
  // down when it does start.
JVM_END


JVM_ENTRY(void, JVM_Yield(JNIEnv *env, jclass threadClass))
  JVMWrapper("JVM_Yield");
  if (os::dont_yield()) return;
  HOTSPOT_THREAD_YIELD();
  os::naked_yield();
JVM_END

static void post_thread_sleep_event(EventThreadSleep* event, jlong millis) {
  assert(event != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  event->set_time(millis);
  event->commit();
}

JVM_ENTRY(void, JVM_Sleep(JNIEnv* env, jclass threadClass, jlong millis))
  JVMWrapper("JVM_Sleep");

  if (millis < 0) {
    THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "timeout value is negative");
  }

  if (thread->is_interrupted(true) && !HAS_PENDING_EXCEPTION) {
    THROW_MSG(vmSymbols::java_lang_InterruptedException(), "sleep interrupted");
  }

  // Save current thread state and restore it at the end of this block.
  // And set new thread state to SLEEPING.
  JavaThreadSleepState jtss(thread);

  HOTSPOT_THREAD_SLEEP_BEGIN(millis);
  EventThreadSleep event;

  if (millis == 0) {
    os::naked_yield();
  } else {
    ThreadState old_state = thread->osthread()->get_state();
    thread->osthread()->set_state(SLEEPING);
    if (!thread->sleep(millis)) { // interrupted
      // An asynchronous exception (e.g., ThreadDeathException) could have been thrown on
      // us while we were sleeping. We do not overwrite those.
      if (!HAS_PENDING_EXCEPTION) {
        if (event.should_commit()) {

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
36
lineNumber int
90
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
1
name string
waitNanos
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
1
name string
akka/actor/LightArrayRevolverScheduler
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
location string
null
name string
null
version string
null
name string
akka/actor
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
8617633354
time long: millis
9000000
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
36
lineNumber int
90
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
1
name string
waitNanos
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
1
name string
akka/actor/LightArrayRevolverScheduler
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
location string
null
name string
null
version string
null
name string
akka/actor
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
7962451278
time long: millis
10000000
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
12
lineNumber int
49
method Method
descriptor string
()V
hidden boolean
false
modifiers int
4106
name string
lambda$main$0
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1068055951
time long: millis
5000000

ThreadPark

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

Category: Java Application

Code Context

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

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

} UNSAFE_END

UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSetLong(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jlong e, jlong x)) {
  oop p = JNIHandles::resolve(obj);
  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
30173225136
parkedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
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
25.0.3
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
25.0.3
name string
jdk/internal/misc
type FrameType
Native
truncated boolean
false
startTime long: millis
4676331671
timeout long: nanos
-9223372036854775808
until long: epochmillis
-9223372036854775808
address ulong: address
0
parkedClass Class
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(ZJ)V
hidden boolean
false
modifiers int
257
name string
park
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/internal/misc/Unsafe
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/misc
type FrameType
Native
truncated boolean
false
startTime long: millis
2306872107
timeout long: nanos
1000000
until long: epochmillis
-9223372036854775808
address ulong: address
30174311368
parkedClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
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
25.0.3
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
25.0.3
name string
jdk/internal/misc
type FrameType
Native
truncated boolean
false
startTime long: millis
5268124960
timeout long: nanos
-9223372036854775808
until long: epochmillis
-9223372036854775808

JavaMonitorEnter

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

Category: Java Application

Code Context

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

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

  assert(_owner != Self, "invariant");
  assert(_succ != Self, "invariant");
  assert(Self->is_Java_thread(), "invariant");
  JavaThread * jt = (JavaThread *) Self;
  assert(!SafepointSynchronize::is_at_safepoint(), "invariant");
  assert(jt->thread_state() != _thread_blocked, "invariant");
  assert(this->object() != NULL, "invariant");
  assert(_contentions >= 0, "invariant");

  // Prevent deflation at STW-time.  See deflate_idle_monitors() and is_busy().
  // Ensure the object-monitor relationship remains stable while there's contention.
  Atomic::inc(&_contentions);

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

    // release semantics: prior loads and stores from within the critical section
    // must not float (reorder) past the following store that drops the lock.
    Atomic::release_store(&_owner, (void*)NULL);   // drop the lock
    OrderAccess::storeload();                      // See if we need to wake a successor

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

Field Type Description
monitorClass Class Monitor Class
previousOwner Thread Previous Monitor Owner
address ulong: address Monitor Address

Examples 3
address ulong: address
140142590355600
monitorClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/jfr/internal/PlatformRecorder
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.3
name string
jdk/jfr/internal
previousOwner Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
3
osName string
main
osThreadId long
3277
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
15
lineNumber int
495
method Method
descriptor string
()V
hidden boolean
false
modifiers int
2
name string
periodicTask
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/jfr/internal/PlatformRecorder
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.3
name string
jdk/jfr/internal
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
383726793
address ulong: address
140405474002880
monitorClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
25
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
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
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-11
javaThreadId long
55
osName string
UCT-akka.actor.default-dispatcher-11
osThreadId long
2851
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
3
lineNumber int
114
method Method
descriptor string
()V
hidden boolean
false
modifiers int
1
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
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
25
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
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
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
8231719773
address ulong: address
93998975694400
monitorClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
25
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
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
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
61
osName string
UCT-akka.actor.default-dispatcher-10
osThreadId long
2837
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
3
lineNumber int
114
method Method
descriptor string
()V
hidden boolean
false
modifiers int
1
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
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
25
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
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
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
9104949325

JavaMonitorWait

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

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:

bool ObjectMonitor::check_owner(Thread* THREAD) {
  if (_owner == THREAD) {
    return true;
  }
  if (THREAD->is_lock_owned((address)_owner)) {
    _owner = THREAD;  // convert from BasicLock addr to Thread addr
    _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
94612100718112
monitorClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Object
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
notifier Thread
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
274
name string
wait0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Object
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
3495740119
timedOut boolean
true
timeout long: millis
1
address ulong: address
93878647185072
monitorClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[I
package Package
null
notifier Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Thread-17
javaThreadId long
240
osName string
Thread-17
osThreadId long
3054
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
29
method Method
descriptor string
()Lscala/collection/IterableFactory;
hidden boolean
false
modifiers int
1
name string
iterableFactory
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
1537
name string
scala/collection/View
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
location string
null
name string
null
version string
null
name string
scala/collection
type FrameType
Interpreted
truncated boolean
true
startTime long: millis
47280683631
timedOut boolean
false
timeout long: millis
0
address ulong: address
140681284603632
monitorClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[I
package Package
null
notifier Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
Thread-17
javaThreadId long
251
osName string
Thread-17
osThreadId long
3053
virtual boolean
false
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
128
method Method
descriptor string
(Lorg/neo4j/cypher/internal/config/CypherConfiguration;)Lscala/PartialFunction;
hidden boolean
false
modifiers int
2
name string
fromCypherConfigurationBoolean
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
1025
name string
org/neo4j/cypher/internal/options/CypherOptionCompanion
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
location string
null
name string
null
version string
null
name string
org/neo4j/cypher/internal/options
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
53741265100
timedOut boolean
false
timeout long: millis
0

JavaMonitorInflate

profiling startTime duration eventThread stackTrace 11 17 21 25 26 27

Category: Java Application

Code Context

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

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

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

static void post_monitor_inflate_event(EventJavaMonitorInflate* event,
                                       const oop obj,
                                       ObjectSynchronizer::InflateCause cause) {
  assert(event != NULL, "invariant");
  assert(event->should_commit(), "invariant");
  event->set_monitorClass(obj->klass());
  event->set_address((uintptr_t)(void*)obj);
  event->set_cause((u1)cause);
  event->commit();
}

// Fast path code shared by multiple functions

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

    return;
  }
  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
address ulong: address Monitor Address
cause InflateCause Monitor Inflation Cause Cause of inflation

Examples 3
address ulong: address
30191152048
cause InflateCause
Monitor Wait
monitorClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Thread
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
-1
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
274
name string
wait0
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Object
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
type FrameType
Native
truncated boolean
false
startTime long: millis
5826858177
address ulong: address
33570021200
cause InflateCause
VM Internal
monitorClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
9
name string
org/apache/spark/sql/SparkSession$Builder
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
location string
null
name string
null
version string
null
name string
org/apache/spark/sql
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
6
lineNumber int
717
method Method
descriptor string
()Ljava/util/zip/Inflater;
hidden boolean
false
modifiers int
0
name string
getInflater
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
java/util/zip/ZipFile$CleanableResource
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/zip
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
19569219701
address ulong: address
30248511672
cause InflateCause
VM Internal
monitorClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Object
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
6
lineNumber int
717
method Method
descriptor string
()Ljava/util/zip/Inflater;
hidden boolean
false
modifiers int
0
name string
getInflater
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
java/util/zip/ZipFile$CleanableResource
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/zip
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
5140342667

ObjectAllocationInNewTLAB

profiling startTime eventThread stackTrace 11 17 21 25 26 27

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
16
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
59
lineNumber int
3849
method Method
descriptor string
([BII)[B
hidden boolean
false
modifiers int
9
name string
copyOfRange
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/util/Arrays
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util
type FrameType
Inlined
truncated boolean
false
startTime long: millis
1172185541
tlabSize ulong: bytes
1048576
allocationSize ulong: bytes
48
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
8
name string
java/util/stream/ReferencePipeline$Head
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/stream
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
5
lineNumber int
69
method Method
descriptor string
(Ljava/util/Spliterator;Z)Ljava/util/stream/Stream;
hidden boolean
false
modifiers int
9
name string
stream
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/util/stream/StreamSupport
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/stream
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
968654366
tlabSize ulong: bytes
1300280
allocationSize ulong: bytes
4112
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
24
lineNumber int
494
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
allocateAndGC
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
586059084
tlabSize ulong: bytes
17192

ObjectAllocationOutsideTLAB

profiling startTime eventThread stackTrace 11 17 21 25 26 27

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
32
objectClass Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
17
name string
io/jenetics/DoubleGene
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
location string
null
name string
null
version string
null
name string
io/jenetics
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
0
lineNumber int
230
method Method
descriptor string
(DDD)Lio/jenetics/DoubleGene;
hidden boolean
false
modifiers int
9
name string
of
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
17
name string
io/jenetics/DoubleGene
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
location string
null
name string
null
version string
null
name string
io/jenetics
type FrameType
Inlined
truncated boolean
false
startTime long: millis
6177982782
allocationSize ulong: bytes
12192
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
15
lineNumber int
3537
method Method
descriptor string
([BI)[B
hidden boolean
false
modifiers int
9
name string
copyOf
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/util/Arrays
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
714839876
allocationSize ulong: bytes
4112
objectClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
24
lineNumber int
494
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
allocateAndGC
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
572024903

FileForce

default profiling startTime duration stackTrace 11 17 21 25 26 27

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

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

    @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/FileChannelImplInstrumentor.java:

 * See {@link JITracer} for an explanation of this code.
 */
@JIInstrumentationTarget("sun.nio.ch.FileChannelImpl")
final class FileChannelImplInstrumentor {

    private FileChannelImplInstrumentor() {
    }

    private String path;

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public void force(boolean metaData) throws IOException {
        FileForceEvent event = FileForceEvent.EVENT.get();
        if (!event.isEnabled()) {
            force(metaData);
            return;
        }
        try {
            event.begin();
            force(metaData);
        } finally {
            event.path = path;
            event.metaData = metaData;
            event.commit();

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

    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

Examples 3
metaData boolean
false
path string
/home/runner/work/jfrevents/jfrevents/harness-140602-2306766489842645582/neo4j/neo4j-analytics/graphdb/data/databases/system/schema/index/token-lookup-1.0/1/index-1
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
5
lineNumber int
219
method Method
descriptor string
(Z)V
hidden boolean
false
modifiers int
1
name string
force
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
1
name string
org/neo4j/io/fs/StoreFileChannel
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
location string
null
name string
null
version string
null
name string
org/neo4j/io/fs
type FrameType
Interpreted
truncated boolean
true
startTime long: millis
31335554926
metaData boolean
true
path string
/tmp/jfr_sample12220442891844395361.tmp
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
47
lineNumber int
536
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
fileForce
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1620317498
metaData boolean
false
path string
/home/runner/work/jfrevents/jfrevents/harness-140614-780637367523948717/neo4j/neo4j-analytics/graphdb/data/transactions/system/checkpoint.0
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
5
lineNumber int
219
method Method
descriptor string
(Z)V
hidden boolean
false
modifiers int
1
name string
force
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
1
name string
org/neo4j/io/fs/StoreFileChannel
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
location string
null
name string
null
version string
null
name string
org/neo4j/io/fs
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
36714136810

SocketWrite

default profiling startTime duration stackTrace 11 17 21 25 26 27

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

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

    @Label("Remote Host")
    public String host;

    @Label("Remote Address")
    public String address;

    @Label("Remote Port")
    public int port;

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

/**
 * See {@link JITracer} for an explanation of this code.
 */
@JIInstrumentationTarget("java.net.Socket$SocketOutputStream")
final class SocketOutputStreamInstrumentor {

    private SocketOutputStreamInstrumentor() {
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public void write(byte b[], int off, int len) throws IOException {
        SocketWriteEvent event = SocketWriteEvent.EVENT.get();
        if (!event.isEnabled()) {
            write(b, off, len);
            return;
        }
        int bytesWritten = 0;
        try {
            event.begin();
            write(b, off, len);
            bytesWritten = len;
        } finally {
            event.end() ;

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

                event.timeout   = 0;

                event.commit();
                event.reset();
            }
        }
        return bytesRead;
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public int write(ByteBuffer buf) throws IOException {
        SocketWriteEvent event = SocketWriteEvent.EVENT.get();
        if (!event.isEnabled()) {
            return write(buf);
        }

        int bytesWritten = 0;
        try {
            event.begin();
            bytesWritten = write(buf);
        } finally {
            event.end();
            if (event.shouldCommit()) {

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

                event.port         = remoteAddress.getPort();
                event.bytesWritten = bytesWritten < 0 ? 0 : bytesWritten;

                event.commit();
                event.reset();
            }
        }
        return bytesWritten;
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public long write(ByteBuffer[] srcs, int offset, int length) throws IOException {
        SocketWriteEvent event = SocketWriteEvent.EVENT.get();
        if (!event.isEnabled()) {
            return write(srcs, offset, length);
        }
        long bytesWritten = 0;
        try {
            event.begin();
            bytesWritten = write(srcs, offset, length);
        } finally {
            event.end();
            if (event.shouldCommit()) {
                String hostString  = remoteAddress.getAddress().toString();

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

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

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,
        ErrorThrownEvent.class,
        ActiveSettingEvent.class,
        ActiveRecordingEvent.class,
        jdk.internal.event.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
host string Remote Host
address string Remote Address
port int Remote Port
bytesWritten long: bytes Bytes Written Number of bytes written to the socket

Examples 3
address string
127.0.0.1
bytesWritten long: bytes
64
host string
127.0.0.1
port int
34876
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
69
lineNumber int
553
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
socketIO
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
2389899258
address string
127.0.0.1
bytesWritten long: bytes
64
host string
127.0.0.1
port int
44594
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
69
lineNumber int
553
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
socketIO
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1791855191
address string
127.0.0.1
bytesWritten long: bytes
64
host string
127.0.0.1
port int
37907
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
20
lineNumber int
546
method Method
descriptor string
(I)V
hidden boolean
false
modifiers int
4106
name string
lambda$socketIO$0
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1470963595

JavaErrorThrow

default profiling startTime duration stackTrace 11 17 21 25 26 27

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
thrownClass Class Class

Examples 3
message string
'int java.lang.invoke.DirectMethodHandle$Holder.invokeStaticInit(java.lang.Object, java.lang.Object)'
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
16
lineNumber int
74
method Method
descriptor string
(Ljava/lang/String;)V
hidden boolean
false
modifiers int
1
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Error
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
584218545
thrownClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/NoSuchMethodError
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
message string
'void java.lang.invoke.DirectMethodHandle$Holder.invokeStaticInit(java.lang.Object, java.lang.Object)'
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
16
lineNumber int
74
method Method
descriptor string
(Ljava/lang/String;)V
hidden boolean
false
modifiers int
1
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Error
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
645292750
thrownClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/NoSuchMethodError
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
message string
'int java.lang.invoke.DirectMethodHandle$Holder.invokeSpecialIFC(java.lang.Object, java.lang.Object, java.lang.Object)'
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
16
lineNumber int
74
method Method
descriptor string
(Ljava/lang/String;)V
hidden boolean
false
modifiers int
1
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Error
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
8382541360
thrownClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/NoSuchMethodError
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang

FileWrite

default profiling startTime duration stackTrace 11 17 21 25 26 27

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

Category: Java Application

Writing data to a file

Code Context

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

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

package jdk.jfr.events;

import jdk.jfr.Category;
import jdk.jfr.Description;
import jdk.jfr.Label;
import jdk.jfr.DataAmount;
import jdk.jfr.Name;
import jdk.jfr.internal.Type;

@Name(Type.EVENT_NAME_PREFIX + "FileWrite")
@Label("File Write")
@Category("Java Application")
@Description("Writing data to a file")
public final class FileWriteEvent extends AbstractJDKEvent {

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

    @Label("Path")
    @Description("Full path of the file")
    public String path;

    @Label("Bytes Written")
    @Description("Number of bytes written to the file")
    @DataAmount
    public long bytesWritten;

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

            } else {
                event.bytesRead = bytesRead;
            }
            event.path = path;
            event.commit();
            event.reset();
        }
        return bytesRead;
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public void write(int b) throws IOException {
        FileWriteEvent event = FileWriteEvent.EVENT.get();
        if (!event.isEnabled()) {
            write(b);
            return;
        }
        try {
            event.begin();
            write(b);
            event.bytesWritten = 1;
        } finally {
            event.path = path;
            event.commit();
            event.reset();
        }
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public void write(byte b[]) throws IOException {
        FileWriteEvent event = FileWriteEvent.EVENT.get();
        if (!event.isEnabled()) {
            write(b);
            return;
        }
        try {
            event.begin();
            write(b);
            event.bytesWritten = b.length;
        } finally {
            event.path = path;
            event.commit();
            event.reset();
        }
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public void write(byte b[], int off, int len) throws IOException {
        FileWriteEvent event = FileWriteEvent.EVENT.get();
        if (!event.isEnabled()) {
            write(b, off, len);
            return;
        }
        try {
            event.begin();
            write(b, off, len);
            event.bytesWritten = len;
        } finally {
            event.path = path;
            event.commit();

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

            } else {
                event.bytesRead = bytesRead;
            }
            event.path = path;
            event.commit();
            event.reset();
        }
        return bytesRead;
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public int write(ByteBuffer src) throws IOException {
        FileWriteEvent event = FileWriteEvent.EVENT.get();
        if (!event.isEnabled()) {
            return write(src);
        }
        int bytesWritten = 0;
        try {
            event.begin();
            bytesWritten = write(src);
        } finally {
            event.bytesWritten = bytesWritten > 0 ? bytesWritten : 0;
            event.path = path;
            event.commit();
            event.reset();
        }
        return bytesWritten;
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public int write(ByteBuffer src, long position) throws IOException {
        FileWriteEvent event = FileWriteEvent.EVENT.get();
        if (!event.isEnabled()) {
            return write(src, position);
        }

        int bytesWritten = 0;
        try {
            event.begin();
            bytesWritten = write(src, position);
        } finally {
            event.bytesWritten = bytesWritten > 0 ? bytesWritten : 0;
            event.path = path;
            event.commit();
            event.reset();
        }
        return bytesWritten;
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public long write(ByteBuffer[] srcs, int offset, int length) throws IOException {
        FileWriteEvent event = FileWriteEvent.EVENT.get();
        if (!event.isEnabled()) {
            return write(srcs, offset, length);
        }
        long bytesWritten = 0;
        try {
            event.begin();
            bytesWritten = write(srcs, offset, length);
        } finally {
            event.bytesWritten = bytesWritten > 0 ? bytesWritten : 0;
            event.path = path;
            event.commit();

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

 * See {@link JITracer} for an explanation of this code.
 */
@JIInstrumentationTarget("java.io.FileOutputStream")
final class FileOutputStreamInstrumentor {

    private FileOutputStreamInstrumentor() {
    }

    private String path;

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public void write(int b) throws IOException {
        FileWriteEvent event = FileWriteEvent.EVENT.get();
        if (!event.isEnabled()) {
            write(b);
            return;
        }
        try {
            event.begin();
            write(b);
            event.bytesWritten = 1;
        } finally {
            event.path = path;
            event.commit();
            event.reset();
        }
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public void write(byte b[]) throws IOException {
        FileWriteEvent event = FileWriteEvent.EVENT.get();
        if (!event.isEnabled()) {
            write(b);
            return;
        }
        try {
            event.begin();
            write(b);
            event.bytesWritten = b.length;
        } finally {
            event.path = path;
            event.commit();
            event.reset();
        }
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public void write(byte b[], int off, int len) throws IOException {
        FileWriteEvent event = FileWriteEvent.EVENT.get();
        if (!event.isEnabled()) {
            write(b, off, len);
            return;
        }
        try {
            event.begin();
            write(b, off, len);
            event.bytesWritten = len;
        } finally {
            event.path = path;
            event.commit();

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

    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
9081
path string
launcher-140614-8869142061068788751/renaissance-harness_3/lib/scala3-library_3-3.3.1.jar
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
38
lineNumber int
796
method Method
descriptor string
(Ljava/io/OutputStream;)J
hidden boolean
false
modifiers int
1
name string
transferTo
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1025
name string
java/io/InputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/io
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
457599054
bytesWritten long: bytes
8196
path string
harness-140602-2306766489842645582/jdk-streams/lib/jdk-streams_3-0.15.0.jar
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
38
lineNumber int
796
method Method
descriptor string
(Ljava/io/OutputStream;)J
hidden boolean
false
modifiers int
1
name string
transferTo
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1025
name string
java/io/InputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/io
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
805319700
bytesWritten long: bytes
1
path string
/tmp/jfr_agent6304371355823978465.jar
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
14
lineNumber int
843
method Method
descriptor string
(J)V
hidden boolean
false
modifiers int
2
name string
writeInt
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/zip/ZipOutputStream
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/zip
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
413051587

FileRead

default profiling startTime duration stackTrace 11 17 21 25 26 27

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

Category: Java Application

Reading data from a file

Code Context

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

src/jdk.jfr/share/classes/jdk/jfr/events/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 {

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

    @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
    public long bytesRead;

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

 * See {@link JITracer} for an explanation of this code.
 */
@JIInstrumentationTarget("java.io.RandomAccessFile")
final class RandomAccessFileInstrumentor {

    private RandomAccessFileInstrumentor() {
    }

    private String path;

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public int read() throws IOException {
        FileReadEvent event = FileReadEvent.EVENT.get();
        if (!event.isEnabled()) {
            return read();
        }
        int result = 0;
        try {
            event.begin();
            result = read();
            if (result < 0) {
                event.endOfFile = true;
            } else {
                event.bytesRead = 1;
            }
        } finally {
            event.path = path;
            event.commit();
            event.reset();
        }
        return result;
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public int read(byte b[]) throws IOException {
        FileReadEvent event = FileReadEvent.EVENT.get();
        if (!event.isEnabled()) {
            return read(b);
        }
        int bytesRead = 0;
        try {
            event.begin();
            bytesRead = read(b);
        } finally {
            if (bytesRead < 0) {
                event.endOfFile = true;
            } else {
                event.bytesRead = bytesRead;
            }
            event.path = path;
            event.commit();
            event.reset();
        }
        return bytesRead;
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public int read(byte b[], int off, int len) throws IOException {
        FileReadEvent event = FileReadEvent.EVENT.get();
        if (!event.isEnabled()) {
            return read(b, off, len);
        }
        int bytesRead = 0;
        try {
            event.begin();
            bytesRead = read(b, off, len);
        } finally {
            if (bytesRead < 0) {
                event.endOfFile = true;
            } else {

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

 * See {@link JITracer} for an explanation of this code.
 */
@JIInstrumentationTarget("java.io.FileInputStream")
final class FileInputStreamInstrumentor {

    private FileInputStreamInstrumentor() {
    }

    private String path;

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public int read() throws IOException {
        FileReadEvent event = FileReadEvent.EVENT.get();
        if (!event.isEnabled()) {
            return read();
        }
        int result = 0;
        try {
            event.begin();
            result = read();
            if (result < 0) {
                event.endOfFile = true;
            } else {
                event.bytesRead = 1;
            }
        } finally {
            event.path = path;
            event.commit();
            event.reset();
        }
        return result;
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public int read(byte b[]) throws IOException {
        FileReadEvent event = FileReadEvent.EVENT.get();
        if (!event.isEnabled()) {
            return read(b);
        }
        int bytesRead = 0;
        try {
            event.begin();
            bytesRead = read(b);
        } finally {
            if (bytesRead < 0) {
                event.endOfFile = true;
            } else {
                event.bytesRead = bytesRead;
            }
            event.path = path;
            event.commit();
            event.reset();
        }
        return bytesRead;
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public int read(byte b[], int off, int len) throws IOException {
        FileReadEvent event = FileReadEvent.EVENT.get();
        if (!event.isEnabled()) {
            return read(b, off, len);
        }
        int bytesRead = 0;
        try {
            event.begin();
            bytesRead = read(b, off, len);
        } finally {
            if (bytesRead < 0) {
                event.endOfFile = true;
            } else {

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

            event.begin();
            force(metaData);
        } finally {
            event.path = path;
            event.metaData = metaData;
            event.commit();
            event.reset();
        }
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public int read(ByteBuffer dst) throws IOException {
        FileReadEvent event = FileReadEvent.EVENT.get();
        if (!event.isEnabled()) {
            return read(dst);
        }
        int bytesRead = 0;
        try {
            event.begin();
            bytesRead = read(dst);
        } finally {
            if (bytesRead < 0) {
                event.endOfFile = true;
            } else {
                event.bytesRead = bytesRead;
            }
            event.path = path;
            event.commit();
            event.reset();
        }
        return bytesRead;
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public int read(ByteBuffer dst, long position) throws IOException {
        FileReadEvent event = FileReadEvent.EVENT.get();
        if (!event.isEnabled()) {
            return read(dst, position);
        }
        int bytesRead = 0;
        try {
            event.begin();
            bytesRead = read(dst, position);
        } finally {
            if (bytesRead < 0) {
                event.endOfFile = true;
            } else {
                event.bytesRead = bytesRead;
            }
            event.path = path;
            event.commit();
            event.reset();
        }
        return bytesRead;
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public long read(ByteBuffer[] dsts, int offset, int length) throws IOException {
        FileReadEvent event = FileReadEvent.EVENT.get();
        if (!event.isEnabled()) {
            return read(dsts, offset, length);
        }
        long bytesRead = 0;
        try {
            event.begin();
            bytesRead = read(dsts, offset, length);
        } finally {
            if (bytesRead < 0) {
                event.endOfFile = true;
            } else {

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

    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
30
endOfFile boolean
false
path string
/home/runner/work/jfrevents/jfrevents/.cache/renaissance.jar
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
43
lineNumber int
1575
method Method
descriptor string
([BIIJ)I
hidden boolean
false
modifiers int
18
name string
readFullyAt
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
java/util/zip/ZipFile$Source
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/zip
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
441048792
bytesRead long: bytes
297
endOfFile boolean
false
path string
/home/runner/work/jfrevents/jfrevents/launcher-140601-3475126292904839940/renaissance-harness_3/lib/scala-library-2.13.12.jar
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
24
lineNumber int
1588
method Method
descriptor string
([BIIJ)I
hidden boolean
false
modifiers int
18
name string
readAt
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
java/util/zip/ZipFile$Source
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/zip
type FrameType
JIT compiled
truncated boolean
false
startTime long: millis
563355115
bytesRead long: bytes
30
endOfFile boolean
false
path string
/home/runner/work/jfrevents/jfrevents/.cache/jfr_sample_app.jar
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
43
lineNumber int
1575
method Method
descriptor string
([BIIJ)I
hidden boolean
false
modifiers int
18
name string
readFullyAt
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
java/util/zip/ZipFile$Source
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/zip
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
395066502

JavaExceptionThrow

startTime duration stackTrace 11 17 21 25 26 27

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
thrownClass Class Class

Examples 3
message string
scala.collection.IterableOps$WithFilter
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
49
lineNumber int
313
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
1
name string
java/lang/Throwable
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
557667769
thrownClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
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
25.0.3
name string
java/lang
message string
scala.collection.mutable.Growable
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
49
lineNumber int
313
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
1
name string
java/lang/Throwable
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
535937544
thrownClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
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
25.0.3
name string
java/lang
message string
'int java.lang.invoke.DirectMethodHandle$Holder.invokeInterface(java.lang.Object, java.lang.Object)'
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
44
lineNumber int
286
method Method
descriptor string
(Ljava/lang/String;)V
hidden boolean
false
modifiers int
1
name string
<init>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/Throwable
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1211669974
thrownClass Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/lang/NoSuchMethodError
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang

SocketRead

default profiling startTime duration stackTrace 11 17 21 25 26 27

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

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

    @Label("Remote Host")
    public String host;

    @Label("Remote Address")
    public String address;

    @Label("Remote Port")
    public int port;

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

/**
 * See {@link JITracer} for an explanation of this code.
 */
@JIInstrumentationTarget("java.net.Socket$SocketInputStream")
final class SocketInputStreamInstrumentor {

    private SocketInputStreamInstrumentor() {
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public int read(byte b[], int off, int length) throws IOException {
        SocketReadEvent event = SocketReadEvent.EVENT.get();
        if (!event.isEnabled()) {
            return read(b, off, length);
        }
        int bytesRead = 0;
        try {
            event.begin();
            bytesRead = read(b, off, length);
        } finally {
            event.end();
            if (event.shouldCommit()) {
                InetAddress remote = parent.getInetAddress();

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

 * See {@link JITracer} for an explanation of this code.
 */
@JIInstrumentationTarget("sun.nio.ch.SocketChannelImpl")
final class SocketChannelImplInstrumentor {

    private SocketChannelImplInstrumentor() {
    }

    private InetSocketAddress remoteAddress;

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public int read(ByteBuffer dst) throws IOException {
        SocketReadEvent event = SocketReadEvent.EVENT.get();
        if (!event.isEnabled()) {
            return read(dst);
        }
        int bytesRead = 0;
        try {
            event.begin();
            bytesRead = read(dst);
        } finally {
            event.end();
            if (event.shouldCommit())  {
                String hostString  = remoteAddress.getAddress().toString();

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

                event.timeout   = 0;

                event.commit();
                event.reset();
            }
        }
        return bytesRead;
    }

    @SuppressWarnings("deprecation")
    @JIInstrumentationMethod
    public long read(ByteBuffer[] dsts, int offset, int length) throws IOException {
        SocketReadEvent event = SocketReadEvent.EVENT.get();
        if(!event.isEnabled()) {
            return read(dsts, offset, length);
        }

        long bytesRead = 0;
        try {
            event.begin();
            bytesRead = read(dsts, offset, length);
        } finally {
            event.end();
            if (event.shouldCommit()) {

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

    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
host string Remote Host
address string Remote Address
port int Remote Port
timeout long: millis Timeout Value
bytesRead long: bytes Bytes Read Number of bytes read from the socket
endOfStream boolean End of Stream If end of stream was reached

Examples 3
address string
127.0.0.1
bytesRead long: bytes
64
endOfStream boolean
false
host string
127.0.0.1
port int
43619
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
31
lineNumber int
547
method Method
descriptor string
(I)V
hidden boolean
false
modifiers int
4106
name string
lambda$socketIO$0
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
3277612505
timeout long: millis
0
address string
127.0.0.1
bytesRead long: bytes
64
endOfStream boolean
false
host string
127.0.0.1
port int
35879
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
31
lineNumber int
547
method Method
descriptor string
(I)V
hidden boolean
false
modifiers int
4106
name string
lambda$socketIO$0
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
2041365083
timeout long: millis
0
address string
127.0.0.1
bytesRead long: bytes
64
endOfStream boolean
false
host string
127.0.0.1
port int
33367
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
31
lineNumber int
547
method Method
descriptor string
(I)V
hidden boolean
false
modifiers int
4106
name string
lambda$socketIO$0
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
2776511655
timeout long: millis
0

Java Application Statistics

JavaThreadStatistics

default profiling startTime duration every chunk 11 17 21 25 26 27

Category: Java Application / Statistics

Code Context

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

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

 *
 *  If running inside a guest OS on top of a hypervisor in a virtualized environment,
 *  the total memory reported is the amount of memory configured for the guest OS by the hypervisor.
 */
TRACE_REQUEST_FUNC(PhysicalMemory) {
  u8 totalPhysicalMemory = os::physical_memory();
  EventPhysicalMemory event;
  event.set_totalSize(totalPhysicalMemory);
  event.set_usedSize(totalPhysicalMemory - os::available_memory());
  event.commit();
}

TRACE_REQUEST_FUNC(JavaThreadStatistics) {
  EventJavaThreadStatistics event;
  event.set_activeCount(ThreadService::get_live_thread_count());
  event.set_daemonCount(ThreadService::get_daemon_thread_count());
  event.set_accumulatedCount(ThreadService::get_total_thread_count());
  event.set_peakCount(ThreadService::get_peak_thread_count());
  event.commit();
}

TRACE_REQUEST_FUNC(ClassLoadingStatistics) {
  EventClassLoadingStatistics event;
  event.set_loadedClassCount(ClassLoadingService::loaded_class_count());
  event.set_unloadedClassCount(ClassLoadingService::unloaded_class_count());

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
203
activeCount long
41
daemonCount long
40
peakCount long
53
startTime long: millis
40137728966
accumulatedCount long
130
activeCount long
42
daemonCount long
15
peakCount long
53
startTime long: millis
16648898072
accumulatedCount long
233
activeCount long
21
daemonCount long
16
peakCount long
22
startTime long: millis
11653515796

ClassLoadingStatistics

default profiling startTime duration every chunk 11 17 21 25 26 27

Category: Java Application / Statistics

Code Context

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

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

  event.commit();
}

TRACE_REQUEST_FUNC(JavaThreadStatistics) {
  EventJavaThreadStatistics event;
  event.set_activeCount(ThreadService::get_live_thread_count());
  event.set_daemonCount(ThreadService::get_daemon_thread_count());
  event.set_accumulatedCount(ThreadService::get_total_thread_count());
  event.set_peakCount(ThreadService::get_peak_thread_count());
  event.commit();
}

TRACE_REQUEST_FUNC(ClassLoadingStatistics) {
  EventClassLoadingStatistics event;
  event.set_loadedClassCount(ClassLoadingService::loaded_class_count());
  event.set_unloadedClassCount(ClassLoadingService::unloaded_class_count());
  event.commit();
}

class JfrClassLoaderStatsClosure : public ClassLoaderStatsClosure {
public:
  JfrClassLoaderStatsClosure() : ClassLoaderStatsClosure(NULL) {}

  bool do_entry(oop const& key, ClassLoaderStats* const& cls) {
    const ClassLoaderData* this_cld = cls->_class_loader != NULL ?

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
10022
startTime long: millis
23717861724
unloadedClassCount long
412
loadedClassCount long
45293
startTime long: millis
92589914630
unloadedClassCount long
3009
loadedClassCount long
4192
startTime long: millis
18781658965
unloadedClassCount long
356

ClassLoaderStatistics

default profiling startTime duration every chunk 11 17 21 25 26 27

Category: Java Application / Statistics

Code Context

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

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

  event.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_unsafeAnonymousClassCount(cls->_anon_classes_count);
    event.set_unsafeAnonymousChunkSize(cls->_anon_chunk_sz);
    event.set_unsafeAnonymousBlockSize(cls->_anon_block_sz);
    event.commit();
    return true;

Configuration enabled period
default true everyChunk
profiling true everyChunk

Field Type Description
classLoader ClassLoader Class Loader
parentClassLoader ClassLoader Parent Class Loader
classLoaderData ulong: address ClassLoaderData Pointer Pointer to the ClassLoaderData structure in the JVM
classCount long Classes Number of loaded classes
chunkSize ulong: bytes Total Chunk Size Total size of all allocated metaspace chunks (each chunk has several blocks)
blockSize ulong: bytes Total Block Size Total size of all allocated metaspace blocks (each chunk has several blocks)
unsafeAnonymousClassCount long until JDK 15 Unsafe Anonymous Classes Number of loaded classes to support invokedynamic
unsafeAnonymousChunkSize ulong: bytes until JDK 15 Total Unsafe Anonymous Classes Chunk Size Total size of all allocated metaspace chunks for unsafe anonymous classes (each chunk has several blocks)
unsafeAnonymousBlockSize ulong: bytes until JDK 15 Total Unsafe Anonymous Classes Block Size Total size of all allocated metaspace blocks for unsafe anonymous classes (each chunk has several blocks)

Examples 3
blockSize ulong: bytes
5040
chunkSize ulong: bytes
6144
classCount long
2
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
0
name string
org/neo4j/codegen/CodeLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
location string
null
name string
null
version string
null
name string
org/neo4j/codegen
classLoaderData ulong: address
140405491708080
parentClassLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
startTime long: millis
47524745047
blockSize ulong: bytes
3168
chunkSize ulong: bytes
6144
classCount long
1
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
hidden boolean
false
modifiers int
0
name string
org/neo4j/codegen/CodeLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
location string
null
name string
null
version string
null
name string
org/neo4j/codegen
classLoaderData ulong: address
140681278437408
parentClassLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/net/URLClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/net
startTime long: millis
36851145384
blockSize ulong: bytes
704
chunkSize ulong: bytes
6144
classCount long
1
classLoader ClassLoader
name string
null
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
0
name string
jfr_sample/Main$2
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
classLoaderData ulong: address
140142588841056
parentClassLoader ClassLoader
null
startTime long: millis
8156287174

ThreadAllocationStatistics

default profiling startTime every chunk 11 17 21 25 26 27

Category: Java Application / Statistics

Code Context

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

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

  GrowableArray<jlong> allocated(initial_size);
  GrowableArray<traceid> thread_ids(initial_size);
  JfrTicks time_stamp = JfrTicks::now();
  JfrJavaThreadIterator iter;
  while (iter.has_next()) {
    JavaThread* const jt = iter.next();
    assert(jt != NULL, "invariant");
    allocated.append(jt->cooked_allocated_bytes());
    thread_ids.append(JFR_THREAD_ID(jt));
  }

  // Write allocation statistics to buffer.
  for(int i = 0; i < thread_ids.length(); i++) {
    EventThreadAllocationStatistics event(UNTIMED);
    event.set_allocated(allocated.at(i));
    event.set_thread(thread_ids.at(i));
    event.set_endtime(time_stamp);
    event.commit();
  }
}

/**
 *  PhysicalMemory event represents:
 *
 *  @totalSize == The amount of physical memory (hw) installed and reported by the OS, in bytes.

Configuration enabled period
default true everyChunk
profiling true everyChunk

Field Type Description
allocated ulong: bytes Allocated Approximate number of bytes allocated since thread start
thread Thread Thread

Examples 3
allocated ulong: bytes
4224
startTime long: millis
8304228684
thread Thread
group ThreadGroup
name string
InnocuousThreadGroup
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
process reaper
javaThreadId long
55
osName string
process reaper
osThreadId long
3320
virtual boolean
false
allocated ulong: bytes
956046224
startTime long: millis
9232279687
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
main
javaThreadId long
3
osName string
main
osThreadId long
2793
virtual boolean
false
allocated ulong: bytes
1648
startTime long: millis
8901480597
thread Thread
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-scheduler-1
javaThreadId long
48
osName string
UCT-scheduler-1
osThreadId long
2825
virtual boolean
false

ExceptionStatistics

default profiling startTime duration stackTrace 11 17 21 25 26 27

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:

        SecurityPropertyModificationEvent.class,
        TLSHandshakeEvent.class,
        X509CertificateEvent.class,
        X509ValidationEvent.class
    };

    private static final Class<?>[] eventClasses = {
        FileForceEvent.class,
        FileReadEvent.class,
        FileWriteEvent.class,
        SocketReadEvent.class,
        SocketWriteEvent.class,
        ExceptionThrownEvent.class,
        ExceptionStatisticsEvent.class,
        ErrorThrownEvent.class,
        ActiveSettingEvent.class,
        ActiveRecordingEvent.class,
        jdk.internal.event.SecurityPropertyModificationEvent.class,
        jdk.internal.event.TLSHandshakeEvent.class,
        jdk.internal.event.X509CertificateEvent.class,
        jdk.internal.event.X509ValidationEvent.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/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);
            }
        } 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:

            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
startTime long: millis
49392289913
throwables long
18428
startTime long: millis
3454446554
throwables long
227
startTime long: millis
72773547797
throwables long
77207

Java Development Kit

X509Validation

startTime duration stackTrace 11 17 21 25 26 27

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

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

Examples 3
certificateId long: certificateId
2389201834
certificatePosition int
2
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
520
lineNumber int
247
method Method
descriptor string
(Ljava/security/cert/TrustAnchor;Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult;
hidden boolean
false
modifiers int
10
name string
validate
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
sun/security/provider/certpath/PKIXCertPathValidator
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
sun/security/provider/certpath
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1090650186
validationCounter long
1
certificateId long: certificateId
2389201834
certificatePosition int
2
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
520
lineNumber int
247
method Method
descriptor string
(Ljava/security/cert/TrustAnchor;Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult;
hidden boolean
false
modifiers int
10
name string
validate
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
sun/security/provider/certpath/PKIXCertPathValidator
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
sun/security/provider/certpath
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
975357727
validationCounter long
1
certificateId long: certificateId
1917811103
certificatePosition int
3
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
520
lineNumber int
247
method Method
descriptor string
(Ljava/security/cert/TrustAnchor;Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult;
hidden boolean
false
modifiers int
10
name string
validate
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
sun/security/provider/certpath/PKIXCertPathValidator
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
sun/security/provider/certpath
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
994630780
validationCounter long
1

TLSHandshake

startTime duration stackTrace 11 17 21 25 26 27

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

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

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

src/java.base/share/classes/sun/security/ssl/Finished.java:

            //
            // produce
            if (SSLLogger.isOn && SSLLogger.isOn("ssl,handshake")) {
                SSLLogger.fine(
                "Sending new session ticket");
            }
            NewSessionTicket.kickstartProducer.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()) {

Configuration enabled stackTrace
default false true
profiling false true

Field Type Description
peerHost string Peer Host
peerPort int Peer Port
protocolVersion string Protocol Version
cipherSuite string Cipher Suite
certificateId long: certificateId Certificate Id Peer Certificate Id

Examples 3
certificateId long: certificateId
2494060369
cipherSuite string
TLS_AES_256_GCM_SHA384
peerHost string
example.com
peerPort int
443
protocolVersion string
TLSv1.3
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
422
lineNumber int
768
method Method
descriptor string
(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
hidden boolean
false
modifiers int
2
name string
onProduceFinished
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
26
name string
sun/security/ssl/Finished$T13FinishedProducer
package Package
exported boolean
false
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
sun/security/ssl
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1131575678
certificateId long: certificateId
2494060369
cipherSuite string
TLS_AES_256_GCM_SHA384
peerHost string
example.com
peerPort int
443
protocolVersion string
TLSv1.3
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
422
lineNumber int
768
method Method
descriptor string
(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
hidden boolean
false
modifiers int
2
name string
onProduceFinished
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
26
name string
sun/security/ssl/Finished$T13FinishedProducer
package Package
exported boolean
false
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
sun/security/ssl
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1009800509
certificateId long: certificateId
2494060369
cipherSuite string
TLS_AES_256_GCM_SHA384
peerHost string
example.com
peerPort int
443
protocolVersion string
TLSv1.3
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
422
lineNumber int
768
method Method
descriptor string
(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
hidden boolean
false
modifiers int
2
name string
onProduceFinished
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
26
name string
sun/security/ssl/Finished$T13FinishedProducer
package Package
exported boolean
false
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
sun/security/ssl
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1039076439

SecurityPropertyModification

startTime duration stackTrace 11 17 21 25 26 27

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

    /*

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

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

Configuration enabled stackTrace
default false true
profiling false true

Field Type Description
key string Key
value string Value

Examples 3
key string
jdk.disabled.namedCurves
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
59
lineNumber int
67
method Method
descriptor string
([Ljava/lang/String;)V
hidden boolean
false
modifiers int
9
name string
main
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1203506601
value string
secp112r1
key string
jdk.disabled.namedCurves
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
59
lineNumber int
67
method Method
descriptor string
([Ljava/lang/String;)V
hidden boolean
false
modifiers int
9
name string
main
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1061260590
value string
secp112r1
key string
jdk.disabled.namedCurves
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
59
lineNumber int
67
method Method
descriptor string
([Ljava/lang/String;)V
hidden boolean
false
modifiers int
9
name string
main
type Class
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
hidden boolean
false
modifiers int
1
name string
jfr_sample/Main
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
app
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
10
name string
jdk/internal/loader/ClassLoaders$AppClassLoader
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
jdk/internal/loader
location string
null
name string
null
version string
null
name string
jfr_sample
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
1098380642
value string
secp112r1

X509Certificate

startTime duration stackTrace 11 17 21 25 26 27

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

Category: Java Development Kit / Security

Details of X.509 Certificate parsed by JDK

Code Context

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

src/java.base/share/classes/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/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
    };

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

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
subject string Subject
issuer string Issuer
keyType string Key Type
keyLength int Key Length
certificateId long: certificateId Certificate Id
validFrom long: epochmillis Valid From
validUntil long: epochmillis Valid Until

Examples 3
algorithm string
SHA1withRSA
certificateId long: certificateId
4023522997
issuer string
OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US
keyLength int
2048
keyType string
RSA
serialNumber string
00
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
185
lineNumber int
128
method Method
descriptor string
(Ljava/security/cert/Certificate;)V
hidden boolean
false
modifiers int
9
name string
tryCommitCertEvent
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
sun/security/jca/JCAUtil
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
sun/security/jca
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
768409651
subject string
OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US
validFrom long: epochmillis
1088528780000
validUntil long: epochmillis
2035213580000
algorithm string
SHA256withRSA
certificateId long: certificateId
2377362263
issuer string
CN=Symantec SHA256 TimeStamping CA, OU=Symantec Trust Network, O=Symantec Corporation, C=US
keyLength int
2048
keyType string
RSA
serialNumber string
7b:d4:e5:af:ba:cc:07:3f:a1:01:23:04:22:41:4d:12
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
185
lineNumber int
128
method Method
descriptor string
(Ljava/security/cert/Certificate;)V
hidden boolean
false
modifiers int
9
name string
tryCommitCertEvent
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
sun/security/jca/JCAUtil
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
sun/security/jca
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
35968896918
subject string
CN=Symantec SHA256 TimeStamping Signer - G3, OU=Symantec Trust Network, O=Symantec Corporation, C=US
validFrom long: epochmillis
1513987200000
validUntil long: epochmillis
1868918399000
algorithm string
SHA384withRSA
certificateId long: certificateId
3406046841
issuer string
CN=DigiCert Trusted Root G4, OU=www.digicert.com, O=DigiCert Inc, C=US
keyLength int
4096
keyType string
RSA
serialNumber string
08:ad:40:b2:60:d2:9c:4c:9f:5e:cd:a9:bd:93:ae:d9
stackTrace StackTrace
frames StackFrame
bytecodeIndex int
185
lineNumber int
128
method Method
descriptor string
(Ljava/security/cert/Certificate;)V
hidden boolean
false
modifiers int
9
name string
tryCommitCertEvent
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
sun/security/jca/JCAUtil
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
sun/security/jca
type FrameType
Interpreted
truncated boolean
false
startTime long: millis
30720590794
subject string
CN=DigiCert Trusted G4 Code Signing RSA4096 SHA384 2021 CA1, O="DigiCert, Inc.", C=US
validFrom long: epochmillis
1619654400000
validUntil long: epochmillis
2093039999000

Operating System

OSInformation

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

Category: Operating System

Code Context

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

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

  event.set_jvmVersion(VM_Version::internal_vm_info_string());
  event.set_javaArguments(Arguments::java_command());
  event.set_jvmArguments(Arguments::jvm_args());
  event.set_jvmFlags(Arguments::jvm_flags());
  event.set_jvmStartTime(Management::vm_init_done_time());
  event.set_pid(os::current_process_id());
  event.commit();
 }

TRACE_REQUEST_FUNC(OSInformation) {
  ResourceMark rm;
  char* os_name = NEW_RESOURCE_ARRAY(char, 2048);
  JfrOSInterface::os_version(&os_name);
  EventOSInformation event;
  event.set_osVersion(os_name);
  event.commit();
}

TRACE_REQUEST_FUNC(VirtualizationInformation) {
  EventVirtualizationInformation event;
  event.set_name(JfrOSInterface::virtualization_name());
  event.commit();
}

TRACE_REQUEST_FUNC(ModuleRequire) {

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
osVersion string OS Version

Examples 3
osVersion string
DISTRIB_ID=Ubuntu DISTRIB_RELEASE=24.04 DISTRIB_CODENAME=noble DISTRIB_DESCRIPTION="Ubuntu 24.04.4 LTS" uname: Linux 6.17.0-1015-azure #15~24.04.1-Ubuntu SMP Wed May 6 22:37:49 UTC 2026 x86_64 libc: glibc 2.39 NPTL 2.39
startTime long: millis
28322500333
osVersion string
DISTRIB_ID=Ubuntu DISTRIB_RELEASE=24.04 DISTRIB_CODENAME=noble DISTRIB_DESCRIPTION="Ubuntu 24.04.4 LTS" uname: Linux 6.17.0-1015-azure #15~24.04.1-Ubuntu SMP Wed May 6 22:37:49 UTC 2026 x86_64 libc: glibc 2.39 NPTL 2.39
startTime long: millis
373113028
osVersion string
DISTRIB_ID=Ubuntu DISTRIB_RELEASE=24.04 DISTRIB_CODENAME=noble DISTRIB_DESCRIPTION="Ubuntu 24.04.4 LTS" uname: Linux 6.17.0-1015-azure #15~24.04.1-Ubuntu SMP Wed May 6 22:37:49 UTC 2026 x86_64 libc: glibc 2.39 NPTL 2.39
startTime long: millis
99244705300

VirtualizationInformation

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

Category: Operating System

Code Context

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

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

  event.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
Hyper-V virtualization
startTime long: millis
28322501705
name string
Hyper-V virtualization
startTime long: millis
16515906874
name string
Hyper-V virtualization
startTime long: millis
99244706472

InitialEnvironmentVariable

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

Category: Operating System

Code Context

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

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

  } else if (vrt == PowerFullPartitionMode) {
    return "Power full partition";
  }

  return "No virtualization detected";
}

int JfrOSInterface::generate_initial_environment_variable_events() {
  if (environ == NULL) {
    return OS_ERR;
  }

  if (EventInitialEnvironmentVariable::is_enabled()) {
    // One time stamp for all events, so they can be grouped together
    JfrTicks time_stamp = JfrTicks::now();
    for (char** p = environ; *p != NULL; p++) {
      char* variable = *p;
      char* equal_sign = strchr(variable, '=');
      if (equal_sign != NULL) {
        // Extract key/value
        ResourceMark rm;
        ptrdiff_t key_length = equal_sign - variable;
        char* key = NEW_RESOURCE_ARRAY(char, key_length + 1);
        char* value = equal_sign + 1;
        strncpy(key, variable, key_length);
        key[key_length] = '\0';
        EventInitialEnvironmentVariable event(UNTIMED);
        event.set_endtime(time_stamp);
        event.set_key(key);
        event.set_value(value);
        event.commit();
      }
    }
  }
  return OS_OK;
}

int JfrOSInterface::system_processes(SystemProcess** sys_processes, int* no_of_sys_processes) {

Configuration enabled period
default true beginChunk
profiling true beginChunk

Field Type Description
key string Key
value string Value

Examples 3
key string
PIPX_BIN_DIR
startTime long: millis
359590222
value string
/opt/pipx_bin
key string
CHROMEWEBDRIVER
startTime long: millis
384285207
value string
/usr/local/share/chromedriver-linux64
key string
CHROME_BIN
startTime long: millis
373126823
value string
/usr/bin/google-chrome

SystemProcess

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

Category: Operating System

Code Context

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

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

    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
tee create_jfr_ubuntu-latest_UseG1GC.log
pid string
2313
startTime long: millis
8149245947
commandLine string
kworker/R-mlx5_cmd_1e66:00:02.0
pid string
380
startTime long: millis
8558478061
commandLine string
/usr/lib/systemd/systemd-resolved
pid string
521
startTime long: millis
8859822156

CPUInformation

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

Category: Operating System / Processor

Code Context

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

src/hotspot/share/jfr/periodic/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
16
cpu string
AMD Unknown x86 (HT) SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 SSE4A AMD64
description string
Brand: AMD EPYC 9V74 80-Core Processor , Vendor: AuthenticAMD Family: Unknown x86 (0x19), Model: <unknown> (0x11), Stepping: 0x1 Ext. family: 0xa, Ext. model: 0x1, Type: 0x0, Signature: 0x00a10f11 Features: ebx: 0x02100800, ecx: 0xfeda3203, edx: 0x178bfbff Ext. features: eax: 0x00a10f
hwThreads uint
4
sockets uint
1
startTime long: millis
79134404872
cores uint
16
cpu string
AMD Unknown x86 (HT) SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 SSE4A AMD64
description string
Brand: AMD EPYC 7763 64-Core Processor , Vendor: AuthenticAMD Family: Unknown x86 (0x19), Model: <unknown> (0x1), Stepping: 0x1 Ext. family: 0xa, Ext. model: 0x0, Type: 0x0, Signature: 0x00a00f11 Features: ebx: 0x01100800, ecx: 0xfeda3203, edx: 0x178bfbff Ext. features: eax: 0x00a00f1
hwThreads uint
4
sockets uint
1
startTime long: millis
57841206288
cores uint
16
cpu string
AMD Unknown x86 (HT) SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 SSE4A AMD64
description string
Brand: AMD EPYC 7763 64-Core Processor , Vendor: AuthenticAMD Family: Unknown x86 (0x19), Model: <unknown> (0x1), Stepping: 0x1 Ext. family: 0xa, Ext. model: 0x0, Type: 0x0, Signature: 0x00a00f11 Features: ebx: 0x02100800, ecx: 0xfeda3203, edx: 0x178bfbff Ext. features: eax: 0x00a00f1
hwThreads uint
4
sockets uint
1
startTime long: millis
25066954626

CPUTimeStampCounter

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

Category: Operating System / Processor

Code Context

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

src/hotspot/share/jfr/periodic/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
true
fastTimeEnabled boolean
false
fastTimeFrequency long: hertz
1000000000
osFrequency long: hertz
1000000000
startTime long: millis
66638236489
fastTimeAutoEnabled boolean
true
fastTimeEnabled boolean
false
fastTimeFrequency long: hertz
1000000000
osFrequency long: hertz
1000000000
startTime long: millis
8304225347
fastTimeAutoEnabled boolean
true
fastTimeEnabled boolean
false
fastTimeFrequency long: hertz
1000000000
osFrequency long: hertz
1000000000
startTime long: millis
72687263048

CPULoad

default profiling startTime duration every chunk 11 17 21 25 26 27

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:

TRACE_REQUEST_FUNC(CPULoad) {
  double u = 0; // user time
  double s = 0; // kernel time
  double t = 0; // total time
  int 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
0.017412934
jvmUser float: percentage
0.33582088
machineTotal float: percentage
0.35323384
startTime long: millis
20832686950
jvmSystem float: percentage
0.0050251256
jvmUser float: percentage
0.61809045
machineTotal float: percentage
0.6231156
startTime long: millis
69811268782
jvmSystem float: percentage
0.005037783
jvmUser float: percentage
0.91435766
machineTotal float: percentage
0.91939545
startTime long: millis
58338085001

ThreadCPULoad

default profiling startTime duration eventThread every chunk 11 17 21 25 26 27

Category: Operating System / Processor

Code Context

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

src/hotspot/share/jfr/periodic/jfrThreadCPULoadEvent.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

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

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
10465265106
system float: percentage
0.0045499713
user float: percentage
0.007955552
startTime long: millis
11459497118
system float: percentage
0.0024147136
user float: percentage
0.105059706
startTime long: millis
560031632
system float: percentage
0.0061523616
user float: percentage
0.09877555

ThreadContextSwitchRate

default profiling startTime duration every chunk 11 17 21 25 26 27

Category: Operating System / Processor

Code Context

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

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

TRACE_REQUEST_FUNC(ThreadContextSwitchRate) {
  double rate = 0.0;
  int 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
51441543045
switchRate float: hertz
4593.528
startTime long: millis
21626753099
switchRate float: hertz
28521.596
startTime long: millis
10621909881
switchRate float: hertz
9667.025

NetworkUtilization

default profiling startTime every chunk 11 17 21 25 26 27

Category: Operating System / Network

Code Context

The event is likely defined and utilized 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
eth0
readRate long: bits-per-second
12592
startTime long: millis
21625858908
writeRate long: bits-per-second
16384
networkInterface NetworkInterfaceName
eth0
readRate long: bits-per-second
5864
startTime long: millis
92590329454
writeRate long: bits-per-second
17920
networkInterface NetworkInterfaceName
lo
readRate long: bits-per-second
114696
startTime long: millis
20832985739
writeRate long: bits-per-second
114696

PhysicalMemory

default profiling startTime duration every chunk 11 17 21 25 26 27

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
384619582
totalSize ulong: bytes
16766418944
usedSize ulong: bytes
1087606784
startTime long: millis
99275744994
totalSize ulong: bytes
16766423040
usedSize ulong: bytes
5401305088
startTime long: millis
24983725536
totalSize ulong: bytes
16766418944
usedSize ulong: bytes
1124069376

Types

Bytecode

14+

Bytecode Instruction

Field Type Description
bytecode string Instruction

Examples 3
checkcast
if_icmpgt
invokestatic

CalleeMethod

Field Type Description
type string Class
name string Method Name
descriptor string Method Descriptor

Examples 3
descriptor string
([BI)C
name string
getChar
type string
java/lang/StringUTF16
descriptor string
(Ljava/lang/String;Z)J
name string
addString
type string
jdk/jfr/internal/StringPool
descriptor string
(B)V
name string
putUncheckedByte
type string
jdk/jfr/internal/event/EventWriter

ChunkHeader

14+

Chunk Header

Field Type Description
payload array byte Payload

Class

Java Class

Field Type Description
classLoader ClassLoader Class Loader
name Symbol Name
package Package Package
modifiers int Access Modifiers

ClassLoader

Java Class Loader

Field Type Description
type Class Type
name Symbol Name

CodeBlobType

Code Blob Type

Field Type Description
type string Type

Examples 3
CodeHeap 'non-profiled nmethods'
CodeHeap 'profiled nmethods'
CodeHeap 'non-profiled nmethods'

CompilerPhaseType

Compiler Phase Type

Field Type Description
phase string Phase

Examples 3
After Macro Expansion
Incremental Inline
After Iter GVN

CompilerType

14+

Compiler Type

Field Type Description
compiler string Compiler

Examples 3

CopyFailed

Field Type Description
objectCount ulong Object Count
firstSize ulong: bytes First Failed Object Size
smallestSize ulong: bytes Smallest Failed Object Size
totalSize ulong: bytes Total Object Size

DeoptimizationAction

14+

Deoptimization Action

Field Type Description
action string Action

Examples 3
maybe_recompile
maybe_recompile
make_not_entrant

DeoptimizationReason

14+

Deoptimization Reason

Field Type Description
reason string Reason

Examples 3
intrinsic_or_type_checked_inlining
speculate_class_check
loop_limit_check

FlagValueOrigin

Flag Value Origin

Field Type Description
origin string Origin

Examples 3

FrameType

Frame type

Field Type Description
description string Description

Examples 3

G1EvacuationStatistics

Appearing in: linux_G1GC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Field Type Description
gcId uint GC Identifier
allocated ulong: bytes Allocated Total memory allocated by PLABs
wasted ulong: bytes Wasted Total memory wasted within PLABs due to alignment or refill
used ulong: bytes Used Total memory occupied by objects within PLABs
undoWaste ulong: bytes Undo Wasted Total memory wasted due to allocation undo within PLABs
regionEndWaste ulong: bytes Region End Wasted Total memory wasted at the end of regions due to refill
regionsRefilled uint: bytes Region Refills Total memory wasted at the end of regions due to refill
directAllocated ulong: bytes Allocated (direct) Total memory allocated using direct allocation outside of PLABs
failureUsed ulong: bytes Used (failure) Total memory occupied by objects in regions where evacuation failed
failureWaste ulong: bytes Wasted (failure) Total memory left unused in regions where evacuation failed

Examples 3
allocated ulong: bytes
1768608
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
58
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
1
undoWaste ulong: bytes
0
used ulong: bytes
1544072
wasted ulong: bytes
49016
allocated ulong: bytes
30699760
directAllocated ulong: bytes
1806096
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
31
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
16
undoWaste ulong: bytes
0
used ulong: bytes
29032408
wasted ulong: bytes
166864
allocated ulong: bytes
0
directAllocated ulong: bytes
0
failureUsed ulong: bytes
0
failureWaste ulong: bytes
0
gcId uint
117
regionEndWaste ulong: bytes
0
regionsRefilled uint: bytes
0
undoWaste ulong: bytes
0
used ulong: bytes
0
wasted ulong: bytes
0

G1HeapRegionType

Appearing in: linux_G1GC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

G1 Heap Region Type

Field Type Description
type string Type

Examples 2

G1YCType

Appearing in: linux_G1GC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

G1 YC Type

Field Type Description
type string Type

Examples 1

GCCause

GC Cause

Field Type Description
cause string Cause

Examples 3
Allocation Failure
System.gc()
G1 Evacuation Pause

GCName

GC Name

Field Type Description
name string Name

Examples 3

GCThresholdUpdater

GC Threshold Updater

Field Type Description
updater string Updater

Examples 3
expand_and_allocate
compute_new_size
compute_new_size

GCWhen

GC When

Field Type Description
when string When

Examples 3

InflateCause

Inflation Cause

Field Type Description
cause string Cause

Examples 3
VM Internal
VM Internal
Monitor Wait

MetadataType

Metadata Type

Field Type Description
type string Type

Examples 3

MetaspaceObjectType

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ZGC

Missing in: linux_ShenandoahGC

Metaspace Object Type

Field Type Description
type string Type

Examples 3

MetaspaceSizes

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
13697024
reserved ulong: bytes
1140850688
used ulong: bytes
13476560
committed ulong: bytes
11141120
reserved ulong: bytes
67108864
used ulong: bytes
11008064
committed ulong: bytes
2555904
reserved ulong: bytes
1073741824
used ulong: bytes
2468496

Method

Java Method

Field Type Description
type Class Type
name Symbol Name
descriptor Symbol Descriptor
modifiers int Access Modifiers
hidden boolean Hidden

Module

Module

Field Type Description
name Symbol Name
version Symbol Version
location Symbol Location
classLoader ClassLoader Class Loader

NarrowOopMode

Narrow Oop Mode

Field Type Description
mode string Mode

Examples 3

NetworkInterfaceName

Network Interface

Field Type Description
networkInterface string Network Interface Network Interface Name

Examples 3

ObjectSpace

Appearing in: linux_ParallelGC

Missing in: linux_G1GC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Field Type Description
start ulong: address Start Address Start address of the space
end ulong: address End Address End address of the space
used ulong: bytes Used Bytes allocated by objects in the space
size ulong: bytes Size Size of the space

Examples 3
end ulong: address
33959182336
size ulong: bytes
996147200
start ulong: address
32963035136
used ulong: bytes
996147200
end ulong: address
34359738368
size ulong: bytes
201326592
start ulong: address
34158411776
used ulong: bytes
0
end ulong: address
30805065728
size ulong: bytes
637534208
start ulong: address
30167531520
used ulong: bytes
149953824

OldObject

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ZGC

Missing in: linux_ShenandoahGC

Old Object

Field Type Description
address ulong: address Memory Address
type Class Java Class
description string Object Description Object description
referrer Reference Referrer Object Object referencing this object

Examples 3
address ulong: address
30173537080
description string
null
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
address ulong: address
30994295392
description string
null
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1041
name string
[B
package Package
null
address ulong: address
30288125488
description string
Size: 11
referrer Reference
null
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
8
name string
java/lang/ThreadLocal$ThreadLocalMap
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/lang

OldObjectArray

Old Object Array

Field Type Description
size int Array Size Size of array
index int Index Index in the array

OldObjectField

Old Object Field

Field Type Description
name string Field Name of field
modifiers short Field Modifiers Field modifiers

OldObjectGcRoot

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ZGC

Missing in: linux_ShenandoahGC

GC Root

Field Type Description
description string Root Description Root information
system OldObjectRootSystem System The subsystem of origin for the root
type OldObjectRootType Type The root type

Examples 3

OldObjectRootSystem

GC Root System

Field Type Description
system string System

OldObjectRootType

GC Root Type

Field Type Description
type string Type

Package

Package

Field Type Description
name Symbol Name
module Module Module
exported boolean Exported

Reference

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ZGC

Missing in: linux_ShenandoahGC

Reference

Field Type Description
array OldObjectArray Array Information Array or null if it is not an array
field OldObjectField Field Information Field or null if it is an array
object OldObject Object Object holder for this reference
skip int Skip Value The object is this many hops away

Examples 3

ReferenceType

Reference Type

Field Type Description
type string Type

Examples 3
Phantom reference
Final reference
Phantom reference

ShenandoahHeapRegionState

Appearing in: linux_ShenandoahGC

Missing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ZGC

Shenandoah Heap Region State

Field Type Description
state string State

Examples 2

StackFrame

Field Type Description
method Method Java Method
lineNumber int Line Number
bytecodeIndex int Bytecode Index
type FrameType Frame Type

Examples 3
bytecodeIndex int
50
lineNumber int
425
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
<clinit>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/time/temporal/TemporalQueries
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/time/temporal
type FrameType
Interpreted
bytecodeIndex int
59
lineNumber int
3849
method Method
descriptor string
([BII)[B
hidden boolean
false
modifiers int
9
name string
copyOfRange
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/util/Arrays
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util
type FrameType
Inlined
bytecodeIndex int
12
lineNumber int
1300
method Method
descriptor string
()Ljava/util/Set;
hidden boolean
false
modifiers int
1
name string
entrySet
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/concurrent/ConcurrentHashMap
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/concurrent
type FrameType
Interpreted

StackTrace

Stacktrace

Field Type Description
truncated boolean Truncated
frames array StackFrame struct Stack Frames

Examples 3
frames StackFrame
bytecodeIndex int
50
lineNumber int
425
method Method
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
<clinit>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/time/temporal/TemporalQueries
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/time/temporal
type FrameType
Interpreted
truncated boolean
false
frames StackFrame
bytecodeIndex int
12
lineNumber int
1300
method Method
descriptor string
()Ljava/util/Set;
hidden boolean
false
modifiers int
1
name string
entrySet
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
1
name string
java/util/concurrent/ConcurrentHashMap
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util/concurrent
type FrameType
Interpreted
truncated boolean
false
frames StackFrame
bytecodeIndex int
59
lineNumber int
3849
method Method
descriptor string
([BII)[B
hidden boolean
false
modifiers int
9
name string
copyOfRange
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/util/Arrays
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/util
type FrameType
Inlined
truncated boolean
false

Symbol

Symbol

Field Type Description
string string String

Thread

Thread

Field Type Description
osName string OS Thread Name
osThreadId long OS Thread Id
javaName string Java Thread Name
javaThreadId long Java Thread Id
group ThreadGroup Java Thread Group

ThreadGroup

Thread Group

Field Type Description
parent ThreadGroup Parent
name string Name

Examples 3
null
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
name string
system
parent ThreadGroup
null

ThreadState

Java Thread State

Field Type Description
name string Name

Examples 3
STATE_RUNNABLE
STATE_RUNNABLE
STATE_RUNNABLE

VMOperationType

VM Operation Type

Field Type Description
type string Type

Examples 3
G1CollectForAllocation
HandshakeAllThreads
G1PauseCleanup

VirtualSpace

Field Type Description
start ulong: address Start Address Start address of the virtual space
committedEnd ulong: address Committed End Address End address of the committed memory for the virtual space
committedSize ulong: bytes Committed Size Size of the committed memory for the virtual space
reservedEnd ulong: address Reserved End Address End address of the reserved memory for the virtual space
reservedSize ulong: bytes Reserved Size Size of the reserved memory for the virtual space

Examples 3
committedEnd ulong: address
32000442368
committedSize ulong: bytes
1832910848
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520
committedEnd ulong: address
30517755904
committedSize ulong: bytes
350224384
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520
committedEnd ulong: address
30423384064
committedSize ulong: bytes
255852544
reservedEnd ulong: address
34359738368
reservedSize ulong: bytes
4192206848
start ulong: address
30167531520

ZStatisticsCounterType

Appearing in: linux_ZGC

Missing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Z Statistics Counter

Field Type Description
counter string Counter

Examples 1
Allocation Rate

ZStatisticsSamplerType

Appearing in: linux_ZGC

Missing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC

Z Statistics Sampler

Field Type Description
sampler string Sampler

Examples 2
Concurrent Relocate
Out Of Memory

XML Content Types

address

Annotation: jdk.jfr.MemoryAddress

Examples 3
140681343401984
140681368375296
140680850571264

bits-per-second

Annotation: jdk.jfr.DataAmount(BITS), jdk.jfr.Frequency

Examples 3

bytes

Annotation: jdk.jfr.DataAmount(BYTES)

Examples 3

bytes-per-second

Appearing in: linux_G1GC

Missing in: linux_ParallelGC, linux_SerialGC, linux_ShenandoahGC, linux_ZGC

Annotation: jdk.jfr.DataAmount(BYTES), jdk.jfr.Frequency

Examples 3
1.3579596248565567E8
0.0
3.1355026663664994E9

certificateId

Annotation: jdk.jfr.events.CertificateId

Examples 3
4023522997
2377362263
2494060369

epochmillis

Annotation: jdk.jfr.Timestamp(MILLISECONDS_SINCE_EPOCH)

Examples 3
1780495574039
1780495574399
-9223372036854775808

hertz

Annotation: jdk.jfr.Frequency

Examples 3
28521.596
1000000000
1000000000

millis

Annotation: jdk.jfr.Timespan(MILLISECONDS)

Examples 3
1000
372693085
9223372036854775807

nanos

Annotation: jdk.jfr.Timespan(NANOSECONDS)

Examples 3
1000000
-9223372036854775808
-9223372036854775808

percentage

Annotation: jdk.jfr.Percentage

Examples 3
0.91939545
0.91435766
0.005037783

tickspan

Annotation: jdk.jfr.Timespan(TICKS)

Examples 3
12326907
123665397138
233934112

tickstamp

Annotation: jdk.jfr.Timestamp(TICKS)

XML Types

Class

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
17
name string
jdk/jfr/internal/event/EventWriter
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.3
name string
jdk/jfr/internal/event

ClassLoader

Parameter Type const ClassLoaderData*
Field Type const ClassLoaderData*
Examples 3
name string
bootstrap
type Class
null
name string
bootstrap
type Class
null
name string
bootstrap
type Class
null

Method

Parameter Type const Method*
Field Type const Method*
Examples 3
descriptor string
(Ljava/lang/String;)V
hidden boolean
false
modifiers int
1
name string
putString
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
jdk/jfr/internal/event/EventWriter
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.3
name string
jdk/jfr/internal/event
descriptor string
()V
hidden boolean
false
modifiers int
8
name string
<clinit>
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
17
name string
java/time/temporal/TemporalQueries
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/time/temporal
descriptor string
(Z)Z
hidden boolean
false
modifiers int
0
name string
isVisible
type Class
classLoader ClassLoader
name string
bootstrap
type Class
null
hidden boolean
false
modifiers int
16
name string
jdk/jfr/internal/Control
package Package
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.3
name string
jdk/jfr/internal

Module

Parameter Type const ModuleEntry*
Field Type const ModuleEntry*
Examples 3
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.3
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.3
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3

Package

Parameter Type const PackageEntry*
Field Type const PackageEntry*
Examples 3
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.3
name string
jdk/jfr/internal/event
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/java.base
name string
java.base
version string
25.0.3
name string
java/time/temporal
exported boolean
true
module Module
classLoader ClassLoader
name string
bootstrap
type Class
null
location string
jrt:/jdk.jfr
name string
jdk.jfr
version string
25.0.3
name string
jdk/jfr/internal

Thread

Parameter Type u8
Field Type u8
Java Type java.lang.Thread
Examples 3
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-scheduler-1
javaThreadId long
48
osName string
UCT-scheduler-1
osThreadId long
2825
virtual boolean
false
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-akka.actor.internal-dispatcher-4
javaThreadId long
51
osName string
UCT-akka.actor.internal-dispatcher-4
osThreadId long
2828
virtual boolean
false
group ThreadGroup
name string
main
parent ThreadGroup
name string
system
parent ThreadGroup
null
javaName string
UCT-akka.actor.default-dispatcher-10
javaThreadId long
61
osName string
UCT-akka.actor.default-dispatcher-10
osThreadId long
2837
virtual boolean
false

Ticks

Appearing in: linux_G1GC, linux_ParallelGC, linux_SerialGC, linux_ZGC

Missing in: linux_ShenandoahGC

Parameter Type const Ticks&
Field Type Ticks
Java Type long
Content Type tickstamp
Examples 3
4210208127
25399081217
104517349089

Tickspan

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

boolean

Parameter Type bool
Field Type bool
Java Type boolean
Examples 3

byte

Parameter Type s1
Field Type s1
Java Type byte

char

Parameter Type char
Field Type char
Java Type char

double

Parameter Type double
Field Type double
Java Type double
Examples 3

float

Parameter Type float
Field Type float
Java Type float
Examples 3
6.3269906
6.3170166
2.515351

int

Parameter Type s4
Field Type s4
Java Type int
Examples 3

long

Parameter Type s8
Field Type s8
Java Type long
Examples 3

short

Parameter Type s2
Field Type s2
Java Type short

string

Parameter Type const char*
Field Type const char*
Java Type java.lang.String
Examples 3
/home/runner/work/jfrevents/jfrevents/jfr/sample_linux_UseG1GC.jfr
1
threshold

ubyte

unsigned

Parameter Type u1
Field Type u1
Java Type byte
Examples 3

uint

unsigned

Parameter Type unsigned
Field Type unsigned
Java Type int
Examples 3

ulong

unsigned

Parameter Type u8
Field Type u8
Java Type long
Examples 3

ushort

unsigned

Parameter Type u2
Field Type u2
Java Type short
Examples 3