I'm experiencing something weird with Hotspot's GC in a certain program. Sometimes, it seems almost as if the scavenge GC just dies, leaving only the mark-sweep GC running instead every time the Eden space fills up. Needless to say, this is horrible for performance. I haven't managed to figure out the conditions for this issue to occur.
Looking at a JVM with this behavior right now, the old-gen is 170 MB (used and max) and never grows or shrinks over a collection, the Eden gen is 85 MB, the Survivor spaces are never used whatsoever (which I guess is consistent with the scavenge GC not running), and the total allocated heap size is 256 MB (matching, obviously, Old+Eden).
Any clues as to what might cause this?