Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1564)

Unified Diff: chrome/browser/metrics/metrics_memory_details.cc

Issue 2396743002: Leak reports collect information about the memory usage (Closed)
Patch Set: Fixed scope of 'if defined(OS_CHROMEOS)' Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/metrics/metrics_memory_details.cc
diff --git a/chrome/browser/metrics/metrics_memory_details.cc b/chrome/browser/metrics/metrics_memory_details.cc
index f8ccb556074e1419b88758d1fd1ffa04f65a2f80..46b9728c00a9715bf8d363107a6d57200c037283 100644
--- a/chrome/browser/metrics/metrics_memory_details.cc
+++ b/chrome/browser/metrics/metrics_memory_details.cc
@@ -56,17 +56,23 @@ bool MemoryGrowthTracker::UpdateSample(base::ProcessId pid,
}
MetricsMemoryDetails::MetricsMemoryDetails(
- const base::Closure& callback,
- MemoryGrowthTracker* memory_growth_tracker)
- : callback_(callback), memory_growth_tracker_(memory_growth_tracker) {
- memory_growth_tracker_ = memory_growth_tracker;
-}
+ const base::Closure& callback, MemoryGrowthTracker* memory_growth_tracker)
Alexei Svitkine (slow) 2016/10/12 21:46:12 Nit: I think convention is 1 param per line if fir
mwlodar 2016/10/12 22:45:39 Done.
+ : callback_(callback), memory_growth_tracker_(memory_growth_tracker),
+ generate_histograms_(true) {}
+
+MetricsMemoryDetails::MetricsMemoryDetails(
+ const base::Closure& callback, MemoryGrowthTracker* memory_growth_tracker,
+ bool generate_histograms)
+ : callback_(callback), memory_growth_tracker_(memory_growth_tracker),
+ generate_histograms_(generate_histograms) {}
Alexei Svitkine (slow) 2016/10/12 21:46:12 Hmm, instead of a separate constructor, why not ju
mwlodar 2016/10/12 22:45:39 Done.
MetricsMemoryDetails::~MetricsMemoryDetails() {
}
void MetricsMemoryDetails::OnDetailsAvailable() {
- UpdateHistograms();
+ if (generate_histograms_)
+ UpdateHistograms();
+ AnalyzeMemoryGrowth();
base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback_);
}
@@ -120,15 +126,6 @@ void MetricsMemoryDetails::UpdateHistograms() {
sample / 1024);
UMA_HISTOGRAM_MEMORY_LARGE_MB("Memory.Renderer.Committed",
committed / 1024);
- int diff;
- if (memory_growth_tracker_ &&
- memory_growth_tracker_->UpdateSample(
- browser.processes[index].pid, sample, &diff)) {
- if (diff < 0)
- UMA_HISTOGRAM_MEMORY_KB("Memory.RendererShrinkIn30Min", -diff);
- else
- UMA_HISTOGRAM_MEMORY_KB("Memory.RendererGrowthIn30Min", diff);
- }
renderer_count++;
continue;
}
@@ -311,3 +308,21 @@ void MetricsMemoryDetails::UpdateSwapHistograms() {
}
}
#endif // defined(OS_CHROMEOS)
+
+void MetricsMemoryDetails::AnalyzeMemoryGrowth() {
+ const ProcessData& browser = *ChromeBrowser();
+ for (size_t index = 0; index < browser.processes.size(); index++) {
Alexei Svitkine (slow) 2016/10/12 21:46:12 Nit: use a C++ for loop: for (const auto& process
mwlodar 2016/10/12 22:45:39 Done.
+ int sample = static_cast<int>(browser.processes[index].working_set.priv);
+
+ int diff;
+ if (memory_growth_tracker_ && memory_growth_tracker_->UpdateSample(
+ browser.processes[index].pid, sample, &diff)) {
+ if (generate_histograms_) {
Alexei Svitkine (slow) 2016/10/12 21:46:12 Nit: Merge this if with the one you have above.
mwlodar 2016/10/12 22:45:39 Done. This part is non-trivial though and I added
+ if (diff < 0)
+ UMA_HISTOGRAM_MEMORY_KB("Memory.RendererShrinkIn30Min", -diff);
+ else
+ UMA_HISTOGRAM_MEMORY_KB("Memory.RendererGrowthIn30Min", diff);
+ }
+ }
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698