RFR: 8309599: WeakHandle and OopHandle release should clear obj pointer
Roman Kennke
rkennke at openjdk.org
Fri Sep 29 11:34:00 UTC 2023
On Fri, 29 Sep 2023 02:56:07 GMT, David Holmes <dholmes at openjdk.org> wrote:
> > > Hmmm okay - it seems fragile to have a psuedo-destructor in release().
> >
> >
> > I don't know what this comment means.
>
> Object lifetimes should be well managed such that you can't use an object after it has been "destroyed". Methods like `release()` effectively nuke the internals of the object but the object is still available to be (mis)used. Before this fix `release` left a dangling `_obj` pointer, but that wouldn't be an issue if the handle itself could not be used after being released.
In WeakHandle, it is ok, and in-fact expected, that the wrapped object is null when it is unreachable. This is the reason for the existence of WeakHandle. The contract has always been enforced by the GC Access API. This change additionally clear the field when the object becomes unreachable.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/15920#issuecomment-1740741841
More information about the serviceability-dev
mailing list