138 Commits

Author SHA1 Message Date
Goetz Lindenmaier
f67a3b7e04 8038498: Fix includes and C inlining after 8035330
Change 8035330: Remove G1ParScanPartialArrayClosure and G1ParScanHeapEvacClosure broke the debug build on AIX. The method do_oop_partial_array() is added in a header, but requires the inline function par_write_ref() through several inlined calls. In some cpp files, like arguments.cpp, par_write_ref() is not defined as the corresponding inline header and is not included. The AIX debug VM does not start because of the missing symbol. This change solves this by cleaning up include dependencies.

Reviewed-by: tschatzl, stefank
2014-04-02 09:17:38 +02:00
Jesper Wilhelmsson
1e1ad7f132 8036025: Sort the freelist in order to shrink the heap
The free list is being maintained in a sorted fashion and old and humongous regions are allocated from the bottom of the heap while young regions are allocated at the top.

Co-authored-by: Staffan Friberg <staffan.friberg@oracle.com>
Reviewed-by: tschatzl, mgerdin
2014-02-28 15:27:09 +01:00
Thomas Schatzl
483ea400a5 8035330: Remove G1ParScanPartialArrayClosure and G1ParScanHeapEvacClosure
Mentioned closures are actually wrapped methods. This adds confusion to readers, and in this case also increases code size as G1ParScanHeapEvacClosure is part of the oop_oop_iterate() methods. Move them into G1ParScanThreadState as methods.

Reviewed-by: stefank
2014-03-17 10:07:51 +01:00
Thomas Schatzl
80188ce0b2 8035398: Add card redirty time in "Other" time in G1
Show the time taken by card redirtying during GC in a new "Redirty Cards" line.

Reviewed-by: jwilhelm, brutisso
2014-03-17 10:13:27 +01:00
Thomas Schatzl
d3e28ca682 8027295: Free CSet takes ~50% of young pause time
Improve fast card cache iteration and avoid taking locks when freeing the collection set.

Reviewed-by: brutisso
2014-03-17 10:13:18 +01:00
Thomas Schatzl
329e55e7b0 8035406: Improve data structure for Code Cache remembered sets
Change the code cache remembered sets data structure from a GrowableArray to a chunked list of nmethods. This makes the data structure more amenable to parallelization, and decreases freeing time.

Reviewed-by: mgerdin, brutisso
2014-03-17 10:12:21 +01:00
Bengt Rutisson
c88e3def4d 8034079: G1: Refactor the HeapRegionSet hierarchy
Reviewed-by: tschatzl, pliden
2014-03-14 10:15:46 +01:00
Thomas Schatzl
7de1730b10 8034948: Back out JDK-6976350 since it does not fix any issue
Revert JDK-6976350 because it does not improve PLAB fragmentation. To the contrary, it tends to increase the amount of wasted space with many threads.

Reviewed-by: brutisso
2014-02-24 10:45:15 +01:00
Thomas Schatzl
2ae60596ed 8035329: Move G1ParCopyClosure::copy_to_survivor_space into G1ParScanThreadState
Move G1ParCopyClosure::copy_to_survivor_space to decrease code size.

Reviewed-by: stefank, jmasa
2014-02-24 09:41:04 +01:00
Thomas Schatzl
dbc8581147 8035326: Assume non-NULL references in G1CollectedHeap::in_cset_fast_test
Remove the assumption that G1CollectedHeap::in_cset_fast_test needs to check for NULL references. Most of the time this is not required, making the code doing this check multiple times.

Reviewed-by: stefank, mgerdin, jmasa
2014-02-24 09:40:49 +01:00
Stefan Karlsson
2a866afcdb 8034761: Remove the do_code_roots parameter from process_strong_roots
Reviewed-by: tschatzl, mgerdin, jmasa
2014-02-13 17:44:39 +01:00
Bengt Rutisson
9b29efeb63 8030177: G1: Enable TLAB resizing
Reviewed-by: tschatzl, stefank, jmasa
2014-01-27 13:14:53 +01:00
Jesper Wilhelmsson
81ba2e32c0 8025856: Fix typos in the GC code
Fix about 440 typos in comments in the VM code

Reviewed-by: mgerdin, tschatzl, coleenp, kmo, jcoomes
2014-01-23 14:47:23 +01:00
Thomas Schatzl
70fd1802a0 8027746: Remove do_gen_barrier template parameter in G1ParCopyClosure
Remove the above mentioned template parameter and related unused code. Also remove some classes that are never used.

Reviewed-by: stefank, mgerdin, jwilhelm
2014-01-20 11:47:53 +01:00
Thomas Schatzl
4bb3631855 8027476: Improve performance of Stringtable unlink
8027455: Improve symbol table scan times during gc pauses

Parallelize string table and symbol table scan during remark and full GC. Some additional statistics output if the experimental flag G1TraceStringSymbolTableScrubbing is set.

Reviewed-by: mgerdin, coleenp, brutisso
2014-01-20 11:47:07 +01:00
Bengt Rutisson
810bc0c558 8029524: Remove unsused method CollectedHeap::unsafe_max_alloc()
Reviewed-by: pliden, jmasa
2013-12-16 08:54:14 +01:00
Markus Grönlund
b1e3461fe5 8028128: Add a type safe alternative for working with counter based data
Reviewed-by: dholmes, egahlin
2013-11-23 12:25:13 +01:00
John Coomes
875078a4e0 Merge 2013-10-04 13:37:25 -07:00
Lois Foltan
7bf953d005 7195622: CheckUnhandledOops has limited usefulness now
Enable CHECK_UNHANDLED_OOPS in fastdebug builds across all supported platforms.

Reviewed-by: coleenp, hseigel, dholmes, stefank, twisti, ihse, rdurbin
2013-09-26 10:25:02 -04:00
Mikael Gerdin
b8363e6615 8025305: Cleanup CardTableModRefBS usage in G1
Move some G1 specific code from CardTableModRefBS to G1SATBCardTableModRefBS.

Reviewed-by: brutisso, tschatzl, ehelin
2013-09-24 14:46:29 +02:00
Thomas Schatzl
962008f22b 8010722: assert: failed: heap size is too big for compressed oops
Use conservative assumptions of required alignment for the various garbage collector components into account when determining the maximum heap size that supports compressed oops. Using this conservative value avoids several circular dependencies in the calculation.

Reviewed-by: stefank, dholmes
2013-09-11 16:25:02 +02:00
Bengt Rutisson
4c3c3b6caa 8022872: G1: Use correct GC cause for young GC triggered by humongous allocations
Reviewed-by: tonyp, tschatzl
2013-08-21 22:35:56 +02:00
John Cuthbertson
f63547bf71 7145569: G1: optimize nmethods scanning
Add a list of nmethods to the RSet for a region that contain references into the region. Skip scanning the code cache during root scanning and scan the nmethod lists during RSet scanning instead.

Reviewed-by: tschatzl, brutisso, mgerdin, twisti, kvn
2013-08-15 10:52:18 +02:00
Jiangli Zhou
b454ece6d7 7133260: AllocationProfiler uses space in metadata and doesn't seem to do anything useful
Remove -Xaprof and Klass::_alloc_count & ArrayKlass::_alloc_size.

Reviewed-by: stefank, coleenp
2013-07-03 17:26:59 -04:00
Staffan Larsen
718f3252f6 8005849: JEP 167: Event-Based JVM Tracing
Co-authored-by: Karen Kinnear <karen.kinnear@oracle.com>
Co-authored-by: Bengt Rutisson <bengt.rutisson@oracle.com>
Co-authored-by: Calvin Cheung <calvin.cheung@oracle.com>
Co-authored-by: Erik Gahlin <erik.gahlin@oracle.com>
Co-authored-by: Erik Helin <erik.helin@oracle.com>
Co-authored-by: Jesper Wilhelmsson <jesper.wilhelmsson@oracle.com>
Co-authored-by: Keith McGuigan <keith.mcguigan@oracle.com>
Co-authored-by: Mattias Tobiasson <mattias.tobiasson@oracle.com>
Co-authored-by: Markus Gronlund <markus.gronlund@oracle.com>
Co-authored-by: Mikael Auno <mikael.auno@oracle.com>
Co-authored-by: Nils Eliasson <nils.eliasson@oracle.com>
Co-authored-by: Nils Loodin <nils.loodin@oracle.com>
Co-authored-by: Rickard Backman <rickard.backman@oracle.com>
Co-authored-by: Stefan Karlsson <stefan.karlsson@oracle.com>
Co-authored-by: Yekaterina Kantserova <yekaterina.kantserova@oracle.com>
Reviewed-by: acorn, coleenp, sla
2013-06-10 11:30:51 +02:00
Tao Mao
07ed2c141f 6976350: G1: deal with fragmentation while copying objects during GC
Create G1ParGCAllocBufferContainer to contain two buffers instead of previously using one buffer, in order to hold the first priority buffer longer. Thus, when some large objects hits the value of free space left in the first priority buffer it has an alternative to fit in the second priority buffer while the first priority buffer is given more chances to try allocating smaller objects. Overall, it will improve heap space efficiency.

Reviewed-by: johnc, jmasa, brutisso
2013-06-03 14:37:13 -07:00
Erik Helin
0f9e2457c5 8014277: Remove ObjectClosure as base class for BoolObjectClosure
Reviewed-by: brutisso, tschatzl
2013-05-17 11:57:05 +02:00
John Cuthbertson
eafc00bc25 8011724: G1: Stack allocate instances of HeapRegionRemSetIterator
Stack allocate instances of HeapRegionRemSetIterator during RSet scanning.

Reviewed-by: brutisso, jwilhelm
2013-04-18 10:09:23 -07:00
Stefan Karlsson
bdf829cf3e 8012687: Remove unused is_root checks and closures
Reviewed-by: tschatzl, jmasa
2013-04-22 20:27:36 +02:00
Stefan Karlsson
e96efdaa1a 8011872: Include Bit Map addresses in the hs_err files
Reviewed-by: brutisso, jmasa
2013-04-10 14:26:49 +02:00
Mikael Gerdin
89120e7827 7014552: gc/lock/jni/jnilockXXX works too slow on 1-processor machine
Keep a counter of how many times we were stalled by the GC locker, add a diagnostic flag which sets the limit.

Reviewed-by: brutisso, ehelin, johnc
2013-03-28 10:27:28 +01:00
Bengt Rutisson
77ebf3cbc1 8002144: G1: large number of evacuation failures may lead to large c heap memory usage
Use Stack<> instead of GrowableArray to keep track of preserved marks. Also reviewed by vitalyd@gmail.com.

Reviewed-by: johnc, jcoomes
2013-02-10 21:15:16 +01:00
John Cuthbertson
ed98ea0a88 8000311: G1: ParallelGCThreads==0 broken
Divide by zero error, if ParallelGCThreads is 0, when adjusting the PLAB size.

Reviewed-by: jmasa, jcoomes
2012-10-04 10:04:13 -07:00
John Cuthbertson
54412491e8 7190666: G1: assert(_unused == 0) failed: Inconsistency in PLAB stats
Reset the fields in ParGCAllocBuffer, that are used for accumulating values for the ResizePLAB sensors in PLABStats, to zero after flushing the values to the PLABStats fields. Flush PLABStats values only when retiring the final allocation buffers prior to disposing of a G1ParScanThreadState object, rather than when retiring every allocation buffer.

Reviewed-by: jwilhelm, jmasa, ysr
2012-09-20 09:52:56 -07:00
Bengt Rutisson
a08d48f9b1 7198130: G1: PrintReferenceGC output comes out of order
Move the first part of the GC logging, including timestamp, to the start of the GC

Reviewed-by: johnc, jwilhelm
2012-09-17 10:33:13 +02:00
Jon Masamitsu
5c58d27aac 6964458: Reimplement class meta-data storage to use native memory
Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes

Co-authored-by: Stefan Karlsson <stefan.karlsson@oracle.com>
Co-authored-by: Mikael Gerdin <mikael.gerdin@oracle.com>
Co-authored-by: Tom Rodriguez <tom.rodriguez@oracle.com>
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
2012-09-01 13:25:18 -04:00
John Cuthbertson
eb2c52c717 7041879: G1: introduce stress testing parameter to cause frequent evacuation failures
Add the flags G1EvacuationFailureALot flag (and supporting flags) to force trigger evacuation failures. The support flags control how often to trigger an evacuation failure and during which types of evacuation pause. This functionality is analogous to that of PromotionFailureALot for the other collectors.

Reviewed-by: brutisso
2012-08-28 15:20:08 -07:00
Bengt Rutisson
68bbfe24e7 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
Also reviewed by vitalyd@gmail.com. Introduced the WorkerDataArray class. Fixed some minor logging bugs.

Reviewed-by: johnc, mgerdin
2012-08-23 10:21:12 +02:00
John Cuthbertson
61493cd92e 7185699: G1: Prediction model discrepancies
Correct the result value of G1CollectedHeap::pending_card_num(). Change the code that calculates the GC efficiency of a non-young heap region to use historical data from mixed GCs and the actual number of live bytes when predicting how long it would take to collect the region. Changes were also reviewed by Thomas Schatzl.

Reviewed-by: azeemj, brutisso
2012-08-21 14:10:39 -07:00
Brandon Mitchell
3234f913bb 6818524: G1: use ergonomic resizing of PLABs
Employ PLABStats instances to record information about survivor and old PLABs, and use the recorded stats to adjust the sizes of survivor and old PLABS.

Reviewed-by: johnc, ysr
2012-08-06 12:20:14 -07:00
Antonios Printezis
a6580a7e63 7114678: G1: various small fixes, code cleanup, and refactoring
Various cleanups as a prelude to introducing iterators for HeapRegions.

Reviewed-by: johnc, brutisso
2012-07-19 15:15:54 -07:00
Zhengyu Gu
a39b17624a 6995781: Native Memory Tracking (Phase 1)
7151532: DCmd for hotspot native memory tracking

Implementation of native memory tracking phase 1, which tracks VM native memory usage, and related DCmd

Reviewed-by: acorn, coleenp, fparain
2012-06-28 17:03:16 -04:00
Bengt Rutisson
e294a9f5ec 7172388: G1: _total_full_collections should not be incremented for concurrent cycles
Reviewed-by: azeemj, jmasa
2012-06-05 22:30:24 +02:00
Antonios Printezis
01ea4199c7 7157073: G1: type change size_t -> uint for region counts / indexes
Change the type of fields / variables / etc. that represent region counts and indeces from size_t to uint.

Reviewed-by: iveresov, brutisso, jmasa, jwilhelm
2012-04-18 07:21:15 -04:00
Bengt Rutisson
f695b75d78 4988100: oop_verify_old_oop appears to be dead
Removed oop_verify_old_oop and allow_dirty. Also reviewed by: alexlamsl@gmail.com

Reviewed-by: jmasa, jwilhelm
2012-04-16 08:57:18 +02:00
Antonios Printezis
29afa9bf4b 7127697: G1: remove dead code after recent concurrent mark changes
Removed lots of dead code after some recent conc mark changes.

Reviewed-by: brutisso, johnc
2012-04-05 13:57:23 -04:00
Bengt Rutisson
a99b0c08d4 7130974: G1: Remove G1ParCopyHelper
Reviewed-by: tonyp, johnc
2012-03-16 09:52:57 +01:00
Antonios Printezis
be06406cb8 7132029: G1: mixed GC phase lasts for longer than it should
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
2012-02-15 13:06:53 -05:00
Antonios Printezis
6a31970946 7129892: G1: explicit marking cycle initiation might fail to initiate a marking cycle
If we try to schedule an initial-mark GC in order to explicit start a conc mark cycle and it gets pre-empted by antoher GC, we should retry the attempt as long as it's appropriate for the GC cause.

Reviewed-by: brutisso, johnc
2012-02-14 08:21:08 -05:00
John Cuthbertson
0fa6fc2279 6484965: G1: piggy-back liveness accounting phase on marking
Remove the separate counting phase of concurrent marking by tracking the amount of marked bytes and the cards spanned by marked objects in marking task/worker thread local data structures, which are updated as individual objects are marked.

Reviewed-by: brutisso, tonyp
2012-01-12 00:06:47 -08:00