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

[Lilliput] Parallel GC support for compact identity hashcode

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Unresolved
    • Icon: P4 P4
    • None
    • repo-lilliput
    • hotspot
    • gc

      The current implementation of compact identity hashcode does not support Parallel GC. The reason for that is that compact identity hash-code needs the ability to 'grow' objects whenever the GC copies an object to a new location.

      However, ParallelGC's full GC is rather restricted in that it uses the current object sizes to pre-calculate the size of 'regions' which are then used to distribute work across the worker threads. With compact i-hash, we can only determine whether or not an object needs to be expanded when we know the target address (because we must not expand objects that don't actually move). It's complicated by the fact that in Parallel GC, those 'regions' are not like G1's regions: In G1, objects must not cross region boundaries, while in Parallel GC they do, and there is a lot of complicated code to deal with that.

      One approach to implement support for compact identity hash-code for Parallel's full GC may be to pessimistically assume that all i-hashed objects need to be expanded. This means we would end up with some waste when objects don't actually need to expand, but that seems an ok compromise.

            rkennke Roman Kennke
            rkennke Roman Kennke
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: