Increase in heap size in mostly caused by more and more live objects being not closed or collected by gabage collector.
I would suggest you check the running thread count for 1-2 hours in your AEM instance.
<server>/system/console/profiler.
Let it run for 1-2 hours, and it will give you a pretty clear idea on which threads are longest in runnable.
For the heap dump analysis, start with the heaps with the longest stack trace. It would most often point to something in the custom code. Once you fine the line of code responsible it should be pretty easy to fix it.