I’m a bit confused about how the macOS implementation of JDK uses Objective-C memory management.
Does it use ARC? I’m guessing it does, because I see dealloc methods that clear pointer variables without first releasing them. However, if I put an Xcode breakpoint on -[MTLLayer dealloc], the breakpoint is never hit after I close windows or dismiss menus, which suggests the MTLLayer instances are leaked. This matters because MTLLayer instances have associated CVDisplayLinks, which have active threads. I see that Java_sun_lwawt_macosx_CFRetainedResource_nativeCFRelease is called on MTLLayer instances, but the retain count at that time is 6. Three other Objective-C instances are released using this function: AWTView, AWTWindow_Panel, and AWTSurfaceLayers, but that is not enough to do the job. Apple has tools for diagnosing memory leaks, but I don’t know how to run them on a JDK based application.