// ==UserScript== // @name getMemoryInfo // @namespace http://efcl.info/ // @description メモリ情報をcontentスコープから取得できるように拡張 // @include main // ==/UserScript== var memoryInfo = { init: function(event) { let doc = event.originalTarget; //alert(doc.defaultView.location.href); if (doc instanceof HTMLDocument) { var win = doc.defaultView.wrappedJSObject; if (!win.getMemoryInfo) { win.getMemoryInfo = memoryInfo.getMemoryInfo; } } }, getMemoryInfo: function() { var mgr = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager); var e = mgr.enumerateReporters(); var gMemReporters = {}; while (e.hasMoreElements()) { var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter); gMemReporters[mr.path] = mr; } var mapped = gMemReporters["malloc/mapped"].memoryUsed; var allocated = gMemReporters["malloc/allocated"].memoryUsed; var committed = gMemReporters["malloc/committed"].memoryUsed; var dirty = gMemReporters["malloc/dirty"].memoryUsed; return { "mapped": mapped, "allocated": allocated, "committed": committed, "dirty": dirty } } } gBrowser.addEventListener("load", memoryInfo.init, true);