Uploaded image for project: 'JikesRVM'
  1. JikesRVM
  2. RVM-512

Experiment with freezing bucket array in VM_HashMap/VM_HashSet

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Medium
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 3.0
    • Component/s: None
    • Labels:
      None

      Description

      VM_HashMap and VM_HashSet perform open hashing, first having an array of buckets and then linking together buckets that are in the same array location. When the size of the HashMap/HashSet grows then the original array becomes garbage, which as the array is often/initially in the boot image, creates an array that is never reclaimed but always scanned in a stop-the-world GC. If we want to avoid the array becoming garbage then we can prevent a new one from being allocated. This will still let the open hashing work as elements will be linked together, the length of the links will get longer and make the average case use slower. The amount of space used in a development image for bucket arrays is 132KB or under 33,110 references. There is a trade-off in making the HashMap/HashSet slower after boot image creation and avoiding creating a unreclaimable garbage bucket array that is scanned during stop-the-world GC.

        Attachments

          Issue links

            Activity

              People

              • Assignee:
                ianrogers Ian Rogers
                Reporter:
                ianrogers Ian Rogers
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: