On Thu, 30 Apr 2026 07:18:28 GMT, Alan Bateman <[email protected]> wrote:
>> This PR guards usage of FileForce, SocketRead, and SocketWrite events with >> `jfrTracing` to prevent those classes from being loaded when JFR is not in >> use. This is the same technique as what's currently used with exception >> events and FileRead/FileWrite events. >> >> I used NMT and a simple test app that exercises file force and socket IO >> paths to check for a difference in memory usage. >> **NMT Before:** >> Classes=1188, Metadata used=966064 B, Class space used=93008 B >> **NMT After:** >> Classes=1182, Metadata used=943728 B, Class space used=89456 B >> Note that the difference in amount used doesn't actually change amount >> committed because the backing memory is pre-allocated in chunks with larger >> granularity. >> >> Testing: >> - new test test/jdk/jdk/jfr/event/io/TestEventsNotLoadedWithoutJfr.java to >> check the guards work properly >> - tier 1 >> >> --------- >> - [x] I confirm that I make this contribution in accordance with the >> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). > > src/java.base/share/classes/jdk/internal/event/JFRTracing.java line 50: > >> 48: enable(Class.forName("sun.nio.ch.SocketChannelImpl")); >> 49: enable(Class.forName("sun.nio.ch.SocketInputStream")); >> 50: enable(Class.forName("sun.nio.ch.SocketOutputStream")); > > I assume this is because these classes aren't accessible from > jdk.internal.event. Yeah, they’re currently package‑private to `sun.nio.ch`. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/30948#discussion_r3166422286
