1. 19 1月, 2011 1 次提交
    • T
      7011379: G1: overly long concurrent marking cycles · c1c48661
      tonyp 提交于
      Summary: This changeset introduces filtering of SATB buffers at the point when they are about to be enqueued. If this filtering clears enough entries on each buffer, the buffer can then be re-used and not enqueued. This cuts down the number of SATB buffers that need to be processed by the concurrent marking threads.
      Reviewed-by: johnc, ysr
      c1c48661
  2. 14 1月, 2011 1 次提交
  3. 13 1月, 2011 3 次提交
    • B
      6941122: G1: UseLargePages does not work with G1 garbage collector · b1ff61c0
      brutisso 提交于
      Summary: Pass the value of UseLargePages instead of false as the "large" parameter when reserving the G1 heap.
      Reviewed-by: tonyp, johnc, phh
      b1ff61c0
    • T
      6994297: G1: do first-level slow-path allocations with a CAS · 302ddaef
      tonyp 提交于
      Summary: First attempt to allocate out the current alloc region using a CAS instead of taking the Heap_lock (first level of G1's slow allocation path). Only if that fails and it's necessary to replace the current alloc region take the Heap_lock (that's the second level of G1's slow allocation path).
      Reviewed-by: johnc, brutisso, ysr
      302ddaef
    • T
      7007068: G1: refine the BOT during evac failure handling · d205bb81
      tonyp 提交于
      Summary: During evacuation failure handling we refine the BOT to reflect the location of all the objects in the regions we scan. The changeset includes some minor cleanup: a) non-product print_on() method on the G1 BOT class, b) added more complete BOT verification during heap / region verification, c) slight modification to the BOT set up for humongous regions to be more consistent with the BOT set up during evac failure handling, and d) removed a couple of unused methods.
      Reviewed-by: johnc, ysr
      d205bb81
  4. 11 1月, 2011 1 次提交
  5. 07 1月, 2011 1 次提交
  6. 20 12月, 2010 1 次提交
  7. 18 12月, 2010 2 次提交
    • Y
      6807801: CMS: could save/restore fewer header words during scavenge · 8ea00085
      ysr 提交于
      Summary: Age bits need not enter the mark-word preservation calculus; also affected, in addition to CMS, per CR synopsis above, were ParNew (but not DefNew), ParallelScavenge and G1, albeit to a lesser degree than CMS.
      Reviewed-by: tonyp, johnc
      8ea00085
    • J
      7006113: G1: Initialize ReferenceProcessor::_is_alive_non_header field · a2d29d26
      johnc 提交于
      Summary: Initialize the _is_alive_non_header field of G1's reference processor with an instance of the G1CMIsAliveClosure. This will stop adding reference objects with live referents to the discovered reference lists unnecessarily.
      Reviewed-by: tonyp, ysr, jwilhelm, brutisso
      a2d29d26
  8. 15 12月, 2010 1 次提交
    • T
      7000559: G1: assertion failure !outer || (full_collections_started ==... · 49b4b500
      tonyp 提交于
      7000559: G1: assertion failure !outer || (full_collections_started == _full_collections_completed + 1)
      Summary: The concurrent marking thread can complete its operation and increment the full GC counter during a Full GC. This causes the nesting of increments to the start and end of Full GCs that we are expecting to be wrong. the fix is for the marking thread to join the suspendible thread set before incrementing the counter so that it's blocked until the Full GC (or any other safepoint) is finished. The change also includes some minor code cleanup (I renamed a parameter).
      Reviewed-by: brutisso, ysr
      49b4b500
  9. 10 12月, 2010 1 次提交
  10. 08 12月, 2010 2 次提交
    • Y
      7001033: assert(gch->gc_cause() == GCCause::_scavenge_alot ||... · 8be7836d
      ysr 提交于
      7001033: assert(gch->gc_cause() == GCCause::_scavenge_alot || !gch->incremental_collection_failed())
      7002546: regression on SpecJbb2005 on 7b118 comparing to 7b117 on small heaps
      Summary: Relaxed assertion checking related to incremental_collection_failed flag to allow for ExplicitGCInvokesConcurrent behaviour where we do not want a failing scavenge to bail to a stop-world collection. Parameterized incremental_collection_will_fail() so we can selectively use, or not use, as appropriate, the statistical prediction at specific use sites. This essentially reverts the scavenge bail-out logic to what it was prior to some recent changes that had inadvertently started using the statistical prediction which can be noisy in the presence of bursty loads. Added some associated verbose non-product debugging messages.
      Reviewed-by: johnc, tonyp
      8be7836d
    • T
      6994056: G1: when GC locker is active, extend the Eden instead of allocating into the old gen · ca3e35c8
      tonyp 提交于
      Summary: Allow the eden to the expanded up to a point when the GC locker is active.
      Reviewed-by: jwilhelm, johnc, ysr, jcoomes
      ca3e35c8
  11. 03 12月, 2010 1 次提交
  12. 02 12月, 2010 1 次提交
  13. 01 12月, 2010 1 次提交
  14. 24 11月, 2010 1 次提交
  15. 17 11月, 2010 2 次提交
    • J
      6978187: G1: assert(ParallelGCThreads> 1 || n_yielded() == _hrrs->occupied()) strikes again · 8d02802f
      johnc 提交于
      Summary: An evacuation failure while copying the roots caused an object, A, to be forwarded to itself. During the subsequent RSet updating a reference to A was processed causing the reference to be added to the RSet of A's heap region. As a result of adding to the remembered set we ran into the issue described in 6930581 - the sparse table expanded and the RSet scanning code walked the cards in one instance of RHashTable (_cur) while the occupied() counts the cards in the expanded table (_next).
      Reviewed-by: tonyp, iveresov
      8d02802f
    • Y
      7000578: CMS: assert(SafepointSynchronize::is_at_safepoint()) failed: Else races are possible · 3e22a1c3
      ysr 提交于
      Summary: Weakened assert in onj_is_alive() to allow its use at initialization time when is_at_safepoint() normally reports false; added some related asserts to check order of is_init_completed() after Universe::is_fully_initialized().
      Reviewed-by: jcoomes
      3e22a1c3
  16. 10 11月, 2010 1 次提交
  17. 06 11月, 2010 1 次提交
    • Y
      6997298: fatal error: must own lock CMS_markBitMap_lock during heap dump · 385dacb7
      ysr 提交于
      Summary: Since we are at a stop-world pause, the existing CMS-phase checks are sufficient for safety, and the locking check can be safely elided. Elaborated documentation comment to the case where class unloading and verification are disabled, and the query happens when we aren't in the sweeping phase, where the answer "false" would be (almost everywhere) too pessimistic.
      Reviewed-by: jmasa, johnc, tonyp
      385dacb7
  18. 24 10月, 2010 1 次提交
  19. 22 10月, 2010 2 次提交
    • Y
      6992998: CMSWaitDuration=0 causes hangs with +ExplicitGCInvokesConcurrent · 41f9c77a
      ysr 提交于
      Summary: Closed a timing hole during which concurrent full gc requests can be missed. The hole can increase the latency of the response to a full gc request by up to the value of CMSWaitDuration. If CMSWaitDuration=0 is, as currently, interpreted as an unbounded wait, suitable in certain tuning scenarios, the application can potentially hang. Made two obscure tunables, including CMSWaitDuration, manageable.
      Reviewed-by: jcoomes, tonyp
      41f9c77a
    • N
      6970683: improvements to hs_err output · 454991f1
      never 提交于
      Reviewed-by: kvn, jrose, dholmes, coleenp
      454991f1
  20. 17 10月, 2010 1 次提交
    • T
      6991377: G1: race between concurrent refinement and humongous object allocation · a9a0cccb
      tonyp 提交于
      Summary: There is a race between the concurrent refinement threads and the humongous object allocation that can cause the concurrent refinement threads to corrupt the part of the BOT that it is being initialized by the humongous object allocation operation. The solution is to do the humongous object allocation in careful steps to ensure that the concurrent refinement threads always have a consistent view over the BOT, region contents, and top. The fix includes some very minor tidying up in sparsePRT.
      Reviewed-by: jcoomes, johnc, ysr
      a9a0cccb
  21. 19 10月, 2010 1 次提交
    • J
      6988458: G1: assert(mr.end() <= _cm->finger()) failed: otherwise the region... · f0680241
      johnc 提交于
      6988458: G1: assert(mr.end() <= _cm->finger()) failed: otherwise the region shouldn't be on the stack
      Summary: The changes from 6941395 did not clear the CMTask::_aborted_region fields when concurrent marking aborted because of overflow. As a result, the next time around we could see a memory region whose start address was above the global finger and the assertion tripped. Moved the clearing of the aborted regions to ConcurrentMark::clear_marking_state, which is executed on all of the exit paths.
      Reviewed-by: tonyp, ysr, jmasa
      f0680241
  22. 16 10月, 2010 1 次提交
  23. 14 10月, 2010 1 次提交
  24. 13 10月, 2010 2 次提交
  25. 02 10月, 2010 3 次提交
    • T
      6980838: G1: guarantee(false) failed: thread has an unexpected active value in its SATB queue · acd6a8e3
      tonyp 提交于
      Summary: Under certain circumstances a safepoint could happen between a JavaThread object being created and that object being added to the Java threads list. This could cause the active field of that thread's SATB queue to get out-of-sync with respect to the other Java threads. The solution is to activate the SATB queue, when necessary, before adding the thread to the Java threads list, not when the JavaThread object is created. The changeset also includes a small fix to rename the surrogate locker thread from "Surrogate Locker Thread (CMS)" to "Surrogate Locker Thread (Concurrent GC)" since it's also used in G1.
      Reviewed-by: iveresov, ysr, johnc, jcoomes
      acd6a8e3
    • J
      6983311: G1: LoopTest hangs when run with -XX:+ExplicitInvokesConcurrent · 52b8d7bd
      johnc 提交于
      Summary: Clear the concurrent marking "in progress" flag while the FullGCCount_lock is held. This avoids a race that can cause back to back System.gc() calls, when ExplicitGCInvokesConcurrent is enabled, to fail to initiate a marking cycle causing the requesting thread to hang.
      Reviewed-by: tonyp, ysr
      52b8d7bd
    • Y
      6794422: Perm gen expansion policy for concurrent collectors · 9747275e
      ysr 提交于
      Summary: Concurrent collectors should expand the perm gen without a full STW GC, but possibly by triggering a concurrent collection. Temporary band-aid for G1 where no concurrent collection is kicked off since the perm gen is not collected concurrently.
      Reviewed-by: johnc
      9747275e
  26. 30 9月, 2010 1 次提交
    • Y
      6692906: CMS: parallel concurrent marking may be prone to hanging or stalling... · f1d21486
      ysr 提交于
      6692906: CMS: parallel concurrent marking may be prone to hanging or stalling mutators for periods of time
      Summary: Inserted missing yield(check)s in closures used during the work-stealing phase of parallel concurrent marking, a missing synchronous yield-request in the cms perm gen allocation path, and a terminator-terminator for the offer_termination invocation that monitors the yield status of the concurrent marking task. Elaborated some documentation comments and made some task queue termination loop flags configurable at start-up to aid debugging in the field.
      Reviewed-by: jmasa, johnc, poonam
      f1d21486
  27. 29 9月, 2010 2 次提交
  28. 14 9月, 2010 1 次提交
    • J
      6981746: G1: SEGV with -XX:+TraceGen0Time · a5cebdbe
      johnc 提交于
      Summary: Pass correct value for length to NumberSeq constructor. Guard dereferences of "body_summary" pointer with a NULL check.
      Reviewed-by: tonyp, ysr
      a5cebdbe
  29. 11 9月, 2010 1 次提交
  30. 21 9月, 2010 1 次提交