[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