Index: content/browser/browser_main_loop.cc |
diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc |
index b58a2cb2267779a56d004a1b0aa6ba3c07f5f733..e6febaf48abead330b306f8b47f76c1740899770 100644 |
--- a/content/browser/browser_main_loop.cc |
+++ b/content/browser/browser_main_loop.cc |
@@ -46,6 +46,7 @@ |
#include "net/socket/client_socket_factory.h" |
#include "net/socket/tcp_client_socket.h" |
#include "ui/base/clipboard/clipboard.h" |
+#include "webkit/glue/webkit_glue.h" |
#if defined(USE_AURA) |
#include "content/browser/renderer_host/image_transport_factory.h" |
@@ -222,6 +223,22 @@ void ImmediateShutdownAndExitProcess() { |
BrowserShutdownImpl::ImmediateShutdownAndExitProcess(); |
} |
+// For measuring memory usage after each task. Behind a command line flag. |
+class BrowserMainLoop::MemoryObserver : public MessageLoop::TaskObserver { |
+ public: |
+ MemoryObserver() {} |
jochen (gone - plz use gerrit)
2013/01/18 14:03:11
should have a virtual destructor
marja
2013/01/18 15:00:08
Done.
|
+ |
+ virtual void WillProcessTask(base::TimeTicks time_posted) OVERRIDE {} |
+ |
+ virtual void DidProcessTask(base::TimeTicks time_posted) OVERRIDE { |
+ LOG(WARNING) << "Adding to browserused " << webkit_glue::MemoryUsageKB(); |
jochen (gone - plz use gerrit)
2013/01/18 14:03:11
remove?
marja
2013/01/18 15:00:08
Oops.
|
+ HISTOGRAM_MEMORY_KB("Memory.BrowserUsed", webkit_glue::MemoryUsageKB()); |
+ } |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(MemoryObserver); |
+}; |
+ |
+ |
// static |
media::AudioManager* BrowserMainLoop::GetAudioManager() { |
return g_current_browser_main_loop->audio_manager_.get(); |
@@ -368,6 +385,11 @@ void BrowserMainLoop::MainMessageLoopStart() { |
switches::kMediaPlayerInRenderProcess))); |
DataFetcherImplAndroid::Init(base::android::AttachCurrentThread()); |
#endif |
+ |
+ if (parsed_command_line_.HasSwitch(switches::kMemoryMetrics)) { |
+ memory_observer_.reset(new MemoryObserver()); |
+ main_message_loop_->AddTaskObserver(memory_observer_.get()); |
+ } |
} |
void BrowserMainLoop::CreateThreads() { |