The problem is very simply, to avoid allocating so much that the processing time required to collect the garbage exceeds what time you've got left over from drawing. I can safely allocate aliens and particle emitters in my rendering loop without any trouble at all, and numerous other sundries.
I perform a full GC at opportune moments (level end), and with Jet, I already have a bounded collector.
Rather than specify the bounds using System.gc(int) it might be prudent to supply the value as a -X switch. It is, after all, only a suggestion to the garbage collector about how long it needs; if it needs more time, it'll have to use more time. In other words, I think it's a platform tuning question rather than a programmatic one. At this stage.