DocumentLoader keeps a reference to all URL strings ever loaded in m_resourcesClientK...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 22 Jul 2011 20:17:44 +0000 (20:17 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 22 Jul 2011 20:17:44 +0000 (20:17 +0000)
commit15aef016c6b79e15e30f708e9ef64d9d06a1fea6
tree9c524f908ed17e91bf54432e50d8374e39819fc7
parentaca6ece8562c9214b3f08cde12391b669b7717d1
DocumentLoader keeps a reference to all URL strings ever loaded in m_resourcesClientKnowsAbout leading to lots of memory waste
https://bugs.webkit.org/show_bug.cgi?id=61894

Patch by Scott Graham <scottmg@chromium.org> on 2011-07-22
Reviewed by James Robinson.

DocumentLoader::m_resourcesClientKnowsAbout is a set of all the URLs
that have passed through FrameLoader::dispatchWillSendRequest() and is
used by FrameLoader::loadedResourceFromMemoryCached to decide whether
to inform the FrameLoader's m_client about this load.  Unfortunately,
this set holds a reference to the URL string for every resource
loaded, so on pages that use data URLs to "load" large amounts of data
this leaks lots of memory. The cache improves performance going through
FrameLoader::loadResourceFromMemoryCache, so rather than removing it,
simply exclude 'data:' urls from the cache to save the majority of
memory that is held for too long.

* loader/DocumentLoader.h:
(WebCore::DocumentLoader::didTellClientAboutLoad):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@91600 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebCore/ChangeLog
Source/WebCore/loader/DocumentLoader.h