1. 16 2月, 2012 1 次提交
    • T
      7132029: G1: mixed GC phase lasts for longer than it should · 33a49849
      tonyp 提交于
      Summary: Revamp of the mechanism that chooses old regions for inclusion in the CSet. It simplifies the code and introduces min and max bounds on the number of old regions added to the CSet at each mixed GC to avoid pathological cases. It also ensures that when we do a mixed GC we'll always find old regions to add to the CSet (i.e., it eliminates the case where a mixed GC will collect no old regions which can happen today).
      Reviewed-by: johnc, brutisso
      33a49849
  2. 26 1月, 2012 1 次提交
    • T
      7127706: G1: re-enable survivors during the initial-mark pause · b73e0e37
      tonyp 提交于
      Summary: Re-enable survivors during the initial-mark pause. Afterwards, the concurrent marking threads have to scan them and mark everything reachable from them. The next GC will have to wait for the survivors to be scanned.
      Reviewed-by: brutisso, johnc
      b73e0e37
  3. 24 1月, 2012 1 次提交
    • B
      7132311: G1: assert((s == klass->oop_size(this)) ||... · 7864cfc8
      brutisso 提交于
      7132311: G1: assert((s == klass->oop_size(this)) || (Universe::heap()->is_gc_active() && ((is_typeArray()...
      Summary: Move the check for when to call collect() to before we do a humongous object allocation
      Reviewed-by: stefank, tonyp
      7864cfc8
  4. 17 1月, 2012 1 次提交
  5. 11 1月, 2012 1 次提交
    • T
      6888336: G1: avoid explicitly marking and pushing objects in survivor spaces · a6a74fef
      tonyp 提交于
      Summary: This change simplifies the interaction between GC and concurrent marking. By disabling survivor spaces during the initial-mark pause we don't need to propagate marks of objects we copy during each GC (since we never need to copy an explicitly marked object).
      Reviewed-by: johnc, brutisso
      a6a74fef
  6. 22 12月, 2011 1 次提交
  7. 16 12月, 2011 1 次提交
    • T
      7113012: G1: rename not-fully-young GCs as "mixed" · cac942d6
      tonyp 提交于
      Summary: Renamed partially-young GCs as mixed and fully-young GCs as young. Change all external output that includes those terms (GC log and GC ergo log) as well as any comments, fields, methods, etc. The changeset also includes very minor code tidying up (added some curly brackets).
      Reviewed-by: johnc, brutisso
      cac942d6
  8. 21 12月, 2011 1 次提交
  9. 18 11月, 2011 1 次提交
    • J
      7112743: G1: Reduce overhead of marking closure during evacuation pauses · 9ee12139
      johnc 提交于
      Summary: Parallelize the serial code that was used to mark objects reachable from survivor objects in the collection set. Some minor improvments in the timers used to track the freeing of the collection set along with some tweaks to PrintGCDetails.
      Reviewed-by: tonyp, brutisso
      9ee12139
  10. 29 11月, 2011 1 次提交
    • J
      7114303: G1: assert(_g1->mark_in_progress()) failed: shouldn't be here otherwise · 4fd871ca
      johnc 提交于
      Summary: Race between the VM thread reading G1CollectedHeap::_mark_in_progress and it being set by the concurrent mark thread when concurrent marking is aborted by a full GC. Have the concurrent mark thread join the SuspendibleThreadSet before changing the marking state.
      Reviewed-by: tonyp, brutisso
      4fd871ca
  11. 24 10月, 2011 1 次提交
    • J
      7096030: G1: PrintGCDetails enhancements · 15519f74
      johnc 提交于
      7102445: G1: Unnecessary Resource allocations during RSet scanning
      Summary: Add a new per-worker thread line in the PrintGCDetails output. GC Worker Other is the difference between the elapsed time for the parallel phase of the evacuation pause and the sum of the times of the sub-phases (external root scanning, mark stack scanning, RSet updating, RSet scanning, object copying, and termination) for that worker. During RSet scanning, stack allocate DirtyCardToOopClosure objects; allocating these in a resource area was causing abnormally high GC Worker Other times while the worker thread freed ResourceArea chunks.
      Reviewed-by: tonyp, jwilhelm, brutisso
      15519f74
  12. 14 10月, 2011 1 次提交
    • T
      7088680: G1: Cleanup in the G1CollectorPolicy class · a299c2e7
      tonyp 提交于
      Summary: Removed unused fields and methods, removed the G1CollectoryPolicy_BestRegionsFirst class and folded its functionality into the G1CollectorPolicy class.
      Reviewed-by: ysr, brutisso, jcoomes
      a299c2e7
  13. 24 9月, 2011 1 次提交
  14. 23 9月, 2011 1 次提交
    • J
      6484982: G1: process references during evacuation pauses · 9c3adbcc
      johnc 提交于
      Summary: G1 now uses two reference processors - one is used by concurrent marking and the other is used by STW GCs (both full and incremental evacuation pauses). In an evacuation pause, the reference processor is embedded into the closures used to scan objects. Doing so causes causes reference objects to be 'discovered' by the reference processor. At the end of the evacuation pause, these discovered reference objects are processed - preserving (and copying) referent objects (and their reachable graphs) as appropriate.
      Reviewed-by: ysr, jwilhelm, brutisso, stefank, tonyp
      9c3adbcc
  15. 08 9月, 2011 3 次提交
    • B
      6929868: G1: introduce min / max young gen size bounds · 499845d6
      brutisso 提交于
      Summary: Make G1 handle young gen size command line flags more consistently
      Reviewed-by: tonyp, jwilhelm
      499845d6
    • T
      7084509: G1: fix inconsistencies and mistakes in the young list target length calculations · 389cad56
      tonyp 提交于
      Summary: Fixed inconsistencies and mistakes in the young list target length calculations so that a) the calculated target length is optimal (before, it was not), b) other parameters like max survivor size and max gc locker eden expansion are always consistent with the calculated target length (before, they were not always), and c) the resulting target length was always bound by desired min and max values (before, it was not).
      Reviewed-by: brutisso, johnc
      389cad56
    • T
      7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions · e4a3f7b0
      tonyp 提交于
      Summary: It introduces ergonomic decision logging in G1 for the following heuristics: heap sizing, collection set construction, concurrent cycle initiation, and partially-young GC start/end. The code has a bit of refactoring in a few places to make the decision logging possible. It also replaces alternative ad-hoc logging that we have under different parameters and switches (G1_DEBUG, G1PolicyVerbose).
      Reviewed-by: johnc, ysr
      e4a3f7b0
  16. 22 8月, 2011 1 次提交
  17. 19 8月, 2011 1 次提交
  18. 12 8月, 2011 1 次提交
  19. 10 8月, 2011 1 次提交
  20. 19 11月, 2011 1 次提交
  21. 02 8月, 2011 1 次提交
    • J
      7068240: G1: Long "parallel other time" and "ext root scanning" when running specific benchmark · 519da0f6
      johnc 提交于
      Summary: In root processing, move the scanning of the reference processor's discovered lists to before RSet updating and scanning. When scanning the reference processor's discovered lists, use a buffering closure so that the time spent copying any reference object is correctly attributed. Also removed a couple of unused and irrelevant timers.
      Reviewed-by: ysr, jmasa
      519da0f6
  22. 09 6月, 2011 1 次提交
  23. 23 3月, 2011 1 次提交
    • B
      6948149: G1: Imbalance in termination times · 8c38c653
      brutisso 提交于
      Summary: Changed default value of WorkStealingYieldsBeforeSleep from 1000 to 5000. Added more information to G1 pause logging.
      Reviewed-by: jwilhelm, tonyp, jmasa
      8c38c653
  24. 08 12月, 2010 1 次提交
  25. 24 11月, 2010 1 次提交
  26. 25 8月, 2010 1 次提交
    • T
      6974966: G1: unnecessary direct-to-old allocations · 41dac17c
      tonyp 提交于
      Summary: This change revamps the slow allocation path of G1. Improvements include the following: a) Allocations directly to old regions are now totally banned. G1 now only allows allocations out of young regions (with the only exception being humongous regions). b) The thread that allocates a new region (which is now guaranteed to be young) does not dirty all its cards. Each thread that successfully allocates out of a young region is now responsible for dirtying the cards that corresponding to the "block" that just got allocated. c) allocate_new_tlab() and mem_allocate() are now implemented differently and TLAB allocations are only done by allocate_new_tlab(). d) If a thread schedules an evacuation pause in order to satisfy an allocation request, it will perform the allocation at the end of the safepoint so that the thread that initiated the GC also gets "first pick" of any space made available by the GC. e) If a thread is unable to allocate a humongous object it will schedule an evacuation pause in case it reclaims enough regions so that the humongous allocation can be satisfied aftewards. f) The G1 policy is more careful to set the young list target length to be the survivor number +1. g) Lots of code tidy up, removal, refactoring to make future changes easier.
      Reviewed-by: johnc, ysr
      41dac17c
  27. 05 8月, 2010 1 次提交
    • T
      6963209: G1: remove the concept of abandoned pauses · e49283a2
      tonyp 提交于
      Summary: As part of 6944166 we disabled the concept of abandoned pauses (i.e., if the collection set is empty, we would still try to do a pause even if it is to update the RSets and scan the roots). This changeset removes the code and structures associated with abandoned pauses.
      Reviewed-by: iveresov, johnc
      e49283a2
  28. 03 8月, 2010 1 次提交
    • J
      6814437: G1: remove the _new_refs array · 64711cc9
      johnc 提交于
      Summary: The per-worker _new_refs array is used to hold references that point into the collection set. It is populated during RSet updating and subsequently processed. In the event of an evacuation failure it processed again to recreate the RSets of regions in the collection set. Remove the per-worker _new_refs array by processing the references directly. Use a DirtyCardQueue to hold the cards containing the references so that the RSets of regions in the collection set can be recreated when handling an evacuation failure.
      Reviewed-by: iveresov, jmasa, tonyp
      64711cc9
  29. 29 6月, 2010 1 次提交
  30. 28 5月, 2010 1 次提交
  31. 23 4月, 2010 2 次提交
  32. 06 4月, 2010 1 次提交
    • T
      6909756: G1: guarantee(G1CollectedHeap::heap()->mark_in_progress(),"Precondition.") · 524b2dd2
      tonyp 提交于
      Summary: Make sure that two marking cycles do not overlap, i.e., a new one can only start after the concurrent marking thread finishes all its work. In the fix I piggy-back a couple of minor extra fixes: some general code reformatting for consistency (only around the code I modified), the removal of a field (G1CollectorPolicy::_should_initiate_conc_mark) which doesn't seem to be used at all (it's only set but never read), as well as moving the "is GC locker active" test earlier into the G1 pause / Full GC and using a more appropriate method for it.
      Reviewed-by: johnc, jmasa, jcoomes, ysr
      524b2dd2
  33. 31 3月, 2010 1 次提交
    • T
      6937160: G1: should observe GCTimeRatio · ba4ccdf3
      tonyp 提交于
      Summary: Remove the G1GCPercent parameter, that specifies the desired GC overhead percentage in G1, and observe the GCTimeRatio parameter instead.
      Reviewed-by: jmasa, johnc
      ba4ccdf3
  34. 17 12月, 2009 1 次提交
    • I
      6862387: tune concurrent refinement further · 7f92f7a2
      iveresov 提交于
      Summary: Reworked the concurrent refinement: threads activation, feedback-based threshold adjustment, other miscellaneous fixes.
      Reviewed-by: apetrusenko, tonyp
      7f92f7a2
  35. 05 8月, 2009 1 次提交
    • J
      6819077: G1: first GC thread coming late into the GC. · c046dd73
      johnc 提交于
      Summary: The first worker thread is delayed when entering the GC because it clears the card count table that is used in identifying hot cards. Replace the card count table with a dynamically sized evicting hash table that includes an epoch based counter.
      Reviewed-by: iveresov, tonyp
      c046dd73
  36. 31 7月, 2009 1 次提交
  37. 20 8月, 2009 1 次提交
    • T
      6871111: G1: remove the concurrent overhead tracker · 228aaca7
      tonyp 提交于
      Summary: Removing the concurrent overhead tracker from G1, along with the GC overhead reporter and the G1AccountConcurrentOverhead (both of which rely on the the concurrent overhead tracker).
      Reviewed-by: iveresov, johnc
      228aaca7