You are correct: any modern JVM will reclaim memory even in the presence of circular references (as long as it's not reachable from a live reference). This means that your doubly-linked list will indeed be garbage collected, as long as there are no live references to any of its nodes.
I'd suggest reading up on mark-and-sweep garbage collectors.
The basic idea is that the garbage collector starts with a bunch of "roots" (i.e. known live objects) and follows all reference chains to the end. Any objects that have not been reached during this process are considered eligible for garbage collection, since there's no way they can be accessed by the program.
Actual garbage collectors employed in modern JVMs are considerably more sophisticated than this, but this should give you the basic idea.
Your professor is probably thinking of reference counting. While some languages (for example, CPython) do use reference counting for garbage collection, this is rarely the only mechanism precisely because it can't deal with circular references. FWIW, I have never come across a JVM that would use reference counting for garbage collection.