RFR: 8314480: Memory ordering spec updates in java.lang.ref [v10]
Alan Bateman
alanb at openjdk.org
Wed May 8 08:37:59 UTC 2024
On Fri, 23 Feb 2024 06:06:21 GMT, Brent Christian <bchristi at openjdk.org> wrote:
>> Classes in the `java.lang.ref` package would benefit from an update to bring the spec in line with how the VM already behaves. The changes would focus on _happens-before_ edges at some key points during reference processing.
>>
>> A couple key things we want to be able to say are:
>> - `Reference.reachabilityFence(x)` _happens-before_ reference processing occurs for 'x'.
>> - `Cleaner.register()` _happens-before_ the Cleaner thread runs the registered cleaning action.
>>
>> This will bring Cleaner in line (or close) with the memory visibility guarantees made for finalizers in [JLS 17.4.5](https://docs.oracle.com/javase/specs/jls/se18/html/jls-17.html#jls-17.4.5):
>> _"There is a happens-before edge from the end of a constructor of an object to the start of a finalizer (§12.6) for that object."_
>
> Brent Christian has updated the pull request incrementally with one additional commit since the last revision:
>
> VM -> virtual machine; also fix misspelling
src/java.base/share/classes/java/lang/ref/Cleaner.java line 218:
> 216: * cautions about the behavior of cleaning actions.
> 217: *
> 218: * <p>The object being registered is kept strongly reachable (and therefore not eligible
I would be tempted to drop "being registered" from this sentence. The previous paragraph and the parameter descriptions use "the object". That would make it "The given object is kept strongly reachable ..." which I think is a bit easier to read.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16644#discussion_r1500757065
More information about the core-libs-dev
mailing list