This is entirely up to JVM implementation, so you'd have to consult the docs for a particular JVM.
Cyclical references would be a problem if GC's used reference counting as their algorithm to identify unused object. However, I don't think any do - reference counting has big performance issues, as well as the possibility of deadlock you've noticed.
Sun has docs - have a hunt around their site. I don't know of any books - this is quite an advanced topic though. I can't imagine many programmers will need this sort of info for their day-to-day activities, so I don't know how well covered by third party books it will be.