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

pathologically slow oopmap generation

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 6
    • 2.0, 1.3.1_09, 1.4.2, 1.4.2_05, 5.0
    • hotspot
    • b48
    • generic, x86, sparc
    • generic, solaris_2.5.1, solaris_8, solaris_9, windows_nt

        An iPlanet app has encountered huge minor pause times (40+sec)
        due to oopmap generation by the interpreter. More generally,
        some oopmap generations are observed to take >200ms, which is
        more than the entire GC budget for the Nortel telco application.

        Oopmaps are needed for interpreted frames. We have interpreted
        frames when the compiler bails out. Some of the bailing methods
        are code generated from JSPs, that have heavy nesting of try..finally.

        Both c1 and c2 are bailing out in this particular case. Fixing
        compiler bailouts in general is a large project. One might
        automagically refactor large methods instead, which would also
        be a large project.

        Oopmaps tell, for a particular bci, whether each slot holds an oop.
        The current system caches this information. Normally one hopes
        that methods are compiled, and thus no longer need oopmaps.

        However, the same methods that cause compiler bailouts are also
        causing unexpectedly large oopmap generation times, occasionally
        on the order of 100s of msec. The offending code does fixed-point data
        flow iteration.

        Simply growing the cache size doesn't help, because there are a
        very large number of possible bci's in these large methods.

        Changing the way JSPs generate code may help avoid bailouts, but won't
        fix the underlying problem.

              coleenp Coleen Phillimore
              dstoutamsunw David Stoutamire (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: