I believe there are some times where Strings in the string pool can be garbage collected -- one being when the string literals are in a class which was loaded by a classloader other than the system classloader, and that class becomes unreferenced. That also requires the classloader to become unreferenced as well, I believe. My description may be wrong in some details (I wouldn't be surprised at all) but I'm pretty sure that's a situation which isn't covered by the
OCAJP exam. In fact I suspect the OP's question is also one which wouldn't be asked on the OCAJP either, but somebody who knew more about the exam (of which there are many here) could clarify that.