If the compiler can prove that an object is final and immutable and is never used in any other context that requires reference semantics, it could potentially use that optimization.
But then you also need data structures that can be parameterized to store such value objects as values. Otherwise you're back to square one.
But then you also need data structures that can be parameterized to store such value objects as values. Otherwise you're back to square one.