15楼#
发布于:2013-12-27 11:22
我用UC脚本查看内存
图片:QQ截图20131227112311.png ![]() // ==UserScript== // @name MemoryMonitorMod.uc.js // @compatibility Firefox 9.* // @description Bei Ueberschreitung der maximalen Speicherauslastung kann automatischer Neustart durchgefuehrt werden // @include main // @note Bezug: about:memory // @note http://loda.jp/script/?id=584 // @note Version auf https://github.com/ardiman/userChrome.js um _autoRestart und Fehlerumgehung bei gfx-surface-image ergaenzt // ==/UserScript== const version = Services.prefs.getCharPref("extensions.lastPlatformVersion").split(".",1); var ucjs_MemoryMonitor = { // ---------------------------------setting data----------------------------- // Update-Intervall[ms] _interval: 5000, // Neustart bei maximaler Speichernutzung (Achtung! Anpassen an die darunter gewaehlte Speichereinheit) _maxMemory: 500, // Speicher-Einheit: B, KB, KiB, MB, MiB, GB, GiB _prefix: "MB", // Speicher-Einheitanzeige in der Statusbar _dPrefix: true, // automatischen Restart bei Ueberschreitung von _maxMemory durchfuehren _autoRestart: false, // -------------------------------------------------------------------------- interval: null, init: function () { var memoryPanel = document.createElement("statusbarpanel"); memoryPanel.id = "MemoryDisplay"; memoryPanel.setAttribute("label", this.setPrefix(this._dPrefix)); document.getElementById("urlbar-icons").insertBefore(memoryPanel, null); this.start(); this.interval = setInterval(this.start, this._interval); }, addFigure: function (str) { var num = new String(str).replace(/,/g, ""); while (num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2"))); return num; }, restart: function () { var appStartup = Components.interfaces.nsIAppStartup; Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(appStartup).quit(appStartup.eRestart | appStartup.eAttemptQuit); }, getSize: function (mem, flag) { var pre = 1; switch (this._prefix) { case 'KB': pre = 1000; break; case 'KiB': pre = 1024; break; case 'MB': pre= 1000 * 1000; break; case 'MiB': pre = 1024 * 1024; break; case 'GB': pre = 1000 * 1000 * 1000; break; case 'GiB': pre = 1024 * 1024 * 1024; break; } if (flag) return mem * pre; else return ucjs_MemoryMonitor.addFigure(Math.round(mem / pre)); }, setPrefix: function (flag) { return (flag) ? " " + this._prefix : ""; }, start: function () { try { const Cc = Components.classes; const Ci = Components.interfaces; var mgr = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager); var e = mgr.enumerateReporters(); var gMemReporters = {}; if(version<=25){ while (e.hasMoreElements()) { var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter); gMemReporters[mr.path] = mr;} } if(version>25){ var handleReport = function(Process, Path, Kind, Units, Amount, Description) { gMemReporters[Path] = {}; gMemReporters[Path].amount = Amount; } var MEM_HISTOGRAMS = {}; while (e.hasMoreElements()) { let mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter); MEM_HISTOGRAMS[mr.name] = mr.name; if(!MEM_HISTOGRAMS[mr.name] || ["resident","private","gfx-surface-image"].indexOf(mr.name)==-1) continue; try{ mr.collectReports(handleReport, null); }catch(ex){} } } var workingSet = gMemReporters["resident"].amount; var commitmentSize=(typeof(gMemReporters["private"])!="undefined" ? gMemReporters["private"].amount : 0); var gfxImage=(typeof(gMemReporters["gfx-surface-image"])!="undefined" ? gMemReporters["gfx-surface-image"].amount : 0); var restartMemory = ucjs_MemoryMonitor.getSize(ucjs_MemoryMonitor._maxMemory, true); var memoryPanel = document.getElementById("MemoryDisplay"); memoryPanel.setAttribute("label", ucjs_MemoryMonitor.getSize(workingSet) + ucjs_MemoryMonitor.setPrefix(ucjs_MemoryMonitor._dPrefix)); memoryPanel.setAttribute("onclick", "openUILinkIn('about:memory','tab')"); memoryPanel.setAttribute("tooltiptext", ((workingSet) ? "resident: " + ucjs_MemoryMonitor.getSize(workingSet) + " " + ucjs_MemoryMonitor._prefix + "\n" : "") + ((commitmentSize) ? "private: " + ucjs_MemoryMonitor.getSize(commitmentSize) + " " + ucjs_MemoryMonitor._prefix + "\n" : "") + ((gfxImage) ? "gfx-surface-image: " + ucjs_MemoryMonitor.getSize(gfxImage) + " " + ucjs_MemoryMonitor._prefix : "") ); if (workingSet > restartMemory) { if (memoryPanel.style.backgroundColor == "red" && ucjs_MemoryMonitor._autoRestart) ucjs_MemoryMonitor.restart(); else memoryPanel.style.backgroundColor = "red"; } else if (workingSet > restartMemory * 0.8) memoryPanel.style.backgroundColor = "#FF99FF"; else if (workingSet > restartMemory * 0.6) memoryPanel.style.backgroundColor = "#FFFF99"; else memoryPanel.style.backgroundColor = "transparent"; } catch (e) { clearInterval(ucjs_MemoryMonitor.interval); alert("ucjs_MemoryMonitor Err:" + e); } } } ucjs_MemoryMonitor.init(); |
|
|
上一页
下一页