we are using play-framework 2.6.17 version with scala version 2.11 for our service.
We notice the heap usage increases gradually over a period of time and from the analysis of heap dump, the number of RepointableActorRef instances were around 105K with retained heap size of over 200MB. This in turn cause the fullGC cycle to be triggered frequently.
GC root of these instances point to supervisor(StreamSupervisor-0) of akka.stream.impl.PhasedFusingActorMaterializer instance for AkkaHttpServer.
We looked at the associated ActorGraphInterpreter instances which has the ‘interpreterCompleted’ value has ‘true’ with no subcribersPending. From our code understanding, the RepointableActorRef should be removed from the childrenContainer once the interpreter execution is completed. So not sure, how these many
instances are held on to the childrenContainer.
On further analysis, the most of RunnableGraph’s were created as part of Accumulator.flatten operations.
Could anyone provide more information on how to debug further to figure out why these actorRefs are not cleared.