The stack collector base class keeps all frames until export() is
called, which causes significant unnecessary memory usage. Instead, we
can process the frames on the fly in the collect call by dispatching the
aggregation logic to the subclass through the process_frames method.
Co-authored-by: Pablo Galindo Salgado <pablogsal@gmail.com>