Going by the spec, there is no relationship between hashcode and memory location. However a memory address of an object could be a good (if not better) value for a hashcode.
The general contract of hashCode is:
Whenever it is invoked on the same object more than once during an
execution of a Java application, the hashCode method must consistently
return the same integer, provided no information used in equals
comparisons on the object is modified. This integer need not remain
consistent from one execution of an application to another execution
of the same application. If two objects are equal according to the
equals(Object) method, then calling the hashCode method on each of the
two objects must produce the same integer result. It is not required
that if two objects are unequal according to the
equals(java.lang.Object) method, then calling the hashCode method on
each of the two objects must produce distinct integer results.
However, the programmer should be aware that producing distinct
integer results for unequal objects may improve the performance of
hashtables.
Source