Hi,
Decreasing the subdiv cache is a good idea because it frees up memory to be used for other things during rendering which might otherwise run out. I think the preallocation thing helps because it allocates the memory up front and can a) allocate big chunks of memory without fragmentation problems and b) possibly cause the render to fail earlier. That's not a great thing, obviously, but better than waiting for ages and then having it fail.
I'm not really that certain about TG2s memory allocation patterns during rendering, that's more Matt's area, but I hope to get more familiar with it very soon to help make things more robust before final release. It's possible that when memory use is starting to get high then memory allocation might fail even though it seems like there's a decent amount left because the memory is broken up ( fragmented ) and there is no one area large enough for the required allocation. This is even though it might seem like there's quite a bit left. It isn't a situation which is easy to get around. I've been doing some experiments with this lately.
I have found that the various thread render errors can be caused by running out of memory. We're going to be looking into this in the next little while to see if we can improve things.
Even though you have 4 GB of memory, on a 32 bit Windows OS ( including Vista AFAIK ) applications can only use up to 2 GB, unless you have the 3GB switch turned on. Most of the time when we're talking about lack of memory, the problem isn't really that you lack RAM in your machine, it's more that your scene currently requires more memory than the OS will let the application use.
Regards,
Jo