GC is always very difficult to analyze
What you might do is check the heap utilization from startup in intervalls, I use "jstat -gc ...." for this as it has a minimal footprint.
Check whether there is a constant increase of used memory.
Is the load different over the time? Do you run the same application and load on AS4?
The memory consumption is (young+survivor+old) aka heap, and additional PermGen, ThreadStack and JVM code. So it looks possible that threads or JVM consume memory.
Other problems might be the JVM version and OS patches (I've seen issues that a OS patch fix such, but at a non Linux OS).
You might start here and check the differences.
What if you remove the AggressiveHeap option?
The -XX:AggressiveHeap option is used by Oracle mainly to run various benchmarks. This option sets numerous other options to specific values, and those values are tuned to get the benchmarks to run optimally. In real life, this option rearely provides any benefit, I always recommend that people avoid it.
Also, be careful when looking at java process memory usage via the OS - there is a lot more to java process memory usage than just the heap! It sounds as if the app server is creating way to many threads and they are eating up the memory - try monitoring the thread count. (Note that the memory used for the heap will NEVER exceed the -Xmx value!)