Yes, reducing the frame range helped.
You can reduce the size of rendered percentage but this will affect distortions or node values that have explicit pixel sizes (blur for example).
This was the big thing! This got it working for me. I dropped in a Scale node (Relative) before the Composite node.
So I set my render resolution to 25% of the original 1080p and set the Scale node to match that (0.25).
Thanks for the reminder about the pixel-specific effects. I’ve made a habit of keeping things relative whenever possible, but just in case I’ve got the Viewer node still connected to the full-res image so I’ll know what it looks like at least when it’s paused and hopefully catch any discrepancies this way. Although as long as the Scale node is the last one before Composite I imagine it wouldn’t be an issue anyway. Still, good to be conscious of.
The main lesson I learned is that resolution plays a huge factor in caching ability. At 100% it would appear to be caching but actually it wasn’t. Or maybe it was, but would soon dump it once memory capacity was exceeded. A 25% reduction may not seem like much, but when you consider the difference in pixel count:
100%: 1920x1080 = 2073600 px
25%: 43.2x76.8 = 3318 px (rounded to nearest whole pixel)
…yeah, just over three thousand versus two million makes all the difference.
Once you know that resolution is where the problem lies, it’s an easy fix.
Closing all other apps and restarting my machine also probably helped free up memory.
Here is the screen shot that would have saved me a day trying to work this out. Maybe it will help someone else:
3pointEdit, thank you for all your suggestions on this! You really helped me get this sorted out.