我正在使用XUL开发火狐浏览器的插件,现在想要测量和分析我的插件的内存使用情况。
请问如何实现?以及如何检查哪些函数占用了最多的内存,以及我的扩展对火狐浏览器的内存增加了多少?
我正在使用XUL开发火狐浏览器的插件,现在想要测量和分析我的插件的内存使用情况。
请问如何实现?以及如何检查哪些函数占用了最多的内存,以及我的扩展对火狐浏览器的内存增加了多少?
about:memory?verbose
下看到此窗口的隔离区(点击“最小化内存使用”,否则您可能会看到那里将被垃圾回收的对象)。如果您的扩展程序代码在浏览器窗口的上下文中运行,则通常情况下您将无法区分它与其他正在运行的脚本。XPCOM 组件和 JavaScript 模块也是如此 - 所有这些都会加载到 "[System Principal]" 隔离区中。
然而,您可以采取以下措施将您的脚本与大隔离区分开:使用沙箱,沙箱总是拥有自己的隔离区。例如,在浏览器窗口中,您可以执行以下操作:
Components.utils.import("resource://gre/modules/Services.jsm");
var mySandbox = Components.utils.Sandbox(window,
{sandboxName: "myExtension/browserScript.js"});
mySandbox.window = window; // Expose window variable to scripts in the sandbox
Services.scriptloader.loadSubScript("chrome://myextension/content/browserScript.js",
mySandbox);
mySandbox.init(); // Call function init() of the script in the sandbox
about:memory?verbose
下会显示一个名为myExtension/browserScript.js
的隔间,您将能够准确地查看此脚本(以及它创建的对象等)所占用的内存量。需要注意以下几点:
window
变量所做的那样)。