[concurrency-interest] Is Reference.reachabilityFence() needed in Reference constructor?

Vitaly Davidovich vitalyd at gmail.com
Wed Oct 21 19:10:44 EDT 2015


>
> All fields hold strong references, not just static fields. It is only
> locals/stack-variables that don’t guarantee reachability.


I'm not sure that's a useful distinction.  Fields hold a strong reference
only if the enclosing class is reachable.  Likewise, stack/register
references are strong if they're deemed live by the runtime (interpreter or
compiler).  Static fields are nothing special other than belonging to a
ClassLoader (if the ClassLoader is unreachable, so are those static
fields).  It's turtles all the way down :).

On Wed, Oct 21, 2015 at 6:54 PM, David Holmes <davidcholmes at aapt.net.au>
wrote:

> All fields hold strong references, not just static fields. It is only
> locals/stack-variables that don’t guarantee reachability.
>
>
>
> David
>
>
>
> *From:* concurrency-interest-bounces at cs.oswego.edu [mailto:
> concurrency-interest-bounces at cs.oswego.edu] *On Behalf Of *Gregg Wonderly
> *Sent:* Thursday, October 22, 2015 8:10 AM
> *To:* Vitaly Davidovich
> *Cc:* thurstonn; concurrency-interest at cs.oswego.edu
> *Subject:* Re: [concurrency-interest] Is Reference.reachabilityFence()
> needed in Reference constructor?
>
>
>
>
>
> On Oct 21, 2015, at 4:44 PM, Vitaly Davidovich <vitalyd at gmail.com> wrote:
>
>
>
> But the referent arg is on the stack (since the constructor is)
> Aren't all variables on the stack strongly reachable?
>
>
>
> No.  The stacks are scanned and oopmaps are inspected to find live
> objects, which then serve as the root of a reachability graph, but mere
> presence of an object on the stack does not mean it's reachable for GC
> purposes.
>
>
>
> That seems highly problematic for WeakReference and company to be usable.
> How can any object using those APIs guarantee that the object itself is
> strongly reachable?  Doesn’t seem like they can.  Strong references can
> only ever be guaranteed by using a static reference, which makes for
> non-static environments to be really difficult to “develop” in.
>
>
>
> Gregg Wonderly
>
>
>
>
>
> On Wed, Oct 21, 2015 at 4:29 PM, thurstonn <thurston at nomagicsoftware.com>
> wrote:
>
> But the referent arg is on the stack (since the constructor is)
> Aren't all variables on the stack strongly reachable?
>
>
>
> --
> View this message in context:
> http://jsr166-concurrency.10961.n7.nabble.com/Is-Reference-reachabilityFence-needed-in-Reference-constructor-tp12819p12824.html
> Sent from the JSR166 Concurrency mailing list archive at Nabble.com
> <http://nabble.com>.
> _______________________________________________
> Concurrency-interest mailing list
> Concurrency-interest at cs.oswego.edu
> http://cs.oswego.edu/mailman/listinfo/concurrency-interest
>
>
>
> _______________________________________________
> Concurrency-interest mailing list
> Concurrency-interest at cs.oswego.edu
> http://cs.oswego.edu/mailman/listinfo/concurrency-interest
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cs.oswego.edu/pipermail/concurrency-interest/attachments/20151021/c556ad2a/attachment.html>


More information about the Concurrency-interest mailing list