I would approach this slightly differently - it isn't so much you want to know which objects are being collected, but which objects are taking up the heap (but have been collected after the next GC).
There are a number of tools that allow you inspect the objects and classes the come from in the heap, VisualVM as mentioned by Alex Suo above, JProfiler (which is nice but a paid for application), YourKit (the same) or jmap. Using any of these I would record heap state at regular intervals that you can cross-reference with your verbose garbage-collection logs.
Depending on your application, you can also make considerable progress using your verbose garbage-collection logs in conjunction with your application's activity logs (what activities cause noticeable jumps in the heap, particularly where there is some similar decrease when a GC occurs later). Even if you use the tools above, your activity logs may be crucial in identifying where the memory usage is coming from.