Not really an answer, but have you have thought of moving the actions inside the scheduled event into separate tasks executed through the Process Queue widget or by using the Follow-Up widget?
For example, we’ve got an application that, on a daily basis, retrieves for each client in the system all new dossiers to process. Instead of retrieving all data simultaneously in a single scheduled event, the application creates a queued item for each client that gets executed separately. This way the amount of memory used is reduced by a lot. It also allows for error handling, i.e. when one client fails for a specific reason, another could still continue.