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

Reply via email to