[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