The end product is a production test tool so strange spikes and such is of great interest.
OK. You're still not saying what you are doing with the stored data.
Since you will be writing it over on a regular basis, what are you going to do with the overwritten (past) data? Just discard it? Or send it somewhere through some link? That point may help finding an appropriate solution and figure out how much temporary memory you really need.
If you're interested in detecting specific events ("strange spikes") can you not implement some kind of internal triggering on such events, and only store a chunk of samples around them (as a scope would do)? That would also limit the memory size requirement.
As for Flash, as I suggested, using SD cards may be a workable solution (as long as write speeds are OK with your application). Cheap, if you use large ones, you can do decent wear leveling, and if they wear out, you can always replace them (even on a regular basis). Much easier than replacing a soldered chip. Added benefit is that the last samples will remain stored if your system crashes for any reason, whereas if you're using RAM only, they will just be lost.