RFR: 8145908: [Newtest] Multi-threading stress test for G1 Remembered Sets

Thomas Schatzl thomas.schatzl at oracle.com
Tue Feb 23 11:41:30 UTC 2016


Hi Dima,

  sorry for the wrong delay...

On Tue, 2016-02-02 at 22:11 +0300, Dmitry Fazunenko wrote:
> Hello everyone,
> 
> Would you look at a new stress for G1 Remembered Sets, please.
> 
> http://cr.openjdk.java.net/~dfazunen/8145908/webrev.02/
> https://bugs.openjdk.java.net/browse/JDK-8145908
> 
> The test allocates objects in several G1 heap regions and then
> creates 
> and removes references to them from other regions in multiple
> threads,
> causing Remembered Set to be updated.
> The test doesn't make any assumptions about VM behavior, it just
> expects 
> that VM will not crash.

- 38  * @summary Stress G1 Remembered Set by in multiple threads

-> Stress G1 Remembered Set using multiple threads

- do stress tests need a @bugid line?

-  85     // The lenght of a buffer element.

 lenght -> length

- is it possible to not shorten "regions" to "regs"? (BUFFER_OLD_REGS, ...YOUNG_REGS) I think the code would be easier to read if they were not shortened (consistently, because sometimes it is written out). It does not save that much, also, "regs" always reminds of "registers" :)

-  145      * of living thread under limit.

I think the term is "live threads". Or "active".

- 192                     // need a trash in the OldGen to provoke Mixed GC

"need to generate garbage in the old gen to provoke mixed GC"

-   95     // Frame of STORAGE - a subset of STORAGE, objects which will be
  96     // refered. First element has got the index: 'frameStart', the last
  97     // one 'frameStart + frameSize - 1'

Maybe this is better:

"Window within STORAGE that selects the objects references are created to. First element..."

- 266      * The thread for periodical shifting of the current STORAGE frame and
 267      * cleaning BUFFER from references to the objects outside of the new current
 268      * frame.

Periodically shifts the current STORAGE window, removing references in BUFFER that refer to objects outside the window.

I am not completely sure what the purpose of this actually is in practice: it does not seem to create references from dead objects (so that they need to be removed from the remembered sets), the worker threads recycling of buffers already does that (i.e. when the buffer is replaced).

Thanks,
  Thomas





More information about the hotspot-gc-dev mailing list