since we are not sure what the copy reference is doing the Point object cannot be garbage collected
No, what Barry said was, since we are not sure what Rectangle is doing with it,
we don't know whether it can be collected or not.
Rectangle(Point pt,int x,int y){
pt = null; // The copy reference is set to null
}
Rectangle doesn't necessarily have to set it to null, it could just access the members, save them, and then just not save a reference anywhere to the Point object. Then it would still be eligible to be collected.