2MB is generally enough.
Here's what happens (in general):
The printer takes data in several formats, typically intermixed: text,
fonts, vector graphics, and bitmapped graphics. This all has to get stored
in memory before the print mechanism starts to work.
The printer then translates all of that into a bitmapped image of the page,
at the desired print resolution. Some printers have the option of rendering
on the fly, or rendering the entire page into memory before the print
mechanism starts. The reason for the options is that once the print
mechanism starts to move, it goes at a constant speed: if the rendering
engine cannot keep up, the print fails. This depends upon how complicated
the page is (vector graphics are a killer here). If that happens, then you
have to render the entire page first. That guarantees a successful print,
but it takes more memory. If your memory is already full of bitmapped
graphics and fonts, then you might run out of memory.
So if you get memory overflow, you need more memory (or might get by with
on-the-fly rendering); if you get a print mechanism underrun, then you need
to render to memory first (HP calls this "page protect").