One interesting thing I learned recently: APM tracing can lead to huge piles of temporary memory allocations. That memory can't be reclaimed until the request/job is complete.
You may use Scout, Datadog, or New Relic to find bloat in your Ruby app but they can also be the cause of memory bloat, especially in long-running jobs. Enable periodic flushing or partial traces to minimize that bloat.
https://github.com/sidekiq/sidekiq/wiki/Problems-and-Troubleshooting#apm-tracing