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

Side by Side Diff: chrome/browser/memory_details.h

Issue 159777: Add about:memory support for Linux.... (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 11 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_MEMORY_DETAILS_H_ 5 #ifndef CHROME_BROWSER_MEMORY_DETAILS_H_
6 #define CHROME_BROWSER_MEMORY_DETAILS_H_ 6 #define CHROME_BROWSER_MEMORY_DETAILS_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/process_util.h" 10 #include "base/process_util.h"
11 #include "base/ref_counted.h" 11 #include "base/ref_counted.h"
12 #include "chrome/common/child_process_info.h" 12 #include "chrome/common/child_process_info.h"
13 13
14 class MessageLoop; 14 class MessageLoop;
15 15
16 // We collect data about each browser process. A browser may 16 // We collect data about each browser process. A browser may
17 // have multiple processes (of course!). Even IE has multiple 17 // have multiple processes (of course!). Even IE has multiple
18 // processes these days. 18 // processes these days.
19 struct ProcessMemoryInformation { 19 struct ProcessMemoryInformation {
20 ProcessMemoryInformation() { 20 ProcessMemoryInformation() : pid(0),
21 memset(this, 0, sizeof(ProcessMemoryInformation)); 21 num_processes(0),
22 is_diagnostics(false) {
22 } 23 }
23 24
24 // The process id. 25 // The process id.
25 int pid; 26 int pid;
26 // The working set information. 27 // The working set information.
27 base::WorkingSetKBytes working_set; 28 base::WorkingSetKBytes working_set;
28 // The committed bytes. 29 // The committed bytes.
29 base::CommittedKBytes committed; 30 base::CommittedKBytes committed;
30 // The process version 31 // The process version
31 std::wstring version; 32 std::wstring version;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 // } 65 // }
65 // 66 //
66 // // Your class stuff here 67 // // Your class stuff here
67 // 68 //
68 // virtual void OnDetailsAvailable() { 69 // virtual void OnDetailsAvailable() {
69 // // do work with memory info here 70 // // do work with memory info here
70 // } 71 // }
71 // } 72 // }
72 class MemoryDetails : public base::RefCountedThreadSafe<MemoryDetails> { 73 class MemoryDetails : public base::RefCountedThreadSafe<MemoryDetails> {
73 public: 74 public:
74 // Known browsers which we collect details for.
75 enum {
76 CHROME_BROWSER = 0,
77 IE_BROWSER,
78 FIREFOX_BROWSER,
79 OPERA_BROWSER,
80 SAFARI_BROWSER,
81 IE_64BIT_BROWSER,
82 KONQUEROR_BROWSER,
83 MAX_BROWSERS
84 } BrowserProcess;
85
86 // Constructor. 75 // Constructor.
87 MemoryDetails(); 76 MemoryDetails();
88 virtual ~MemoryDetails() {} 77 virtual ~MemoryDetails() {}
89 78
90 // Access to the process detail information. This is an array 79 // Access to the process detail information. This is an array
91 // of MAX_BROWSER ProcessData structures. This data is only available 80 // of MAX_BROWSER ProcessData structures. This data is only available
92 // after OnDetailsAvailable() has been called. 81 // after OnDetailsAvailable() has been called.
93 ProcessData* processes() { return process_data_; } 82 const std::vector<ProcessData>& processes() { return process_data_; }
94 83
95 // Initiate updating the current memory details. These are fetched 84 // Initiate updating the current memory details. These are fetched
96 // asynchronously because data must be collected from multiple threads. 85 // asynchronously because data must be collected from multiple threads.
97 // OnDetailsAvailable will be called when this process is complete. 86 // OnDetailsAvailable will be called when this process is complete.
98 void StartFetch(); 87 void StartFetch();
99 88
100 virtual void OnDetailsAvailable() {} 89 virtual void OnDetailsAvailable() {}
101 90
102 private: 91 private:
103 // Collect child process information on the IO thread. This is needed because 92 // Collect child process information on the IO thread. This is needed because
(...skipping 12 matching lines...) Expand all
116 void CollectProcessData(std::vector<ProcessMemoryInformation>); 105 void CollectProcessData(std::vector<ProcessMemoryInformation>);
117 106
118 // Collect child process information on the UI thread. Information about 107 // Collect child process information on the UI thread. Information about
119 // renderer processes is only available there. 108 // renderer processes is only available there.
120 void CollectChildInfoOnUIThread(); 109 void CollectChildInfoOnUIThread();
121 110
122 // Each time we take a memory sample, we do a little work to update 111 // Each time we take a memory sample, we do a little work to update
123 // the global histograms for tracking memory usage. 112 // the global histograms for tracking memory usage.
124 void UpdateHistograms(); 113 void UpdateHistograms();
125 114
126 ProcessData process_data_[MAX_BROWSERS]; 115 // Returns a pointer to the ProcessData structure for Chrome.
116 ProcessData* ChromeBrowser();
117
118 std::vector<ProcessData> process_data_;
127 MessageLoop* ui_loop_; 119 MessageLoop* ui_loop_;
128 120
129 DISALLOW_EVIL_CONSTRUCTORS(MemoryDetails); 121 DISALLOW_EVIL_CONSTRUCTORS(MemoryDetails);
130 }; 122 };
131 123
132 #endif // CHROME_BROWSER_MEMORY_DETAILS_H_ 124 #endif // CHROME_BROWSER_MEMORY_DETAILS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698