2012-10-15 19:12:14 -07:00
|
|
|
/* -*- Mode: C++; tab-width: 50; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
|
2012-10-29 17:41:14 -07:00
|
|
|
#include "nsISupports.idl"
|
2012-10-15 19:12:14 -07:00
|
|
|
|
2012-10-29 17:41:14 -07:00
|
|
|
[scriptable, builtinclass, uuid(ede09623-d793-4355-9682-b3adfe307126)]
|
|
|
|
interface nsIMemoryInfoDumper : nsISupports
|
2012-10-15 19:12:14 -07:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* DumpMemoryReportsToFile dumps the memory reports for this process and
|
|
|
|
* possibly our child processes (and their children, recursively) to a file in
|
|
|
|
* the tmp directory called memory-reports-<identifier>-<pid>.json.gz (or
|
|
|
|
* something similar, such as memory-reports-<identifier>-<pid>-1.json.gz; no
|
|
|
|
* existing file will be overwritten).
|
|
|
|
*
|
2012-10-29 17:41:14 -07:00
|
|
|
* @param aIdentifier this identifier will appear in the filename of our
|
|
|
|
* about:memory dump and those of our children (if aDumpChildProcesses is
|
2012-10-15 19:12:14 -07:00
|
|
|
* true).
|
|
|
|
*
|
|
|
|
* If the identifier is empty, the dumpMemoryReportsToFile implementation
|
|
|
|
* may set it arbitrarily and use that new value for its own dump and the
|
|
|
|
* dumps of its child processes. For example, the dumpMemoryReportsToFile
|
2012-10-29 17:41:14 -07:00
|
|
|
* implementation may set |aIdentifier| to the number of seconds since the
|
2012-10-15 19:12:14 -07:00
|
|
|
* epoch.
|
|
|
|
*
|
2012-10-29 17:41:14 -07:00
|
|
|
* @param aMinimizeMemoryUsage indicates whether we should run a series of
|
2012-10-15 19:12:14 -07:00
|
|
|
* gc/cc's in an attempt to reduce our memory usage before collecting our
|
|
|
|
* memory report.
|
|
|
|
*
|
2012-10-29 17:41:14 -07:00
|
|
|
* @param aDumpChildProcesses indicates whether we should call
|
2012-10-15 19:12:14 -07:00
|
|
|
* dumpMemoryReportsToFile in our child processes. If so, the child
|
|
|
|
* processes will also dump their children, and so on.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* Sample output:
|
|
|
|
*
|
|
|
|
* {
|
|
|
|
* "hasMozMallocUsableSize":true,
|
|
|
|
* "reports": [
|
|
|
|
* {"process":"", "path":"explicit/foo/bar", "kind":1, "units":0,
|
|
|
|
* "amount":2000000, "description":"Foo bar."},
|
|
|
|
* {"process":"", "path":"heap-allocated", "kind":1, "units":0,
|
|
|
|
* "amount":3000000, "description":"Heap allocated."},
|
|
|
|
* {"process":"", "path":"vsize", "kind":1, "units":0,
|
|
|
|
* "amount":10000000, "description":"Vsize."}
|
|
|
|
* ]
|
|
|
|
* }
|
|
|
|
*
|
|
|
|
* JSON schema for the output.
|
|
|
|
*
|
|
|
|
* {
|
|
|
|
* "properties": {
|
|
|
|
* "hasMozMallocUsableSize": {
|
|
|
|
* "type": "boolean",
|
|
|
|
* "description": "nsIMemoryReporterManager::hasMozMallocUsableSize",
|
|
|
|
* "required": true
|
|
|
|
* },
|
|
|
|
* "reports": {
|
|
|
|
* "type": "array",
|
|
|
|
* "description": "The memory reports.",
|
|
|
|
* "required": true
|
|
|
|
* "minItems": 1,
|
|
|
|
* "items": {
|
|
|
|
* "type": "object",
|
|
|
|
* "properties": {
|
|
|
|
* "process": {
|
|
|
|
* "type": "string",
|
|
|
|
* "description": "nsIMemoryReporter::process",
|
|
|
|
* "required": true
|
|
|
|
* },
|
|
|
|
* "path": {
|
|
|
|
* "type": "string",
|
|
|
|
* "description": "nsIMemoryReporter::path",
|
|
|
|
* "required": true,
|
|
|
|
* "minLength": 1
|
|
|
|
* },
|
|
|
|
* "kind": {
|
|
|
|
* "type": "integer",
|
|
|
|
* "description": "nsIMemoryReporter::kind",
|
|
|
|
* "required": true
|
|
|
|
* },
|
|
|
|
* "units": {
|
|
|
|
* "type": "integer",
|
|
|
|
* "description": "nsIMemoryReporter::units",
|
|
|
|
* "required": true
|
|
|
|
* },
|
|
|
|
* "amount": {
|
|
|
|
* "type": "integer",
|
|
|
|
* "description": "nsIMemoryReporter::amount",
|
|
|
|
* "required": true
|
|
|
|
* },
|
|
|
|
* "description": {
|
|
|
|
* "type": "string",
|
|
|
|
* "description": "nsIMemoryReporter::description",
|
|
|
|
* "required": true
|
|
|
|
* }
|
|
|
|
* }
|
|
|
|
* }
|
|
|
|
* }
|
|
|
|
* }
|
|
|
|
* }
|
|
|
|
*/
|
2012-10-29 17:41:14 -07:00
|
|
|
void dumpMemoryReportsToFile(in AString aIdentifier,
|
|
|
|
in bool aMinimizeMemoryUsage,
|
|
|
|
in bool aDumpChildProcesses);
|
2012-10-15 19:12:14 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Dump GC and CC logs to files in the OS's temp directory (or in
|
|
|
|
* $MOZ_CC_LOG_DIRECTORY, if that environment variable is specified).
|
|
|
|
*
|
|
|
|
* @param aIdentifier If aIdentifier is non-empty, this string will appear in
|
|
|
|
* the filenames of the logs we create (both for this process and, if
|
|
|
|
* aDumpChildProcesses is true, for our child processes).
|
|
|
|
*
|
|
|
|
* If aIdentifier is empty, the implementation may set it to an
|
|
|
|
* arbitrary value; for example, it may set aIdentifier to the number
|
|
|
|
* of seconds since the epoch.
|
|
|
|
*
|
|
|
|
* @param aDumpChildProcesses indicates whether we should call
|
|
|
|
* DumpGCAndCCLogsToFile in our child processes. If so, the child processes
|
|
|
|
* will dump their children, and so on.
|
|
|
|
*/
|
2012-10-29 17:41:14 -07:00
|
|
|
void dumpGCAndCCLogsToFile(in AString aIdentifier,
|
|
|
|
in bool aDumpChildProcesses);
|
2012-10-15 19:12:14 -07:00
|
|
|
};
|