Mercurial > hg > config
annotate chrome/memory.js @ 208:3f290bcae11a
wtf
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Mon, 13 Feb 2012 16:24:06 -0800 |
parents | beca399c3a16 |
children |
rev | line source |
---|---|
206
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
1 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
2 var gChildProcess = true; |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
3 var gMemCallback = null; |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
4 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
5 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
6 /* |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
7 * Initialize memory collector. Determine if we have a child process. |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
8 */ |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
9 function initializeMemoryCollector(callback, args) { |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
10 gMemCallback = function() { return callback(args); }; |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
11 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
12 var os = Components.classes["@mozilla.org/observer-service;1"]. |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
13 getService(Components.interfaces.nsIObserverService); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
14 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
15 os.addObserver(function () { |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
16 var os = Components.classes["@mozilla.org/observer-service;1"]. |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
17 getService(Components.interfaces.nsIObserverService); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
18 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
19 memTimer.cancel(); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
20 memTimer = null; |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
21 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
22 os.removeObserver(arguments.callee, "child-memory-reporter-update", false); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
23 os.addObserver(collectAndReport, "child-memory-reporter-update", false); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
24 gMemCallback(); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
25 }, "child-memory-reporter-update", false); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
26 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
27 /* |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
28 * Assume we have a child process, but if timer fires before we call the observer |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
29 * we will assume there is no child process. |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
30 */ |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
31 var event = { |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
32 notify: function(timer) { |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
33 memTimer = null; |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
34 gChildProcess = false; |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
35 gMemCallback(); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
36 } |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
37 } |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
38 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
39 memTimer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
40 memTimer.initWithCallback(event, 10000, Components.interfaces.nsITimer.TYPE_ONE_SHOT); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
41 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
42 os.notifyObservers(null, "child-memory-reporter-request", null); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
43 } |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
44 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
45 /* |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
46 * Collect memory from all processes and callback when done collecting. |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
47 */ |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
48 function collectMemory(callback, args) { |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
49 gMemCallback = function() { return callback(args); }; |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
50 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
51 if (gChildProcess) { |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
52 var os = Components.classes["@mozilla.org/observer-service;1"]. |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
53 getService(Components.interfaces.nsIObserverService); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
54 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
55 os.notifyObservers(null, "child-memory-reporter-request", null); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
56 } else { |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
57 collectAndReport(null, null, null); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
58 } |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
59 } |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
60 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
61 function collectAndReport(aSubject, aTopic, aData) { |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
62 dumpLine(collectRSS()); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
63 gMemCallback(); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
64 } |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
65 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
66 function collectRSS() { |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
67 var mgr = Components.classes["@mozilla.org/memory-reporter-manager;1"]. |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
68 getService(Components.interfaces.nsIMemoryReporterManager); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
69 var e = mgr.enumerateReporters(); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
70 text = ""; |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
71 while (e.hasMoreElements()) { |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
72 var reporter = e.getNext().QueryInterface(Components.interfaces.nsIMemoryReporter); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
73 if (reporter.path == 'resident') { |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
74 procName = reporter.process; |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
75 if (procName == '') |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
76 procName = "Main"; |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
77 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
78 //For content process it is in the format "Content (<PID>)", we just want Content |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
79 procName = procName.split(' ')[0]; |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
80 text += "RSS: " + procName + ": " + reporter.amount + "\n"; |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
81 } |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
82 } |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
83 return text; |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
84 } |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
85 |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
86 /* |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
87 * Cleanup and stop memory collector. |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
88 */ |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
89 function stopMemCollector() { |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
90 if (gChildProcess) { |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
91 var os = Cc["@mozilla.org/observer-service;1"]. |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
92 getService(Ci.nsIObserverService); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
93 os.removeObserver(collectAndReport, "child-memory-reporter-update"); |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
94 } |
beca399c3a16
Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff
changeset
|
95 } |