{"thread":{"id":"16413","subject":"Media repositories and memory usage","startedAt":"2008-11-20T16:19:35Z","lastAt":"2008-11-20T16:19:35Z","messageCount":1,"participants":["Nguyen Thai Ngoc Duy"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"96270","messageId":"fcaeb9bf0811200819v721a8d83s2890d8e19a3e4e4e@mail.gmail.com","threadId":"16413","inReplyTo":null,"subject":"Media repositories and memory usage","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2008-11-20T16:19:35Z","receivedAt":"2008-11-20T16:19:35Z","isPatch":false,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"Hi,\n\nThere is another aspect I did not see Tim mention in his slides:\nmemory usage with large blobs. Git has tradition of loading the whole\nblob in memory for easy manipulation. It could consume a lot of memory\nin large blob case (and particularly worse in mingw port because it\ndoes not support mmap).\n\nI see these operations that need access to blobs:\n 1. checkout blobs\n 2. checkin blobs\n 3. diff/delta blobs\n\nDiffing blobs should be avoided any way for large blobs. Checking in\nblobs does not require lots of memory. I'm working on checkout case to\nreduce memory footprint. Is there any other case that will need full\nblob in memory?\n\nPS. For checkout/checkin case, if you do any conversion, full blob in\nmemory is still needed. But I guess that is rare for large blobs.\n-- \nDuy\n"}]}