This is working as expected. More concurrent tasks means more memory are used, and since tasks are slower in debug, the issue is exacerbated when running in this mode. However, memory is eventually freed.
Here are some potential changes that a developer could make to alleviate the problem:
Run the workflow synchronously. There is not a noticeable performance hit than the async workflow and it caps memory usage.
Put a limit on the number of async tasks being run concurrently. For example, only allow 10 or 20 async tasks to be run concurrently. This could be customized to the app developer's liking to keep memory usage in check.