[PATCH] Reduce Chance Of Mistakenly Early Backing Memory Cleanup

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Tue Feb 6 19:23:48 UTC 2018

> Objects.requireNonNull() shows zero overhead here.
> I guess the main question is whether Objects.requireNonNull(this) 
> behavior in the former test is a result of chance and current Hotspot 
> behavior or is it somehow guaranteed by the spec.

I haven't looked into what actually happens in JIT-compilers on your 
benchmark, but I'm surprised it works at all.

Explicit null check on the receiver is an easy target for elimination 
and should be effectively a no-op in generated code. (And that's what 
you observe with the benchmark!) Once the check is gone, nothing keeps 
receiver alive anymore (past the last usage).

So, I'd say such behavior it's a matter of chance in your case and can't 
be relied on in general. And definitely not something guaranteed by JVMS.

Best regards,
Vladimir Ivanov

More information about the core-libs-dev mailing list