[concurrency-interest] Array allocation and access on the JVM

Doug Lea dl at cs.oswego.edu
Fri Jan 27 12:12:47 EST 2012

On 01/27/12 11:44, Ismael Juma wrote:
> On Fri, Jan 27, 2012 at 4:29 PM, Nathan Reynolds <nathan.reynolds at oracle.com
> <mailto:nathan.reynolds at oracle.com>> wrote:
>     Making the card table concurrent for these workloads would slow them down.
> Are there measurements for the slowdown experienced in these cases?

I see a 0-4% slowdown (depending on exact processor/platform)
in non-concurrent programs on multisocket (multiprocesssor)
machines when -XX:+UseCondCardMark is used.

But I routinely see complete failure to speed up (so, a slowdown as
large as the number of processors you have) in parallel programs
when -XX:+UseCondCardMark is not used.

The obvious heuristic is to turn it on by default if on
a multisocket machine. But Oracle moves exceedingly slowly
in deciding to do such things, so for the foreseable future,
just tell everyone you know to set it.

While I'm at it: -XX:+UseCondCardMark is basically a bandaid
until GC folks find a way to efficiently support per-thread
card tables or other alternatives that don't have intrinsic
false-sharing problems.


More information about the Concurrency-interest mailing list