[webkit-dev] Query regarding MemoryCache.cpp evict function

Abhishek Sikdar abhid2sik at gmail.com
Thu Feb 9 03:23:44 PST 2012


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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20120209/bcfd7e1f/attachment.html>


More information about the webkit-dev mailing list