Typically the default implementation of Object.hashCode() is some function of the allocated address of the object in memory (though this is not
Object.hashCode()
In answer to the second question, irrespective of the implementation, it is possible for multiple objects to have the same identityHashCode.
See bug 6321873 for a brief discussion on the wording in the javadoc, and a program to demonstrate non-uniqueness.