Performance/MemShrink/DMD: Difference between revisions

Line 111: Line 111:
   WARNING: No principal to execute JS with: file /home/njn/moz/mi2/dom/src/jsurl/nsJSProtocolHandler.cpp, line 157
   WARNING: No principal to execute JS with: file /home/njn/moz/mi2/dom/src/jsurl/nsJSProtocolHandler.cpp, line 157


When this command runs it tells DMD to do three things.
This command runs all the memory reporters and then invokes DMD analysis of the reports, which triggers this commentary:
 
* Run all the memory reporters.  While this happens, DMD builds up some state recording which heap blocks have and have not been reported.
* Analyze the state and produce output.
* Clear the state.
 
Because of the third step, you can run <tt>DMDReportAndDump</tt> multiple times in a single session.
 
However, it's important that the memory reporters only run once between invocations of <tt>DMDReportAndDump</tt>, otherwise the state will be inaccurate.  For example, if you view about:memory (which runs the memory reporters) and then invoke <tt>DMDReportAndDump</tt> (which runs them again before analyzing) you'll get _many_ reports about blocks being reported twice.  Therefore, there is a second way to invoke DMD, which doesn't run the reporters:
 
  javascript:DMDDump(<filename>)
 
When either command is invoked, you'll see some more commentary:


   DMD[20600] Dump 1 {
   DMD[20600] Dump 1 {
Line 141: Line 129:


Once that's finished printing you can look in <filename> for the output.
Once that's finished printing you can look in <filename> for the output.
You can run <tt>DMDReportAndDump</tt> multiple times in a single session.


=== Fennec ===
=== Fennec ===
Confirmed users
1,345

edits