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

GenShen: mixed evacuation candidate regions need accurate live_data

XMLWordPrintable

    • Icon: Task Task
    • Resolution: Unresolved
    • Icon: P3 P3
    • None
    • None
    • hotspot
    • gc

      As currently implemented, at the time we are constructing a mixed evacuation collection set, we enquire of each mixed-evacuation candidate region to determine how much memory will need to be evacuated. We invoke ShenandoahHeapRegion::get_live_data_bytes() for this purpose.

      This function returns the amount of live data that was present within the region at the moment concurrent old marking finished. During subsequent young or mixed evacuations, additional objects may have been promoted into this region. The change between original value of top and the current value of top represents additional data that needs to be evacuated when this region is selected for the mixed evacuation collection set.

      Incidentally, the implementation of ShenandoahHeapRegion::garbage() returns the difference between used() and get_live_data_bytes(). This value returned from this function may also be incorrect as it accounts for the memory between original value of top() and current value of top() as garbage. Though this memory is not know to be live, it must be treated as live and evacuated because all of this memory was allocated after to start of old-gen marking.

            kdnilsen Kelvin Nilsen
            kdnilsen Kelvin Nilsen
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: