Charles previously stored all of the request and response information in memory, so if you had Charles running for a few hours (or browsed a lot of images) it would quite often run out of its 64 MB of heap and stop recording until you had emptied the session. I have Charles running all day every day and I’d have to clear the session several times a day: frustrating.
Furthermore, in an effort to reduce the memory usage, Charles would only record the first 100 KB (or so, this was configurable) of binary files such as images, videos and executables. This helped to not use up all the free memory so quickly, however it also meant that you’d sometimes miss the end of something you were interested in. For example, with the introduction of AMF parsing (a binary format) I had to extend the default 1 MB cut off for binary files to avoid truncating large AMF messages.
But wait! In version 2.6.2 both problems have been solved. Charles now saves large requests and responses to temporary files on the hard drive, and there is just one configurable recording limit (defaulting to 10 MB per request/response) to prevent excessive storage. Recording still uses memory, and you’ll see the memory indicator increase in Charles the more you record, however it should be significantly slower to fill up completely.