"GC overhaed limit exceeded" mean that the balance between application time and GC time reach a limit.
For better answers you should post a bit of your environment (i.e. JVM settings, OS, Java version).
Also you might have a look to the JSTAT tool (see oracle Java pages, jstat is included in your java installation).
You can see whether the memory consumption of your app is growing continuosly or you are consuming the memory from the beginning and in case of more load you will have such OOME.