[webkit-dev] Query regarding MemoryCache.cpp evict function
Evan Martin
evan at chromium.org
Thu Feb 9 08:16:30 PST 2012
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 <abhid2sik at gmail.com> 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
> webkit-dev at lists.webkit.org
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
>
More information about the webkit-dev
mailing list