The WorkManager has a queue of scheduled jobs, when the throughput of incoming job is greater than the throughput of job that can be processed by the pool of workers, the memory footprint of this queue keeps growing and saturates the heap.
For instance this is the case for the fulltext workers.
For simple case it worth having an option to make the queue blocking.
In a cluster mode the best is to have a new worker manager using redis to persist and distributes jobs.