OpenJDK / jdk / jdk
changeset 59896:fc52ceda935a
8242593: JFR: EventFactory does not scale well past unique 1000 events
Reviewed-by: jbachorik
author | egahlin |
---|---|
date | Tue, 23 Jun 2020 20:15:54 +0200 |
parents | caad1ce9bb8f |
children | d2816784605b |
files | src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataRepository.java src/jdk.jfr/share/classes/jdk/jfr/internal/tool/Summary.java |
diffstat | 2 files changed, 7 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataRepository.java Tue Jun 23 10:40:26 2020 -0700 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataRepository.java Tue Jun 23 20:15:54 2020 +0200 @@ -142,13 +142,11 @@ handler.setRegistered(true); typeLibrary.addType(handler.getPlatformEventType()); if (jvm.isRecording()) { - storeDescriptorInJVM(); // needed for emergency dump settingsManager.setEventControl(handler.getEventControl()); settingsManager.updateRetransform(Collections.singletonList((eventClass))); - } else { - setStaleMetadata(); - } - return handler.getEventType(); + } + setStaleMetadata(); + return handler.getEventType(); } private PlatformEventType findMirrorType(Class<? extends jdk.internal.event.Event> eventClass) throws InternalError {
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/tool/Summary.java Tue Jun 23 10:40:26 2020 -0700 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/tool/Summary.java Tue Jun 23 20:15:54 2020 +0200 @@ -120,6 +120,10 @@ int size = input.readInt(); long eventTypeId = input.readLong(); Statistics s = stats.get(eventTypeId); + if (s == null) { + s = new Statistics(eventTypeId + " (missing event metadata)"); + stats.put(eventTypeId, s); + } if (s != null) { s.count++; s.size += size; @@ -138,7 +142,6 @@ println(" Chunks: " + chunks); println(" Start: " + DATE_FORMAT.format(Instant.ofEpochSecond(epochSeconds, adjustNanos)) + " (UTC)"); println(" Duration: " + (totalDuration + 500_000_000) / 1_000_000_000 + " s"); - List<Statistics> statsList = new ArrayList<>(stats.values()); Collections.sort(statsList, (u, v) -> Long.compare(v.count, u.count)); println();