A few thoughts:
Having the GC statistics options (such as verbose:gc) on is good if you plan to collect and analyze the statistics. But you should not have them on during production (or even to evaluate the actual performance of your app).
Be aware that UseConcMarkSweepGC is good if you want to guarantee consistent response times. However, it dramatically reduces your throughput. I suggest running both with and without it to see what works best. Considering the heap size you set I don't think you want to suffer through a full garbage, so perhaps having UseConcMarkSweepGC set is best.
The AggressiveOpts option resets a whole set of options (not sure if it resets UseConcMarkSweepGC, I could look at the code but I'm being lazy right now). I recommend testing with and without it, and if you must set it, set it first.
Finally, since every app is different and has different requirements. And each app tends to run on very different hardware, you must spend some time to drive the system, analyze the performance results (including the GC statistics), tweak the settings, and then repeat until you have acceptable performance. I have gone though this cycle for multiple customers, and it takes a significant investment in time and resources. That, of course, is something that cannot be done in a free forum, hence a good reason to buy support.