Integrated: 8349107: Remove RMI finalizers

Brent Christian bchristi at openjdk.org
Tue Feb 4 22:40:19 UTC 2025


On Sat, 1 Feb 2025 00:11:31 GMT, Brent Christian <bchristi at openjdk.org> wrote:

> 3 finalizers in RMI code can be removed, as they do not perform meaningful cleanup.
> 
> **`jdk.naming.rmi/share/classes/com/sun/jndi/rmi/registry/RegistryContext`**
> 
> `RegistryContext.finalize()` just calls `close()`. The `close()` method does not perform any cleanup per se, but rather "helps the garbage collector" by setting `environment` and `registry` to `null`.
> 
> 
> **`jdk.naming.rmi/share/classes/com/sun/jndi/rmi/registry/RegistryContext.BindingEnumeration`**
> 
> `BindingEnumeration.finalize()` simply calls `close()` on the `ctx` field, itself a `RegistryContext` (and `close()` just "helps the GC.")
> 
> 
> **`src/java.rmi/share/classes/sun/rmi/log/LogInputStream`**
> 
> `LogInputStream` tracks its length with an int field, `length`. If `length` ever becomes == 0, `LogInputStream`'s methods will return without doing anything.
> 
> The finalizer calls `close()`, which just sets length = 0.
> 
> By the time a `LogInputStream` becomes unreachable and is finalized, it's a moot point whether length == 0, as no more methods can be called.
> If anything, this finalizer could cause a bug. If a `LogInputStream` were to became unreachable while a method were still running, the finalizer could set the length to 0 while method code is still running and expecting a length != 0.
> It's possible that there is a very long standing bug that `close()` should be calling `in.close()`, in which case this evaluation will need to be revisited.

This pull request has now been integrated.

Changeset: d222c186
Author:    Brent Christian <bchristi at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/d222c186a6c5a282e9ef143fac3568351ad7b9d7
Stats:     20 lines in 2 files changed: 0 ins; 19 del; 1 mod

8349107: Remove RMI finalizers

Reviewed-by: rriggs, vklang, djelinski, smarks

-------------

PR: https://git.openjdk.org/jdk/pull/23406


More information about the core-libs-dev mailing list