8292177: InitialSecurityProperty JFR event

Reviewed-by: mullan
This commit is contained in:
Sean Coffey 2022-10-18 11:41:07 +00:00
parent e7a964b4db
commit 8c40b7dc8c
12 changed files with 393 additions and 145 deletions
src
java.base/share/classes
jdk.jfr/share
classes/jdk/jfr
conf/jfr
test
jdk
lib/jdk/test/lib/jfr

@ -30,6 +30,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.io.*;
import java.net.URL;
import jdk.internal.access.JavaSecurityPropertiesAccess;
import jdk.internal.event.EventHelper;
import jdk.internal.event.SecurityPropertyModificationEvent;
import jdk.internal.access.SharedSecrets;
@ -63,6 +64,9 @@ public final class Security {
/* The java.security properties */
private static Properties props;
/* cache a copy for recording purposes */
private static Properties initialSecurityProperties;
// An element in the cache
private static class ProviderProperty {
String className;
@ -79,6 +83,13 @@ public final class Security {
initialize();
return null;
});
// Set up JavaSecurityPropertiesAccess in SharedSecrets
SharedSecrets.setJavaSecurityPropertiesAccess(new JavaSecurityPropertiesAccess() {
@Override
public Properties getInitialProperties() {
return initialSecurityProperties;
}
});
}
private static void initialize() {
@ -104,6 +115,14 @@ public final class Security {
}
loadProps(null, extraPropFile, overrideAll);
}
initialSecurityProperties = (Properties) props.clone();
if (sdebug != null) {
for (String key : props.stringPropertyNames()) {
sdebug.println("Initial security property: " + key + "=" +
props.getProperty(key));
}
}
}
private static boolean loadProps(File masterFile, String extraPropFile, boolean overrideAll) {

@ -0,0 +1,32 @@
/*
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package jdk.internal.access;
import java.util.Properties;
public interface JavaSecurityPropertiesAccess {
Properties getInitialProperties();
}

@ -30,6 +30,7 @@ import javax.crypto.spec.SecretKeySpec;
import java.io.ObjectInputFilter;
import java.lang.invoke.MethodHandles;
import java.lang.module.ModuleDescriptor;
import java.security.Security;
import java.security.spec.EncodedKeySpec;
import java.util.ResourceBundle;
import java.util.concurrent.ForkJoinPool;
@ -83,6 +84,7 @@ public class SharedSecrets {
private static JavaUtilZipFileAccess javaUtilZipFileAccess;
private static JavaUtilResourceBundleAccess javaUtilResourceBundleAccess;
private static JavaSecurityAccess javaSecurityAccess;
private static JavaSecurityPropertiesAccess javaSecurityPropertiesAccess;
private static JavaSecuritySignatureAccess javaSecuritySignatureAccess;
private static JavaSecuritySpecAccess javaSecuritySpecAccess;
private static JavaxCryptoSealedObjectAccess javaxCryptoSealedObjectAccess;
@ -343,6 +345,19 @@ public class SharedSecrets {
return access;
}
public static void setJavaSecurityPropertiesAccess(JavaSecurityPropertiesAccess jspa) {
javaSecurityPropertiesAccess = jspa;
}
public static JavaSecurityPropertiesAccess getJavaSecurityPropertiesAccess() {
var access = javaSecurityPropertiesAccess;
if (access == null) {
ensureClassInitialized(Security.class);
access = javaSecurityPropertiesAccess;
}
return access;
}
public static JavaUtilZipFileAccess getJavaUtilZipFileAccess() {
var access = javaUtilZipFileAccess;
if (access == null) {

@ -165,6 +165,7 @@ module java.base {
jdk.charsets,
jdk.jartool,
jdk.jlink,
jdk.jfr,
jdk.net;
exports jdk.internal.foreign to
jdk.incubator.vector;

@ -0,0 +1,43 @@
/*
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package jdk.jfr.events;
import jdk.jfr.Category;
import jdk.jfr.Description;
import jdk.jfr.Label;
import jdk.jfr.Name;
@Category({"Java Development Kit", "Security"})
@Label("Initial Security Property")
@Name("jdk.InitialSecurityProperty")
@Description("Initial Security Properties")
public final class InitialSecurityPropertyEvent extends AbstractJDKEvent {
@Label("Key")
public String key;
@Label("Value")
public String value;
}

@ -27,7 +27,9 @@ package jdk.jfr.internal.instrument;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import jdk.internal.access.SharedSecrets;
import jdk.jfr.Event;
import jdk.jfr.events.ActiveRecordingEvent;
import jdk.jfr.events.ActiveSettingEvent;
@ -44,6 +46,7 @@ import jdk.jfr.events.FileForceEvent;
import jdk.jfr.events.FileReadEvent;
import jdk.jfr.events.FileWriteEvent;
import jdk.jfr.events.DeserializationEvent;
import jdk.jfr.events.InitialSecurityPropertyEvent;
import jdk.jfr.events.ProcessStartEvent;
import jdk.jfr.events.SecurityPropertyModificationEvent;
import jdk.jfr.events.SecurityProviderServiceEvent;
@ -107,7 +110,8 @@ public final class JDKEvents {
jdk.internal.event.X509CertificateEvent.class,
jdk.internal.event.X509ValidationEvent.class,
DirectBufferStatisticsEvent.class
DirectBufferStatisticsEvent.class,
InitialSecurityPropertyEvent.class,
};
// This is a list of the classes with instrumentation code that should be applied.
@ -130,6 +134,7 @@ public final class JDKEvents {
private static final Runnable emitContainerCPUThrottling = JDKEvents::emitContainerCPUThrottling;
private static final Runnable emitContainerMemoryUsage = JDKEvents::emitContainerMemoryUsage;
private static final Runnable emitContainerIOUsage = JDKEvents::emitContainerIOUsage;
private static final Runnable emitInitialSecurityProperties = JDKEvents::emitInitialSecurityProperties;
private static Metrics containerMetrics = null;
private static boolean initializationTriggered;
@ -146,6 +151,7 @@ public final class JDKEvents {
RequestEngine.addTrustedJDKHook(ExceptionStatisticsEvent.class, emitExceptionStatistics);
RequestEngine.addTrustedJDKHook(DirectBufferStatisticsEvent.class, emitDirectBufferStatistics);
RequestEngine.addTrustedJDKHook(InitialSecurityPropertyEvent.class, emitInitialSecurityProperties);
initializeContainerEvents();
initializationTriggered = true;
@ -288,6 +294,7 @@ public final class JDKEvents {
public static void remove() {
RequestEngine.removeHook(emitExceptionStatistics);
RequestEngine.removeHook(emitDirectBufferStatistics);
RequestEngine.removeHook(emitInitialSecurityProperties);
RequestEngine.removeHook(emitContainerConfiguration);
RequestEngine.removeHook(emitContainerCPUUsage);
@ -300,4 +307,16 @@ public final class JDKEvents {
DirectBufferStatisticsEvent e = new DirectBufferStatisticsEvent();
e.commit();
}
private static void emitInitialSecurityProperties() {
Properties p = SharedSecrets.getJavaSecurityPropertiesAccess().getInitialProperties();
if (p != null) {
for (String key : p.stringPropertyNames()) {
InitialSecurityPropertyEvent e = new InitialSecurityPropertyEvent();
e.key = key;
e.value = p.getProperty(key);
e.commit();
}
}
}
}

@ -709,6 +709,11 @@
<setting name="stackTrace">true</setting>
</event>
<event name="jdk.InitialSecurityProperty">
<setting name="enabled">true</setting>
<setting name="period">beginChunk</setting>
</event>
<event name="jdk.SecurityPropertyModification">
<setting name="enabled">false</setting>
<setting name="stackTrace">true</setting>

@ -709,6 +709,11 @@
<setting name="stackTrace">true</setting>
</event>
<event name="jdk.InitialSecurityProperty">
<setting name="enabled">true</setting>
<setting name="period">beginChunk</setting>
</event>
<event name="jdk.SecurityPropertyModification">
<setting name="enabled">false</setting>
<setting name="stackTrace">true</setting>

@ -36,12 +36,20 @@ import java.util.Optional;
/*
* @test
* @summary Throw error if default java.security file is missing
* @bug 8155246 8292297
* @bug 8155246 8292297 8292177
* @library /test/lib
* @run main ConfigFileTest
*/
public class ConfigFileTest {
private static final String EXPECTED_DEBUG_OUTPUT =
"Initial security property: crypto.policy=unlimited";
private static final String UNEXPECTED_DEBUG_OUTPUT =
"Initial security property: postInitTest=shouldNotRecord";
private static boolean overrideDetected = false;
public static void main(String[] args) throws Exception {
Path copyJdkDir = Path.of("./jdk-8155246-tmpdir");
Path copiedJava = Optional.of(
@ -52,6 +60,7 @@ public class ConfigFileTest {
if (args.length == 1) {
// set up is complete. Run code to exercise loading of java.security
Provider[] provs = Security.getProviders();
Security.setProperty("postInitTest", "shouldNotRecord");
System.out.println(Arrays.toString(provs) + "NumProviders: " + provs.length);
} else {
Files.createDirectory(copyJdkDir);
@ -99,13 +108,32 @@ public class ConfigFileTest {
copiedJava.toString(), "-cp", System.getProperty("test.classes"),
"-Djava.security.debug=all", "-Djavax.net.debug=all",
"-Djava.security.properties==file:///" + extraPropsFile, "ConfigFileTest", "runner");
if (!overrideDetected) {
throw new RuntimeException("Override scenario not seen");
}
}
}
private static void exerciseSecurity(int exitCode, String output, String... args) throws Exception {
ProcessBuilder process = new ProcessBuilder(args);
OutputAnalyzer oa = ProcessTools.executeProcess(process);
oa.shouldHaveExitValue(exitCode).shouldContain(output);
oa.shouldHaveExitValue(exitCode)
.shouldContain(output);
// extra checks on debug output
if (exitCode != 1) {
if (oa.getStderr().contains("overriding other security properties files!")) {
overrideDetected = true;
// master file is not in use - only provider properties are set in custom file
oa.shouldContain("security.provider.2=SunRsaSign")
.shouldNotContain(EXPECTED_DEBUG_OUTPUT)
.shouldNotContain(UNEXPECTED_DEBUG_OUTPUT);
} else {
oa.shouldContain(EXPECTED_DEBUG_OUTPUT)
.shouldNotContain(UNEXPECTED_DEBUG_OUTPUT);
}
}
}
private static void copyJDK(Path src, Path dst) throws Exception {

@ -252,6 +252,7 @@ public final class TestActiveSettingEvent {
settingValues.put(EventNames.ActiveSetting + "#threshold", "0 ns");
settingValues.put(EventNames.ActiveRecording + "#stackTrace", "false");
settingValues.put(EventNames.ActiveRecording + "#threshold", "0 ns");
settingValues.put(EventNames.InitialSecurityProperty + "#threshold", "0 ns");
settingValues.put(EventNames.JavaExceptionThrow + "#threshold", "0 ns");
settingValues.put(EventNames.JavaErrorThrow + "#threshold", "0 ns");
settingValues.put(EventNames.SecurityProperty + "#threshold", "0 ns");

@ -0,0 +1,79 @@
/*
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package jdk.jfr.event.security;
import jdk.internal.access.SharedSecrets;
import jdk.jfr.Recording;
import jdk.jfr.consumer.RecordedEvent;
import jdk.test.lib.Asserts;
import jdk.test.lib.jfr.EventNames;
import jdk.test.lib.jfr.Events;
import java.security.Security;
import java.util.List;
import java.util.Properties;
/*
* @test
* @bug 8292177
* @summary InitialSecurityProperty JFR event
* @key jfr
* @requires vm.hasJFR
* @library /test/lib
* @modules java.base/jdk.internal.access
* @run main/othervm jdk.jfr.event.security.TestInitialSecurityPropertyEvent
*/
public class TestInitialSecurityPropertyEvent {
private static final String SEC_KEY = "security.overridePropertiesFile";
public static void main(String[] args) throws Exception {
try (Recording recording = new Recording()) {
recording.enable(EventNames.InitialSecurityProperty)
.with("period", "beginChunk");
recording.start();
// this property edit should not be recorded
Security.setProperty(SEC_KEY, "false");
recording.stop();
Properties p = SharedSecrets.getJavaSecurityPropertiesAccess().getInitialProperties();
List<RecordedEvent> events = Events.fromRecording(recording);
if (events.size() == 0) {
throw new Exception("No security properties - Security class may not have loaded ?");
}
Asserts.assertEquals(events.size(), p.size(), "Incorrect number of events");
assertEvent(events, SEC_KEY, "true");
}
}
private static void assertEvent(List<RecordedEvent> events, String key, String origValue) throws Exception {
for (RecordedEvent e : events) {
if (e.getString("key").equals(key)) {
Events.assertField(e, "value").equal(origValue);
return;
}
}
System.out.println(events);
throw new Exception("Incorrect value for " + key + " property recorded");
}
}

@ -32,150 +32,150 @@ import jdk.jfr.EventType;
*/
public class EventNames {
public final static String PREFIX = "jdk.";
public static final String PREFIX = "jdk.";
private static final String GC_CATEGORY = "GC";
// JVM Configuration
public final static String JVMInformation = PREFIX + "JVMInformation";
public final static String InitialSystemProperty = PREFIX + "InitialSystemProperty";
public final static String IntFlag = PREFIX + "IntFlag";
public final static String UnsignedIntFlag = PREFIX + "UnsignedIntFlag";
public final static String LongFlag = PREFIX + "LongFlag";
public final static String UnsignedLongFlag = PREFIX + "UnsignedLongFlag";
public final static String DoubleFlag = PREFIX + "DoubleFlag";
public final static String BooleanFlag = PREFIX + "BooleanFlag";
public final static String StringFlag = PREFIX + "StringFlag";
public final static String IntFlagChanged = PREFIX + "IntFlagChanged";
public final static String UnsignedIntFlagChanged = PREFIX + "UnsignedIntFlagChanged";
public final static String LongFlagChanged = PREFIX + "LongFlagChanged";
public final static String UnsignedLongFlagChanged = PREFIX + "UnsignedLongFlagChanged";
public final static String DoubleFlagChanged = PREFIX + "DoubleFlagChanged";
public final static String BooleanFlagChanged = PREFIX + "BooleanFlagChanged";
public final static String StringFlagChanged = PREFIX + "StringFlagChanged";
public static final String JVMInformation = PREFIX + "JVMInformation";
public static final String InitialSystemProperty = PREFIX + "InitialSystemProperty";
public static final String IntFlag = PREFIX + "IntFlag";
public static final String UnsignedIntFlag = PREFIX + "UnsignedIntFlag";
public static final String LongFlag = PREFIX + "LongFlag";
public static final String UnsignedLongFlag = PREFIX + "UnsignedLongFlag";
public static final String DoubleFlag = PREFIX + "DoubleFlag";
public static final String BooleanFlag = PREFIX + "BooleanFlag";
public static final String StringFlag = PREFIX + "StringFlag";
public static final String IntFlagChanged = PREFIX + "IntFlagChanged";
public static final String UnsignedIntFlagChanged = PREFIX + "UnsignedIntFlagChanged";
public static final String LongFlagChanged = PREFIX + "LongFlagChanged";
public static final String UnsignedLongFlagChanged = PREFIX + "UnsignedLongFlagChanged";
public static final String DoubleFlagChanged = PREFIX + "DoubleFlagChanged";
public static final String BooleanFlagChanged = PREFIX + "BooleanFlagChanged";
public static final String StringFlagChanged = PREFIX + "StringFlagChanged";
// Runtime
public final static String ThreadStart = PREFIX + "ThreadStart";
public final static String ThreadEnd = PREFIX + "ThreadEnd";
public final static String ThreadSleep = PREFIX + "ThreadSleep";
public final static String ThreadPark = PREFIX + "ThreadPark";
public final static String JavaMonitorEnter = PREFIX + "JavaMonitorEnter";
public final static String JavaMonitorWait = PREFIX + "JavaMonitorWait";
public final static String JavaMonitorInflate = PREFIX + "JavaMonitorInflate";
public final static String SyncOnValueBasedClass = PREFIX + "SyncOnValueBasedClass";
public final static String ClassLoad = PREFIX + "ClassLoad";
public final static String ClassDefine = PREFIX + "ClassDefine";
public final static String ClassUnload = PREFIX + "ClassUnload";
public final static String SafepointBegin = PREFIX + "SafepointBegin";
public final static String SafepointStateSynchronization = PREFIX + "SafepointStateSynchronization";
public final static String SafepointCleanup = PREFIX + "SafepointCleanup";
public final static String SafepointCleanupTask = PREFIX + "SafepointCleanupTask";
public final static String SafepointEnd = PREFIX + "SafepointEnd";
public final static String ExecuteVMOperation = PREFIX + "ExecuteVMOperation";
public final static String Shutdown = PREFIX + "Shutdown";
public final static String JavaThreadStatistics = PREFIX + "JavaThreadStatistics";
public final static String ClassLoadingStatistics = PREFIX + "ClassLoadingStatistics";
public final static String ClassLoaderStatistics = PREFIX + "ClassLoaderStatistics";
public final static String ThreadAllocationStatistics = PREFIX + "ThreadAllocationStatistics";
public final static String ExecutionSample = PREFIX + "ExecutionSample";
public final static String NativeMethodSample = PREFIX + "NativeMethodSample";
public final static String ThreadDump = PREFIX + "ThreadDump";
public final static String OldObjectSample = PREFIX + "OldObjectSample";
public final static String SymbolTableStatistics = PREFIX + "SymbolTableStatistics";
public final static String StringTableStatistics = PREFIX + "StringTableStatistics";
public static final String ThreadStart = PREFIX + "ThreadStart";
public static final String ThreadEnd = PREFIX + "ThreadEnd";
public static final String ThreadSleep = PREFIX + "ThreadSleep";
public static final String ThreadPark = PREFIX + "ThreadPark";
public static final String JavaMonitorEnter = PREFIX + "JavaMonitorEnter";
public static final String JavaMonitorWait = PREFIX + "JavaMonitorWait";
public static final String JavaMonitorInflate = PREFIX + "JavaMonitorInflate";
public static final String SyncOnValueBasedClass = PREFIX + "SyncOnValueBasedClass";
public static final String ClassLoad = PREFIX + "ClassLoad";
public static final String ClassDefine = PREFIX + "ClassDefine";
public static final String ClassUnload = PREFIX + "ClassUnload";
public static final String SafepointBegin = PREFIX + "SafepointBegin";
public static final String SafepointStateSynchronization = PREFIX + "SafepointStateSynchronization";
public static final String SafepointCleanup = PREFIX + "SafepointCleanup";
public static final String SafepointCleanupTask = PREFIX + "SafepointCleanupTask";
public static final String SafepointEnd = PREFIX + "SafepointEnd";
public static final String ExecuteVMOperation = PREFIX + "ExecuteVMOperation";
public static final String Shutdown = PREFIX + "Shutdown";
public static final String JavaThreadStatistics = PREFIX + "JavaThreadStatistics";
public static final String ClassLoadingStatistics = PREFIX + "ClassLoadingStatistics";
public static final String ClassLoaderStatistics = PREFIX + "ClassLoaderStatistics";
public static final String ThreadAllocationStatistics = PREFIX + "ThreadAllocationStatistics";
public static final String ExecutionSample = PREFIX + "ExecutionSample";
public static final String NativeMethodSample = PREFIX + "NativeMethodSample";
public static final String ThreadDump = PREFIX + "ThreadDump";
public static final String OldObjectSample = PREFIX + "OldObjectSample";
public static final String SymbolTableStatistics = PREFIX + "SymbolTableStatistics";
public static final String StringTableStatistics = PREFIX + "StringTableStatistics";
public static final String RedefineClasses = PREFIX + "RedefineClasses";
public static final String RetransformClasses = PREFIX + "RetransformClasses";
public static final String ClassRedefinition = PREFIX + "ClassRedefinition";
public static final String FinalizerStatistics = PREFIX + "FinalizerStatistics";
// This event is hard to test
public final static String ReservedStackActivation = PREFIX + "ReservedStackActivation";
public static final String ReservedStackActivation = PREFIX + "ReservedStackActivation";
// GC
public final static String GCHeapSummary = PREFIX + "GCHeapSummary";
public final static String MetaspaceSummary = PREFIX + "MetaspaceSummary";
public final static String MetaspaceGCThreshold = PREFIX + "MetaspaceGCThreshold";
public final static String MetaspaceAllocationFailure = PREFIX + "MetaspaceAllocationFailure";
public final static String MetaspaceOOM = PREFIX + "MetaspaceOOM";
public final static String MetaspaceChunkFreeListSummary = PREFIX + "MetaspaceChunkFreeListSummary";
public final static String PSHeapSummary = PREFIX + "PSHeapSummary";
public final static String G1HeapSummary = PREFIX + "G1HeapSummary";
public final static String G1HeapRegionInformation = PREFIX + "G1HeapRegionInformation";
public final static String G1HeapRegionTypeChange = PREFIX + "G1HeapRegionTypeChange";
public final static String ShenandoahHeapRegionInformation = PREFIX + "ShenandoahHeapRegionInformation";
public final static String ShenandoahHeapRegionStateChange = PREFIX + "ShenandoahHeapRegionStateChange";
public final static String TenuringDistribution = PREFIX + "TenuringDistribution";
public final static String GarbageCollection = PREFIX + "GarbageCollection";
public final static String ParallelOldGarbageCollection = PREFIX + "ParallelOldGarbageCollection";
public final static String ParallelOldCollection = ParallelOldGarbageCollection;
public final static String YoungGarbageCollection = PREFIX + "YoungGarbageCollection";
public final static String OldGarbageCollection = PREFIX + "OldGarbageCollection";
public final static String G1GarbageCollection = PREFIX + "G1GarbageCollection";
public final static String G1MMU = PREFIX + "G1MMU";
public final static String EvacuationInformation = PREFIX + "EvacuationInformation";
public final static String GCReferenceStatistics = PREFIX + "GCReferenceStatistics";
public final static String ObjectCountAfterGC = PREFIX + "ObjectCountAfterGC";
public final static String PromoteObjectInNewPLAB = PREFIX + "PromoteObjectInNewPLAB";
public final static String PromoteObjectOutsidePLAB = PREFIX + "PromoteObjectOutsidePLAB";
public final static String PromotionFailed = PREFIX + "PromotionFailed";
public final static String EvacuationFailed = PREFIX + "EvacuationFailed";
public final static String ConcurrentModeFailure = PREFIX + "ConcurrentModeFailure";
public final static String GCPhasePause = PREFIX + "GCPhasePause";
public final static String GCPhasePauseLevel1 = PREFIX + "GCPhasePauseLevel1";
public final static String GCPhasePauseLevel2 = PREFIX + "GCPhasePauseLevel2";
public final static String GCPhasePauseLevel3 = PREFIX + "GCPhasePauseLevel3";
public final static String GCPhasePauseLevel4 = PREFIX + "GCPhasePauseLevel4";
public final static String ObjectCount = PREFIX + "ObjectCount";
public final static String GCConfiguration = PREFIX + "GCConfiguration";
public final static String GCSurvivorConfiguration = PREFIX + "GCSurvivorConfiguration";
public final static String GCTLABConfiguration = PREFIX + "GCTLABConfiguration";
public final static String GCHeapConfiguration = PREFIX + "GCHeapConfiguration";
public final static String YoungGenerationConfiguration = PREFIX + "YoungGenerationConfiguration";
public final static String G1AdaptiveIHOP = PREFIX + "G1AdaptiveIHOP";
public final static String G1EvacuationYoungStatistics = PREFIX + "G1EvacuationYoungStatistics";
public final static String G1EvacuationOldStatistics = PREFIX + "G1EvacuationOldStatistics";
public final static String G1BasicIHOP = PREFIX + "G1BasicIHOP";
public final static String AllocationRequiringGC = PREFIX + "AllocationRequiringGC";
public final static String GCPhaseParallel = PREFIX + "GCPhaseParallel";
public final static String GCPhaseConcurrent = PREFIX + "GCPhaseConcurrent";
public final static String GCPhaseConcurrentLevel1 = PREFIX + "GCPhaseConcurrentLevel1";
public final static String ZAllocationStall = PREFIX + "ZAllocationStall";
public final static String ZPageAllocation = PREFIX + "ZPageAllocation";
public final static String ZRelocationSet = PREFIX + "ZRelocationSet";
public final static String ZRelocationSetGroup = PREFIX + "ZRelocationSetGroup";
public final static String ZUncommit = PREFIX + "ZUncommit";
public final static String ZUnmap = PREFIX + "ZUnmap";
public final static String GCLocker = PREFIX + "GCLocker";
public static final String GCHeapSummary = PREFIX + "GCHeapSummary";
public static final String MetaspaceSummary = PREFIX + "MetaspaceSummary";
public static final String MetaspaceGCThreshold = PREFIX + "MetaspaceGCThreshold";
public static final String MetaspaceAllocationFailure = PREFIX + "MetaspaceAllocationFailure";
public static final String MetaspaceOOM = PREFIX + "MetaspaceOOM";
public static final String MetaspaceChunkFreeListSummary = PREFIX + "MetaspaceChunkFreeListSummary";
public static final String PSHeapSummary = PREFIX + "PSHeapSummary";
public static final String G1HeapSummary = PREFIX + "G1HeapSummary";
public static final String G1HeapRegionInformation = PREFIX + "G1HeapRegionInformation";
public static final String G1HeapRegionTypeChange = PREFIX + "G1HeapRegionTypeChange";
public static final String ShenandoahHeapRegionInformation = PREFIX + "ShenandoahHeapRegionInformation";
public static final String ShenandoahHeapRegionStateChange = PREFIX + "ShenandoahHeapRegionStateChange";
public static final String TenuringDistribution = PREFIX + "TenuringDistribution";
public static final String GarbageCollection = PREFIX + "GarbageCollection";
public static final String ParallelOldGarbageCollection = PREFIX + "ParallelOldGarbageCollection";
public static final String ParallelOldCollection = ParallelOldGarbageCollection;
public static final String YoungGarbageCollection = PREFIX + "YoungGarbageCollection";
public static final String OldGarbageCollection = PREFIX + "OldGarbageCollection";
public static final String G1GarbageCollection = PREFIX + "G1GarbageCollection";
public static final String G1MMU = PREFIX + "G1MMU";
public static final String EvacuationInformation = PREFIX + "EvacuationInformation";
public static final String GCReferenceStatistics = PREFIX + "GCReferenceStatistics";
public static final String ObjectCountAfterGC = PREFIX + "ObjectCountAfterGC";
public static final String PromoteObjectInNewPLAB = PREFIX + "PromoteObjectInNewPLAB";
public static final String PromoteObjectOutsidePLAB = PREFIX + "PromoteObjectOutsidePLAB";
public static final String PromotionFailed = PREFIX + "PromotionFailed";
public static final String EvacuationFailed = PREFIX + "EvacuationFailed";
public static final String ConcurrentModeFailure = PREFIX + "ConcurrentModeFailure";
public static final String GCPhasePause = PREFIX + "GCPhasePause";
public static final String GCPhasePauseLevel1 = PREFIX + "GCPhasePauseLevel1";
public static final String GCPhasePauseLevel2 = PREFIX + "GCPhasePauseLevel2";
public static final String GCPhasePauseLevel3 = PREFIX + "GCPhasePauseLevel3";
public static final String GCPhasePauseLevel4 = PREFIX + "GCPhasePauseLevel4";
public static final String ObjectCount = PREFIX + "ObjectCount";
public static final String GCConfiguration = PREFIX + "GCConfiguration";
public static final String GCSurvivorConfiguration = PREFIX + "GCSurvivorConfiguration";
public static final String GCTLABConfiguration = PREFIX + "GCTLABConfiguration";
public static final String GCHeapConfiguration = PREFIX + "GCHeapConfiguration";
public static final String YoungGenerationConfiguration = PREFIX + "YoungGenerationConfiguration";
public static final String G1AdaptiveIHOP = PREFIX + "G1AdaptiveIHOP";
public static final String G1EvacuationYoungStatistics = PREFIX + "G1EvacuationYoungStatistics";
public static final String G1EvacuationOldStatistics = PREFIX + "G1EvacuationOldStatistics";
public static final String G1BasicIHOP = PREFIX + "G1BasicIHOP";
public static final String AllocationRequiringGC = PREFIX + "AllocationRequiringGC";
public static final String GCPhaseParallel = PREFIX + "GCPhaseParallel";
public static final String GCPhaseConcurrent = PREFIX + "GCPhaseConcurrent";
public static final String GCPhaseConcurrentLevel1 = PREFIX + "GCPhaseConcurrentLevel1";
public static final String ZAllocationStall = PREFIX + "ZAllocationStall";
public static final String ZPageAllocation = PREFIX + "ZPageAllocation";
public static final String ZRelocationSet = PREFIX + "ZRelocationSet";
public static final String ZRelocationSetGroup = PREFIX + "ZRelocationSetGroup";
public static final String ZUncommit = PREFIX + "ZUncommit";
public static final String ZUnmap = PREFIX + "ZUnmap";
public static final String GCLocker = PREFIX + "GCLocker";
public static final String SystemGC = PREFIX + "SystemGC";
public static final String GCCPUTime = PREFIX + "GCCPUTime";
// Compiler
public final static String Compilation = PREFIX + "Compilation";
public final static String CompilerPhase = PREFIX + "CompilerPhase";
public final static String CompilationFailure = PREFIX + "CompilationFailure";
public final static String CompilerInlining = PREFIX + "CompilerInlining";
public final static String CompilerStatistics = PREFIX + "CompilerStatistics";
public final static String CompilerConfiguration = PREFIX + "CompilerConfiguration";
public final static String CodeCacheStatistics = PREFIX + "CodeCacheStatistics";
public final static String CodeCacheConfiguration = PREFIX + "CodeCacheConfiguration";
public final static String CodeCacheFull = PREFIX + "CodeCacheFull";
public final static String ObjectAllocationInNewTLAB = PREFIX + "ObjectAllocationInNewTLAB";
public final static String ObjectAllocationOutsideTLAB = PREFIX + "ObjectAllocationOutsideTLAB";
public final static String ObjectAllocationSample = PREFIX + "ObjectAllocationSample";
public final static String Deoptimization = PREFIX + "Deoptimization";
public final static String JitRestart = PREFIX + "JitRestart";
public static final String Compilation = PREFIX + "Compilation";
public static final String CompilerPhase = PREFIX + "CompilerPhase";
public static final String CompilationFailure = PREFIX + "CompilationFailure";
public static final String CompilerInlining = PREFIX + "CompilerInlining";
public static final String CompilerStatistics = PREFIX + "CompilerStatistics";
public static final String CompilerConfiguration = PREFIX + "CompilerConfiguration";
public static final String CodeCacheStatistics = PREFIX + "CodeCacheStatistics";
public static final String CodeCacheConfiguration = PREFIX + "CodeCacheConfiguration";
public static final String CodeCacheFull = PREFIX + "CodeCacheFull";
public static final String ObjectAllocationInNewTLAB = PREFIX + "ObjectAllocationInNewTLAB";
public static final String ObjectAllocationOutsideTLAB = PREFIX + "ObjectAllocationOutsideTLAB";
public static final String ObjectAllocationSample = PREFIX + "ObjectAllocationSample";
public static final String Deoptimization = PREFIX + "Deoptimization";
public static final String JitRestart = PREFIX + "JitRestart";
// OS
public final static String OSInformation = PREFIX + "OSInformation";
public final static String VirtualizationInformation = PREFIX + "VirtualizationInformation";
public final static String CPUInformation = PREFIX + "CPUInformation";
public final static String CPULoad = PREFIX + "CPULoad";
public final static String ThreadCPULoad = PREFIX + "ThreadCPULoad";
public final static String SystemProcess = PREFIX + "SystemProcess";
public final static String ThreadContextSwitchRate = PREFIX + "ThreadContextSwitchRate";
public final static String InitialEnvironmentVariable = PREFIX + "InitialEnvironmentVariable";
public final static String NativeLibrary = PREFIX + "NativeLibrary";
public final static String PhysicalMemory = PREFIX + "PhysicalMemory";
public final static String NetworkUtilization = PREFIX + "NetworkUtilization";
public static final String OSInformation = PREFIX + "OSInformation";
public static final String VirtualizationInformation = PREFIX + "VirtualizationInformation";
public static final String CPUInformation = PREFIX + "CPUInformation";
public static final String CPULoad = PREFIX + "CPULoad";
public static final String ThreadCPULoad = PREFIX + "ThreadCPULoad";
public static final String SystemProcess = PREFIX + "SystemProcess";
public static final String ThreadContextSwitchRate = PREFIX + "ThreadContextSwitchRate";
public static final String InitialEnvironmentVariable = PREFIX + "InitialEnvironmentVariable";
public static final String NativeLibrary = PREFIX + "NativeLibrary";
public static final String PhysicalMemory = PREFIX + "PhysicalMemory";
public static final String NetworkUtilization = PREFIX + "NetworkUtilization";
public static final String ProcessStart = PREFIX + "ProcessStart";
// JDK
@ -184,18 +184,19 @@ public class EventNames {
public static final String FileWrite = PREFIX + "FileWrite";
public static final String SocketRead = PREFIX + "SocketRead";
public static final String SocketWrite = PREFIX + "SocketWrite";
public final static String ExceptionStatistics = PREFIX + "ExceptionStatistics";
public final static String JavaExceptionThrow = PREFIX + "JavaExceptionThrow";
public final static String JavaErrorThrow = PREFIX + "JavaErrorThrow";
public final static String ModuleRequire = PREFIX + "ModuleRequire";
public final static String ModuleExport = PREFIX + "ModuleExport";
public final static String TLSHandshake = PREFIX + "TLSHandshake";
public final static String X509Certificate = PREFIX + "X509Certificate";
public final static String X509Validation = PREFIX + "X509Validation";
public final static String SecurityProperty = PREFIX + "SecurityPropertyModification";
public final static String SecurityProviderService = PREFIX + "SecurityProviderService";
public final static String DirectBufferStatistics = PREFIX + "DirectBufferStatistics";
public final static String Deserialization = PREFIX + "Deserialization";
public static final String ExceptionStatistics = PREFIX + "ExceptionStatistics";
public static final String JavaExceptionThrow = PREFIX + "JavaExceptionThrow";
public static final String JavaErrorThrow = PREFIX + "JavaErrorThrow";
public static final String ModuleRequire = PREFIX + "ModuleRequire";
public static final String ModuleExport = PREFIX + "ModuleExport";
public static final String TLSHandshake = PREFIX + "TLSHandshake";
public static final String X509Certificate = PREFIX + "X509Certificate";
public static final String X509Validation = PREFIX + "X509Validation";
public static final String InitialSecurityProperty = PREFIX + "InitialSecurityProperty";
public static final String SecurityProperty = PREFIX + "SecurityPropertyModification";
public static final String SecurityProviderService = PREFIX + "SecurityProviderService";
public static final String DirectBufferStatistics = PREFIX + "DirectBufferStatistics";
public static final String Deserialization = PREFIX + "Deserialization";
public static final String VirtualThreadStart = PREFIX + "VirtualThreadStart";
public static final String VirtualThreadEnd = PREFIX + "VirtualThreadEnd";
public static final String VirtualThreadPinned = PREFIX + "VirtualThreadPinned";
@ -209,11 +210,11 @@ public class EventNames {
public static final String ContainerIOUsage = PREFIX + "ContainerIOUsage";
// Flight Recorder
public final static String DumpReason = PREFIX + "DumpReason";
public final static String DataLoss = PREFIX + "DataLoss";
public final static String CPUTimeStampCounter = PREFIX + "CPUTimeStampCounter";
public final static String ActiveRecording = PREFIX + "ActiveRecording";
public final static String ActiveSetting = PREFIX + "ActiveSetting";
public static final String DumpReason = PREFIX + "DumpReason";
public static final String DataLoss = PREFIX + "DataLoss";
public static final String CPUTimeStampCounter = PREFIX + "CPUTimeStampCounter";
public static final String ActiveRecording = PREFIX + "ActiveRecording";
public static final String ActiveSetting = PREFIX + "ActiveSetting";
public static final String Flush = PREFIX + "Flush";
// Diagnostics