RFR: 8158045: Improve large object handling during evacuation

Kim Barrett kim.barrett at oracle.com
Mon Aug 31 08:35:11 UTC 2020

> On Aug 25, 2020, at 4:37 PM, Kim Barrett <kim.barrett at oracle.com> wrote:
> Changed handling of objArray, pushing all of the partial array tasks up
> front, rather than processing the current chunk after pushing a single task
> for the remaining work.  This addresses JDK-8158045.

I've realized there's a problem with this part of the change. Queuing up all
the partial tasks for an array at once is appealing from one POV, since it
makes the processing of each task simple; just (atomically) increment the
partial length pointer and process the chunck before that updated length.
But if the array is large, this can mean enqueuing a *lot* of tasks. With a
32M region size and the default 50 element chunk size, a max-sized
non-humongous objarray has 40K chunks. And for parallelism there's no point
in having more subtasks than the number of threads. So I think I need to
rework this a bit.

More information about the hotspot-gc-dev mailing list