This stack overflow thread discusses, with man page citations, why code that frees memory may not necessarily lower a process's RSS.
http://stackoverflow.com/questions/7522284/insanity-is-free On Thu, Feb 9, 2012 at 3:23 AM, Abhishek Sikdar <[email protected]> wrote: > > I am currently working on a local JS based web application running on the > Webkit engine. To save some memory I forcibly called the evict function in > MemoryCache.cpp and called that from an API and used it to remove the local > WebUI files (Images, CSS and JS) just when the page finished loading. > > On enabling dumpStats in MemoryCache.cpp and calling it from the evict > function, I saw that I saved near about 5MB of space. However, this did not > reflect in the rss data of the current process (cat proc/xxx/rss). > > Before I wrote any code, > RSS data showed about 57MB for Google which decreased to 54-55MB. > > dumpStats data after the final evict call - > > Count Size LiveSize > DecodedSize PurgeableSize PurgedSize > ------------- ------------- ------------- ------------- > ------------- ------------- > ------------- > Images 151 6370440 6370440 5284580 > 0 0 > CSS 30 365111 365111 > 0 0 0 > JavaScript 79 2369820 2369820 208120 > 0 0 > Fonts 0 0 0 > 0 0 0 > ------------- ------------- ------------- ------------- > ------------- ------------- > ------------- > > > > > > After I entered my code, > RSS data consistently showed 57-58MB for Google. > > dumpStats data after final evict call - > > Count Size LiveSize > DecodedSize PurgeableSize PurgedSize > ------------- ------------- ------------- > ------------- ------------- ------------- > ------------- > Images 9 2960290 2960290 > 2883668 0 0 > CSS 0 0 0 > 0 0 0 > JavaScript 3 469114 469114 > 97192 0 0 > Fonts 0 0 0 > 0 0 0 > ------------- ------------- ------------- > ------------- ------------- ------------- > ------------- > > Why is there such a discrepancy between the dumpStats and RSS logs? > Why are the dumpStats results not getting reflected in the rss? > > Is there something I am missing? > > Code --- > > void MemoryCache::call_evict() > { > int size = memoryCache()->GetCacheResources().size(); > for (int i = 0; i < size; i++) { > CachedResource* current = memoryCache()->GetCacheResources()[i].m_tail; > while(current){ > CachedResource* prev = current->m_prevInAllResourcesList; > printf("\nD2************Inside call_evict i: %d size:%d \n", i, size); > if(!strncmp("file://",current->url().string().latin1().data(), 7)) > { > printf("\nD2************* delete Evict called upon URL: %s\n", > current->url().string().latin1().data()); > memoryCache()->evict(current); > } > current = prev; > } > } > > } > > Thanks for the help in advance. > > > _______________________________________________ > webkit-dev mailing list > [email protected] > http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev > _______________________________________________ webkit-dev mailing list [email protected] http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

