I just found out: With Java 1.7+, all the Unsafe constants are exposed as public static final variables. So we dont need to directly access the unsafe instance object.
By that it would be possible to get the REFERENCE_SIZE without hotspot bean just by getting a static final int constant... The same applies fo the JVM bitness.
Would this be a valid use? In fact there can break nothing, it could just be that our code cannot see those constants, but thats not different from the HotspotBean. We are just reading a public static constant from Unsafe (via reflection).
We just did not use that in RAMUsageEstimator before, because in Java 6, those constants were not there! On the other hand, in Java 9, Unsafe is likely to disappear, so I think we should really work without Unsafe.