RFR (S) 8150465: Unsafe methods to produce uninitialized arrays

Paul Sandoz paul.sandoz at oracle.com
Thu Feb 25 15:47:11 UTC 2016


> On 25 Feb 2016, at 15:36, Aleksey Shipilev <aleksey.shipilev at oracle.com> wrote:
> 
> On 02/25/2016 05:13 PM, Andrew Haley wrote:
>> On 02/25/2016 01:44 PM, Aleksey Shipilev wrote:
>>> Of course, you will still see garbage data if after storing the array
>>> elements into the uninitialized array you would publish it racily. But
>>> the same is true for the "regular" allocations and subsequent writes.
>>> The only difference is whether you see "real" garbage, or some
>>> "synthetic" garbage like zeros. It is, of course, a caller
>>> responsibility to publish array safely in both cases, if garbage is
>>> unwanted.
>> 
>> Of course, my worry with this optimization assumes that programmers
>> make mistakes.  But you did say "complicated processing is done after
>> the allocation."  And that's where programmers make mistakes.
> 
> Of course they do; at least half of the Unsafe methods is suitable for
> shooting oneself in a foot in creative ways. Unsafe is a sharp tool, and
> Unsafe callers are trusted in their madness. This is not your average
> Joe's use case, for sure.
> 

FTR the contents of the memory allocated by Unsafe.allocateMemory are also uninitialized.

Paul.


More information about the jdk9-dev mailing list