Hi, The XRender pipeline was leaking GCs which are generated on the java-side. Instead of trying to clean it up at the java-level, I now simply use Java_sun_java2d_x11_XSurfaceData_XCreateGC which sets the javaGC field in xsdo, which is already freed automatically at surface-dispose time.
Thanks, Clemens
--- old/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java 2010-10-22 19:59:12.530975783 +0200 +++ new/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java 2010-10-22 19:59:12.020734687 +0200 @@ -479,8 +485,7 @@ if (xrpipe == null) { try { SunToolkit.awtLock(); - xgc = renderQueue.createGC(xid); // TODO: GC leak? where to - // clean up? + xgc = XCreateGC(getNativeOps()); xrpipe = new XRRenderer(maskBuffer.getMaskBuffer()); xrtxpipe = new PixelToShapeConverter(xrpipe);