Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6355402

Java2D Font implementation should improve MT scaleability of getting outline (visual) bounds.

XMLWordPrintable

    • 2d
    • b67
    • x86
    • windows_xp

        FULL PRODUCT VERSION :


        A DESCRIPTION OF THE PROBLEM :
        We have problem with heavy report rendering in server environment (8+ threads, 4 CPUs). We don't get 100% cpu usage. Threads are blocked about 70% of the time.

        We had this problem in 1.4.2 because of bug 4641861. I was expecting that upgrading to 1.5.0 would resolve the issue. But it didn't.

        In 1.4.2, threads were blocked for NativeFontWrapper's synchronized static native methods (which no longer exist in 1.5). Now they are waiting in FileFontStrike.getGlyphOutlineBounds for access to the boundsMap field.

        I think use of a ReadWriteLock for access to the boundsMap (instead of simply synchronizing on it) would greatly improve the scalibility. Currently threads that are only reading the map block each other which is not necessary.



        STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
        You'll need an SMP machine (not hyper threaded). Run at least twice the number of CPUs threads. Each thread should use something like TextLayout to calculate the boundaries of a string displayed in a font.

        EXPECTED VERSUS ACTUAL BEHAVIOR :
        EXPECTED -
        100% CPU usage
        ACTUAL -
        ~30%-50% CPU usage

        REPRODUCIBILITY :
        This bug can be reproduced always.

              prr Philip Race
              jssunw Jitender S (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: