| Index: content/browser/browser_main_runner.cc
|
| diff --git a/content/browser/browser_main_runner.cc b/content/browser/browser_main_runner.cc
|
| index 96a3454f1499edbb0211afbcdb1ba8024cb6e2bc..1ec4fd7ecc6e0ccd4cdb60193632040869cb76b1 100644
|
| --- a/content/browser/browser_main_runner.cc
|
| +++ b/content/browser/browser_main_runner.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/macros.h"
|
| #include "base/metrics/histogram.h"
|
| #include "base/metrics/histogram_macros.h"
|
| +#include "base/metrics/persistent_histogram_allocator.h"
|
| #include "base/metrics/statistics_recorder.h"
|
| #include "base/profiler/scoped_profile.h"
|
| #include "base/profiler/scoped_tracker.h"
|
| @@ -60,6 +61,15 @@ class BrowserMainRunnerImpl : public BrowserMainRunner {
|
| }
|
|
|
| int Initialize(const MainFunctionParams& parameters) override {
|
| + // Create persistent/shared memory and allow histograms to be stored in it.
|
| + // Memory that is not actualy used won't be physically mapped by the system.
|
| + // BrowserMetrics usage peaked around 1.9MiB as of 2016-02-20.
|
| + base::GlobalHistogramAllocator::CreateWithLocalMemory(
|
| + 3 << 20, // 3 MiB
|
| + 0x935DDD43, // SHA1(BrowserMetrics)
|
| + "BrowserMetrics");
|
| + base::GlobalHistogramAllocator::Disable(); // Enabled by experiment only.
|
| +
|
| SCOPED_UMA_HISTOGRAM_LONG_TIMER(
|
| "Startup.BrowserMainRunnerImplInitializeLongTime");
|
|
|
| @@ -224,6 +234,14 @@ class BrowserMainRunnerImpl : public BrowserMainRunner {
|
|
|
| notification_service_.reset(NULL);
|
|
|
| + // Dump all the persistent metrics to a file for upload during the next
|
| + // run of the browser. Get() will return null if the allocator is not
|
| + // enabled and so skip writing the data.
|
| + base::GlobalHistogramAllocator* allocator =
|
| + base::GlobalHistogramAllocator::Get();
|
| + if (allocator)
|
| + allocator->WriteToPersistentLocation();
|
| +
|
| is_shutdown_ = true;
|
| }
|
| }
|
|
|