Print this page
rev 6887 : 8060467: CMS: small OldPLABSize and -XX:-ResizePLAB cause assert(ResizePLAB || n_blks == OldPLABSize) failed: Error
Reviewed-by: tschatzl, jmasa, kbarrett

Split Split Close
Expand all
Collapse all
          --- old/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
          +++ new/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
↓ open down ↓ 2633 lines elided ↑ open up ↑
2634 2634    debug_only(res->mangleAllocated(word_sz));
2635 2635    return (HeapWord*)res;
2636 2636  }
2637 2637  
2638 2638  // Get a chunk of blocks of the right size and update related
2639 2639  // book-keeping stats
2640 2640  void CFLS_LAB::get_from_global_pool(size_t word_sz, AdaptiveFreeList<FreeChunk>* fl) {
2641 2641    // Get the #blocks we want to claim
2642 2642    size_t n_blks = (size_t)_blocks_to_claim[word_sz].average();
2643 2643    assert(n_blks > 0, "Error");
2644      -  assert(ResizePLAB || n_blks == OldPLABSize, "Error");
     2644 +  assert(ResizeOldPLAB || n_blks == OldPLABSize, "Error");
2645 2645    // In some cases, when the application has a phase change,
2646 2646    // there may be a sudden and sharp shift in the object survival
2647 2647    // profile, and updating the counts at the end of a scavenge
2648 2648    // may not be quick enough, giving rise to large scavenge pauses
2649 2649    // during these phase changes. It is beneficial to detect such
2650 2650    // changes on-the-fly during a scavenge and avoid such a phase-change
2651 2651    // pothole. The following code is a heuristic attempt to do that.
2652 2652    // It is protected by a product flag until we have gained
2653 2653    // enough experience with this heuristic and fine-tuned its behaviour.
2654 2654    // WARNING: This might increase fragmentation if we overreact to
↓ open down ↓ 397 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX