Well, I’m tentatively going to say that I think I’ve fixed the problem of the site crashing.
The boring technical details (for anyone else who has a servlet based website and is seeing out of memory errors) seem to be that the java inflater was not releasing memory promptly enough. (See here, and the official Sun Java bug report here.)
Anyway, once I’d figured out the possible cause, and after I’d changed the site so that it no longer needs the inflater classes, it hasn’t crashed since. In fact, the site was up for a whole 10 days between 23rd August and 1st September (when I restarted it to include another 3,000 tunes in the tune search).
The nature of this kind of problem means that I can’t absolutely guarantee it’s fixed … but so far, so good.