As per the command line options provided, this process will be running with Parallel GC which is the default option.
Due to which, Full GC takes place whenever Heap got filled up. But the Full GC was taking more than 100 seconds.
As the Full GC is 'stop the world', during this interval Application will be paused which will have cascading effect,
that is there will be lot of pending jobs which may make the heap memory filled up soon.
May be if you configure it with CMS & Incremental, GC will take place parallel to Application Process and during every
minor GC events your Tenured Generation will get cleaned and you may not reach Heap Full.