88 Commits

Author SHA1 Message Date
Antonios Printezis
ce2883fbbd 6975964: G1: print out a more descriptive message for evacuation failure when +PrintGCDetails is set
We're renaming "evacuation failure" to "to-space overflow". I'm also piggy-backing a small additional change which removes the "Mark closure took..." output.

Reviewed-by: ysr, johnc
2010-08-17 14:40:00 -04:00
Antonios Printezis
7125621712 6974928: G1: sometimes humongous objects are allocated in young regions
As the title says, sometimes we are allocating humongous objects in young regions and we shouldn't.

Reviewed-by: ysr, johnc
2010-08-17 14:40:00 -04:00
Antonios Printezis
1f0201f90b 6959014: G1: assert(minimum_desired_capacity <= maximum_desired_capacity) failed: sanity check
There are a few issues in the code that calculates whether to resize the heap and by how much: a) some calculations can overflow 32-bit size_t's, b) min_desired_capacity is not bounded by the max heap size, and c) the assrt that fires is in the wrong place. The fix also includes some tidying up of the related verbose code.

Reviewed-by: ysr, jmasa
2010-08-17 14:40:00 -04:00
John Coomes
7fe1c05c7c 6966222: G1: simplify TaskQueue overflow handling
Reviewed-by: tonyp, ysr
2010-08-09 05:41:05 -07:00
Antonios Printezis
b4148f3379 6963209: G1: remove the concept of abandoned pauses
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
2010-08-04 13:03:23 -04:00
John Cuthbertson
3a2b2b4fd8 6814437: G1: remove the _new_refs array
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
2010-08-02 12:51:43 -07:00
John Cuthbertson
5c3da1ee7e 6956639: G1: assert(cached_ptr != card_ptr) failed: shouldn't be, concurrentG1Refine.cpp:307
During concurrent refinment, filter cards in young regions after it has been determined that the region has been allocated from and the young type of the region has been set.

Reviewed-by: iveresov, tonyp, jcoomes
2010-07-19 11:06:34 -07:00
Antonios Printezis
dfc84e8c89 6944166: G1: explicit GCs are not always handled correctly
G1 was not handling explicit GCs correctly in many ways. It does now. See the CR for the list of improvements contained in this changeset.

Reviewed-by: iveresov, ysr, johnc
2010-06-28 14:13:17 -04:00
Antonios Printezis
3e2cf1a294 6946048: G1: improvements to +PrintGCDetails output
Small improvements to G1's PrintGCDetails output. It also includes minor formatting details.

Reviewed-by: ysr, johnc
2010-04-22 15:20:16 -04:00
John R Rose
d6a9b93b5a Merge 2010-06-02 22:45:42 -07:00
Erik Trimble
ba7c173659 6941466: Oracle rebranding changes for Hotspot repositories
Change all the Sun copyrights to Oracle copyright

Reviewed-by: ohair
2010-05-27 19:08:38 -07:00
Vladimir Kozlov
cc18a50e59 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
Added new product ObjectAlignmentInBytes flag to control object alignment.

Reviewed-by: twisti, ysr, iveresov
2010-05-27 18:01:56 -07:00
John Coomes
04b4d79094 6951319: enable solaris builds using Sun Studio 12 update 1
Reviewed-by: kamg, ysr, dholmes, johnc
2010-05-18 11:02:18 -07:00
Andrey Petrusenko
0d3978019b 6921317: (partial) G1: assert(top() == bottom() || zfs == Allocated,"Region must be empty, or we must be setting it to
Extended the failing assertion with the new message format to get more data.

Reviewed-by: tonyp
2010-05-14 10:28:46 -07:00
John Coomes
7e76feaf42 6888953: some calls to function-like macros are missing semicolons
Reviewed-by: pbk, kvn
2009-10-11 16:19:25 -07:00
John Cuthbertson
b1867e0dd5 6819061: G1: eliminate serial Other times that are proportional to the collection set length
6871109: G1: remove the concept of the scan only prefix

Removed scan only regions and associated code. The young portion of the collection set is now constructed incrementally - when a young region is retired as the current allocation region it is added to the collection set.

Reviewed-by: apetrusenko, iveresov, tonyp
2010-04-22 10:02:38 -07:00
Andrey Petrusenko
99cdb36eca 6942253: G1: replace G1ParallelGCAllocBufferSize with YoungPLABSize and OldPLABSize
Replaces the G1-specific parameter with the existing ones that are used by the other GCs (YoungPLABSize and OldPLABSize)

Reviewed-by: tonyp, johnc
2010-04-16 08:48:16 -07:00
Antonios Printezis
89dcd228da 6939027: G1: assertion failure during the concurrent phase of cleanup
The outgoing region map is not maintained properly and it's causing an assert failure. Given that we don't actually use it, I'm removing it. I'm piggy-backing a small change on this which removes a message that it's printed before a Full GC when DisableExplicitGC is set.

Reviewed-by: apetrusenko, ysr
2010-04-15 18:45:30 -04:00
John Cuthbertson
6110c052aa 6943926: G1: Integer overflow during heap region verification
The expression that calculates the live bytes for a heap region can overflow for a suitably large humongous region/object. Cache the object size in a suitably sized local variable so that the expression is converted to a wider type.

Reviewed-by: tonyp, jmasa, iveresov, apetrusenko
2010-04-15 15:52:55 -07:00
Antonios Printezis
9b4fc8fc23 6937142: G1: improvements to debugging output (S-M)
Various fixes to the G1 debugging output.

Reviewed-by: johnc, iveresov
2010-03-30 15:43:03 -04:00
Jon Masamitsu
f5197d0d36 6858496: Clear all SoftReferences before an out-of-memory due to GC overhead limit
Ensure a full GC that clears SoftReferences before throwing an out-of-memory

Reviewed-by: ysr, jcoomes
2010-04-13 13:52:10 -07:00
John Cuthbertson
b98560aa10 6940894: G1: assert(new_obj != 0 || ... "should be forwarded") for compaction tests
Humongous regions may contain multiple objects as a result of being retained as to-space from a previous GC and then re-used as to-space after being tagged as humongous. These changes include a check that causes retained to-space regions that are now tagged as humongous to be disregarded and a new to-space region allocated.

Reviewed-by: tonyp, iveresov
2010-04-07 11:43:53 -07:00
Antonios Printezis
719e7f0926 6909756: G1: guarantee(G1CollectedHeap::heap()->mark_in_progress(),"Precondition.")
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
2010-04-06 10:59:45 -04:00
John Cuthbertson
e9f77f7ec1 6755988: G1: assert(new_obj != 0 || ... "should be forwarded")
A TLAB became large enough to be considered a humongous object allowing multiple objects to be allocated in a humongous region, which violates a basic assumption about humongous regions. The changes ensure that TLABs cannot be regarded as humongous.

Reviewed-by: iveresov, tonyp
2010-03-11 11:44:43 -08:00
Antonios Printezis
b5c83abcd4 6928059: G1: command line parameter renaming
Rename G1 parameters to make them more consistent.

Reviewed-by: jmasa, johnc
2010-02-23 23:13:23 -05:00
Igor Veresov
52b92d5593 6923991: G1: improve scalability of RSet scanning
Implemented block-based work stealing. Moved copying during the rset scanning phase to the main copying phase. Made the size of rset table depend on the region size.

Reviewed-by: apetrusenko, tonyp
2010-02-11 15:52:19 -08:00
Y. Srinivas Ramakrishna
c61ab190cf 6904516: More object array barrier fixes, following up on 6906727
Fixed missing pre-barrier calls for G1, modified C1 to call pre- and correct post-barrier interfaces, deleted obsolete interface, (temporarily) disabled redundant deferred barrier in BacktraceBuilder.

Reviewed-by: coleenp, jmasa, kvn, never
2010-02-01 17:29:01 -08:00
Y. Srinivas Ramakrishna
331512606a 6896647: card marks can be deferred too long
Deferred card marks are now flushed during the gc prologue. Parallel[Scavege,OldGC] and SerialGC no longer defer card marks generated by COMPILER2 as a result of ReduceInitialCardMarks. For these cases, introduced a diagnostic option to defer the card marks, only for the purposes of testing and diagnostics. CMS and G1 continue to defer card marks. Potential performance concern related to single-threaded flushing of deferred card marks in the gc prologue will be addressed in the future.

Reviewed-by: never, johnc
2010-01-13 15:26:39 -08:00
Igor Veresov
1383dc414b 6862387: tune concurrent refinement further
Reworked the concurrent refinement: threads activation, feedback-based threshold adjustment, other miscellaneous fixes.

Reviewed-by: apetrusenko, tonyp
2009-12-16 15:12:51 -08:00
Antonios Printezis
8a125d9913 6880903: G1: G1 reports incorrect Runtime.maxMemory()
G1 reports committed memory instead of reserved memory from the Runtime.maxMemory() method

Reviewed-by: ysr, jmasa
2009-12-04 07:44:35 -05:00
Antonios Printezis
9cf0c891d9 6815790: G1: Missing MemoryPoolMXBeans with -XX:+UseG1GC
It introduces the necessary memory pools for G1.

Reviewed-by: mchung, ysr
2009-11-20 14:47:01 -05:00
Y. Srinivas Ramakrishna
b5af9f3408 6902303: G1: ScavengeALot should cause an incremental, rather than a full, collection
ScavengeALot now causes an incremental (but possibly partially young, in the G1 sense) collection. Some such collections may be abandoned on account of MMU specs. Band-aided a native leak associated with abandoned pauses, as well as an MMU tracker overflow related to frequent scavenge events in the face of a large MMU denominator interval; the latter is protected by a product flag that defaults to false.

Reviewed-by: tonyp
2009-11-19 13:43:25 -08:00
Andrey Petrusenko
79580cb425 6870843: G1: G1 GC memory leak
The fix addresses two memory leaks in G1 code: (1) _evac_failure_scan_stack - a resource object allocated on the C heap was not freed; (2) RSHashTable were linked into deleted list which was only cleared at full GC.

Reviewed-by: tonyp, iveresov
2009-10-27 02:42:24 -07:00
Antonios Printezis
2c2a8ae8b1 6890137: G1: revamp reachable object dump
Revamp the reachable object dump debugging facility.

Reviewed-by: jmasa, apetrusenko
2009-09-30 14:50:51 -04:00
Antonios Printezis
2684c3a431 6882730: G1: parallel heap verification messes up region dump
It tidies up the G1 heap verification a bit. In particular, when the verification is done in parallel and there is a failure, this is propagated to the top level and the heap is dumped at the end, not by every thread that encounters a failure.

Reviewed-by: johnc, jmasa
2009-10-02 16:20:42 -04:00
Antonios Printezis
99a529bb86 6885041: G1: inconsistent thread dump
When G1 is enabled, thread dumps are inconsistent as the info for some of the G1 threads is not formatted properly.

Reviewed-by: ysr, johnc
2009-10-02 16:12:07 -04:00
John R Rose
40d52710f6 Merge 2009-09-23 23:56:15 -07:00
John R Rose
e261aecad8 6863023: need non-perm oops in code cache for JSR 292
Make a special root-list for those few nmethods which might contain non-perm oops.

Reviewed-by: twisti, kvn, never, jmasa, ysr
2009-09-15 21:53:47 -07:00
John Cuthbertson
f1cbffdd3e 6819077: G1: first GC thread coming late into the GC
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
2009-08-04 16:00:17 -07:00
John Cuthbertson
36917caf5e 6865703: G1: Parallelize hot card cache cleanup
Have the GC worker threads clear the hot card cache in parallel by having each worker thread claim a chunk of the card cache and process the cards in that chunk. The size of the chunks that each thread will claim is determined at VM initialization from the size of the card cache and the number of worker threads.

Reviewed-by: jmasa, tonyp
2009-08-03 12:59:30 -07:00
Antonios Printezis
243367ec16 6819085: G1: use larger and/or user settable region size
Instead of the region size being hard-coded, allow the user to set it.

Reviewed-by: jmasa, johnc, apetrusenko
2009-07-30 16:22:58 -04:00
Y. Srinivas Ramakrishna
c6763b5bad 4957990: Perm heap bloat in JVM
Treat ProfileData in MDO's as a source of weak, not strong, roots. Fixes the bug for stop-world collection -- the case of concurrent collection will be fixed separately.

Reviewed-by: jcoomes, jmasa, kvn, never
2009-09-02 00:04:29 -07:00
Andrey Petrusenko
2491751525 6841313: G1: dirty cards of survivor regions in parallel
Reviewed-by: tonyp, iveresov
2009-08-31 05:27:29 -07:00
Antonios Printezis
4d138cd094 6871111: G1: remove the concurrent overhead tracker
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
2009-08-19 12:53:25 -04:00
Antonios Printezis
1d0a8b2945 6866591: G1: print update buffer processing stats more often
It adds parameter -XX:+G1SummarizeRSetStatsPeriod that causes update buffer processing information to be printed periodically. It also includes two small formatting changes.

Reviewed-by: jmasa, jcoomes, ysr
2009-07-30 14:50:58 -04:00
Antonios Printezis
5f7ed79e3c 6864886: G1: rename -XX parameters related to update buffers
Renaming a couple of update buffer-related parameters to make them more understandable and consistent.

Reviewed-by: iveresov, ysr
2009-07-29 11:01:26 -04:00
Y. Srinivas Ramakrishna
759881b511 6863216: Clean up debugging debris inadvertently pushed with 6700789
Anti-delta for debugging debris that was inadvertently pushed.

Reviewed-by: kvn, tonyp
2009-07-22 18:25:00 -07:00
Andrey Petrusenko
0e783b7554 6862661: G1: _gc_alloc_region_counts is not updated properly after 6604422
Implementation of RFE 6604422 (G1: re-use half-promoted regions) introduced incorrect _gc_alloc_region_counts updates which effectively disabled survivor spaces.

Reviewed-by: johnc, jmasa, tonyp
2009-07-22 02:46:55 -07:00
Antonios Printezis
26c66d0015 6859911: G1: assert(Heap_lock->owner() = NULL, "Should be owned on this thread's behalf")
The used() method assumes that the heap lock is held when it is called. However, when used() is called from print_on(), this is not the case.

Reviewed-by: ysr, jmasa
2009-07-15 12:22:59 -04:00
Y. Srinivas Ramakrishna
075c1335cb 6700789: G1: Enable use of compressed oops with G1 heaps
Modifications to G1 so as to allow the use of compressed oops.

Reviewed-by: apetrusenko, coleenp, jmasa, kvn, never, phh, tonyp
2009-07-14 15:40:39 -07:00