Memory Monitor ( Firefox 17 + )
Автор: bunda1
Версия: от 28.07.2014.
Описание: Kод показывает в адресной строке расход оперативной памяти в Firefox, по клику на котором потребление памяти будет показана в вкладке подробно по элементам. Сплывающая подсказка у счётчика памяти отображает в MB максимально возможное и текущее заполнение дискового кеша, оффлайн кеша и кеша в оперативной памяти(FF26).
Использование: положите код в любую Custom Buttons кнопку, в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую.

Memory Monitor( Firefox 17-45 )

Выделить код

Код:

// Показывать потребление памяти в адресной строке, от 28.07.2014. ................................
(function () {
   if ( document.getElementById('memoryDisplay') ) return;
    
   // Создать в адресной строке счётчик памяти ....
   var memoryDisplay = document.createElement("statusbarpanel");
   var urlbarIcons = document.getElementById("urlbar-icons");
   urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки
   
   memoryDisplay.id = "memoryDisplay";
   memoryDisplay.label = getMemory() + ' MB';  
   self.timer = setInterval(function() { memoryDisplay.label = getMemory() + ' MB' }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек )
   
   
   // Всплывающая подсказка у счётчика отображает заполнение дискового кеша ....
   var k = 100, mb = 1024 * 1024, str = "",
   cs = Cc["@mozilla.org/network/cache-service;1"].getService(Ci.nsICacheService),
   visitor = { visitDevice: addInfo };

   function addInfo(device, info) {
      str += (str ? "\n" : "") + device[0].toUpperCase() + device.slice(1) + " Cache:  " +
      [info.totalSize, info.maximumSize].map(function(num) Math.round(k * num / mb) / k + " MB").join(" / ");
   };

   memoryDisplay.onmouseenter = function() {
     str = "";
     try { cs.visitEntries(visitor) } catch(e) {};
     memoryDisplay.tooltipText = "Л: Подробно показать потребление памяти в вкладке" + "\n\n" 
        + ( cbu.getPrefs("browser.cache.memory.enable") || cbu.getPrefs("browser.cache.disk.enable") ? str : "Кэш отключен" );
   };
   
   
   // Получить всю занимаемую оперативную память в MB ....
   function getMemory() {            
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          } 
      catch(e) { var memory = reporterManager.resident }; // для Nightly
      
      return ( Math.round( memory/1048576 ) );
   };      
   
   
   // По клику подробно показать потребление памяти в вкладке ....
   memoryDisplay.onclick = function(e) {
      if ( e.button ) return;
       var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") ); 
          
       // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
       memoryTab.addEventListener("pageshow", function c(e) {         
          this.removeEventListener( e.type, c );           

          setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);      
       });  
   };
   
     
   // Css стиль для счётчика ....
   var uri = makeURI('data:text/css,'+ encodeURIComponent('\
      #memoryDisplay { -moz-appearance: none !important; margin-left: 2px !important; margin-right: -4px !important; border: 0 !important; min-width: 5.5em; text-align: right; }\
      #memoryDisplay[resetMemory] { color: red !important; }\
   '));
   const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); 


   // Удалять счётчик памяти и другие изменения ....
   addDestructor(function() { 
      sss.unregisterSheet(uri, sss.AGENT_SHEET);
      urlbarIcons.removeChild( memoryDisplay )
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
   
})();

Memory Monitor( Firefox 45+ )

Выделить код

Код:

// Показывать потребление памяти в адресной строке, от 04.03.2017. ................................
(function () {
   if ( document.getElementById('memoryDisplay') ) return;
    
   // Создать в адресной строке счётчик памяти ....
   var memoryDisplay = document.createElement("statusbarpanel");
   var urlbarIcons = document.getElementById("urlbar-icons");
   urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки
   
   memoryDisplay.id = "memoryDisplay";
   memoryDisplay.label = getMemory() + ' MB';  
   self.timer = setInterval(function() { memoryDisplay.label = getMemory() + ' MB' }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек )
   
   
   // Всплывающая подсказка у счётчика отображает заполнение дискового кеша ....
   var data = {
       memory: "Memory Cache:  ",
       disk: "Disk Cache:  ",
       offline: "Offline Cache:  "
   };   
   function getSize(size) {
      if (!size) return size === 0 ? "0" : "?";
      for(var count = -1; size >= 1024; size /= 1024, count++);
      return size.toFixed(2).replace(/0+$/, "").replace(/\.$/, "") + " " + ("KMGT"[count] || "") + "B";
   }
   function setInf(tot, max, type, i) {
      var inf = getSize(tot) + " / " + getSize(max);
      var key = "browser.cache." + type + ".enable";
      if (!Services.prefs.getBoolPref(key)) inf += " (disabled)";
      memoryDisplay.tooltipText = memoryDisplay.tooltipText.replace(zws(i), inf);
   }
   function zws(ind) "\u200B\u200B\u200B".slice(0, ++ind);

   var types = Object.keys(data);
   var ttt = types.map(function(key, i) data[key] + zws(i)).join("\n");
   
   var context = Cu.import("resource://gre/modules/LoadContextInfo.jsm", {}).LoadContextInfo.default;
   memoryDisplay.onmouseenter = function() {
      memoryDisplay.tooltipText = "Л: Показать потребление памяти в вкладке\n" + ttt;
      try {
          var entries = {};
          Services.cache.visitEntries({
          visitDevice: function(device, info) entries[device] = info,
          visitEntry: function() {}
          });
      types.forEach(function(type, i) {
         var info = entries[type];
         setInf(info && info.totalSize, info && info.maximumSize, type, i)
      });
   } 
   catch(ex) {
      Services.cache2 && types.forEach(function(type, i) {
      var func = function(aEntryCount, aConsumption, aCapacity, aDiskDirectory)
                 setInf(aConsumption, aCapacity, type, i);
      var storage = Services.cache2[(type == "offline" ? "app" : type) + "CacheStorage"](context, null);
      try { storage.asyncVisitStorage({onCacheStorageInfo: func}, false) } catch(ex) {};
      });
   }
   };
  
   
   // Получить всю занимаемую оперативную память в MB ....
   function getMemory() {            
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          } 
      catch(e) { var memory = reporterManager.resident }; // для Nightly
      
      return ( Math.round( memory/1048576 ) );
   };      
   
   
   // По клику подробно показать потребление памяти в вкладке ....
   memoryDisplay.onclick = function(e) {
      if ( e.button ) return;
       var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") ); 
          
       // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
       memoryTab.addEventListener("pageshow", function c(e) {         
          this.removeEventListener( e.type, c );           

          setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);      
       });  
   };
   
     
   // Css стиль для счётчика ....
   var uri = makeURI('data:text/css,'+ encodeURIComponent('\
      #memoryDisplay { -moz-appearance: none !important; margin-left: 2px !important; margin-right: -4px !important; border: 0 !important; min-width: 5.5em; text-align: right; }\
      #memoryDisplay[resetMemory] { color: red !important; }\
   '));
   const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); 


   // Удалять счётчик памяти и другие изменения ....
   addDestructor(function() { 
      sss.unregisterSheet(uri, sss.AGENT_SHEET);
      urlbarIcons.removeChild( memoryDisplay )
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
   
})();

Memory Monitor как кнопка с выводом расхода оперативной памяти на кнопке:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E222MB%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-2%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20memoryTab%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22about%3Amemory%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%22about%3Amemory%22%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u043D%u0430%u0436%u0438%u043C%u0430%u0435%u0442%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%0A%20%20%20%20%20%20%20%20%20%20memoryTab.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28%20e.type%2C%20c%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20try%20%7B%20e.originalTarget.getElementById%28%27measureButton%27%29.click%28%29%20%7D%20catch%28e%29%20%7B%7D%20%7D%2C%200%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20gShowPopup%28this%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20....%0A%20%20%20%20%20%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%20....%0A%20%20%20%20%20%20%20%20%20%20var%20dir%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Ci.nsIProperties%29.get%28%22Home%22%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20%20%20%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20dir.exists%28%29%20%29%20dir.remove%28true%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21dir.exists%28%29%20%29%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20%20%20%20%20%20var%20alertService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0A%20%20%20%20%20%20%20%20%20%20alertService.showAlertNotification%28%27chrome%3A//global/skin/icons/information-16.png%27%2C%20%27%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%27%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20alertService.closeAlert%28%29%20%7D%2C%202500%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u043D%u0430%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u0435%20................................%0A%28function%20%28%29%20%7B%0A%20%20%20self.label%20%3D%20getMemory%28%29%20+%20%27MB%27%3B%20%20%0A%20%20%20self.timer%20%3D%20setInterval%28function%28%29%20self.label%20%3D%20getMemory%28%29%20+%20%27MB%27%2C%202000%20%29%3B%20//%20%u0442%u0430%u0439%u043C%u0435%u0440%20%u043E%u0431%u043D%u043E%u0432%u043B%u044F%u0435%u0442%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u0440%u0430%u0437%20%u0432%202000%u043C%u0441%28%202%20%u0441%u0435%u043A%20%29%20%20%20%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u0432%20MB%20....%0A%20%20%20function%20getMemory%28%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20reporterManager%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20e%20%3D%20reporterManager.enumerateReporters%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28%20e.hasMoreElements%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20mr%20%3D%20e.getNext%28%29.QueryInterface%28Ci.nsIMemoryReporter%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self%5Bmr.path%5D%20%3D%20mr%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20memory%20%3D%20self%5B%22resident%22%5D.amount%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20catch%28e%29%20%7B%20var%20memory%20%3D%20reporterManager.resident%20%7D%3B%20//%20%u0434%u043B%u044F%20Nightly%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20return%20%28%20Math.round%28%20memory/1048576%20%29%20%29%3B%0A%20%20%20%7D%3B%20%0A%0A%20%20%20//%20%u0421%u0442%u0438%u043B%u044C%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0443%20....%0A%20%20%20var%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28%27%5C%0A%20%20%20%25button%25%20.toolbarbutton-icon%20%7B%5C%0A%20%20%20%20%20display%3A%20none%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20.toolbarbutton-text%20%7B%5C%0A%20%20%20%20%20display%3A%20-moz-box%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20%7B%5C%0A%20%20%20%20%20-moz-box-orient%3A%20horizontal%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%27.replace%28/%25button%25/g%2C%20%22%23%22%20+%20_id%29%20%29%29%3B%0A%20%20%20const%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%20%0A%20%20%20%0A%20%20%20//%20%u0423%u0434%u0430%u043B%u044F%u0442%u044C%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%20....%0A%20%20%20addDestructor%28function%28%29%20%7B%20%0A%20%20%20%20%20%20try%20%7B%20window.clearTimeout%28%20self.timer%20%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%7D%29%3B%0A%20%20%20%20%20%0A%7D%29%28%29%3B%0A%0A%0A//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%u0430%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u0442%20%u0437%u0430%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0435%20%u0434%u0438%u0441%u043A%u043E%u0432%u043E%u0433%u043E%20%u043A%u0435%u0448%u0430%20..............%0Avar%20data%20%3D%20%7B%0A%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%7D%3B%20%20%20%0Afunction%20getSize%28size%29%20%7B%0A%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%7D%0Afunction%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20self.tooltipText%20%3D%20self.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%7D%0Afunction%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0Avar%20types%20%3D%20Object.keys%28data%29%3B%0Avar%20ttt%20%3D%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%20%20%20%0Avar%20context%20%3D%20Cu.import%28%22resource%3A//gre/modules/LoadContextInfo.jsm%22%2C%20%7B%7D%29.LoadContextInfo.default%3B%0Aself.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20self.tooltipText%20%3D%20%22%u041B%3A%20%u041F%u043E%u0434%u0440%u043E%u0431%u043D%u043E%20%u043F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%5Cn%u0421%3A%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash-%u043A%u0443%u043A%u0438%5Cn%5Cn%22%20+%20ttt%3B%0A%20%20%20try%20%7B%0A%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%20%0A%20%20%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28context%2C%20null%29%3B%0A%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Спасибо,  полезный код.  Вот только после ПКМ - настроить получается такая картинаhttp://s017.radikal.ru/i421/1111/25/c6c73c6cc5e7.jpg
Сколько раз нажимаю ПКМ, столько дополнительных МВ получается.

mserv
Спасибо, а то я забыл про эту проблему.
Я исправил код.

bunda1 пишет:

Я исправил код.

Спасибо, теперь всё ОК.
PS Не останавливайтесь на достигнутом, добавьте загрузку процессора.http://www.kolobok.us/smiles/big_standart/smile.gif

bunda1
подскажи, что подправить в коде, чтобы убрать появившийся разделитель между Memory Monitor и history-dropmarker ?
Просто дропмаркер у меня скрыт стилем и образовывающийся разделитель ни к чему...

Inko7
в userChrome.css

Выделить код

Код:

#MemoryDisplay{
-moz-appearance: none !important;
border: 0px !important;}

bunda1
И ещё подскажите плиз, как уменьшить интервалы.
                                                                   http://s006.radikal.ru/i215/1111/38/874b14a0a9b8.jpg

06-11-2011 00:34:09
bunda1
У меня показатели отличаются от диспетчера задач на 70-130МБ  :(

mserv
в userChrome.css

Выделить код

Код:

#MemoryDisplay{
-moz-appearance: none !important;
border: 0px !important;
padding:0px !important;
margin-right:-5px !important;
margin-left:-3px !important;
}

:(
У меня показатели точно совпадают с диспетчером задач.
пробуй так:
about:config
dom.ipc.plugins.enabled - false

mserv пишет:

У меня показатели отличаются от диспетчера задач на 70-130МБ

А диспетчер задач "родной"(виндовый)? Process Hacker показывает зарезервированную память, taskmanager - рабочий набор, а Process Explorer - и то, и другое. У меня совпадает c диспетчером задач :)
http://storage2.static.itmages.ru/i/11/1106/s_1320526957_4141461_4ff6b10461.png

bunda1 пишет:

в userChrome.css

Спасибо

bunda1 пишет:

пробуй так:
about:config
dom.ipc.plugins.enabled - false

Так вообще не показывает, остаётся только МВ:(

06-11-2011 01:33:15
bunda1
Создал новую кнопку только с этим кодом, и стало всё ОК. :beer:

В  вашем стиле надо заменить statusbarpanel на #MemoryDisplay, иначе может получиться маленький хаос в панели дополнений.

mserv
Спасибо, заменю.

На Memory Monitor можно навесить свою команду и он будет работать как CB кнопка.
Пример, после

Выделить код

Код:

 var go = urlbar.lastChild;
    urlbar.insertBefore(memoryPanel, go)

добавляем

Выделить код

Код:

memoryPanel.addEventListener("click", function(){
       //Добавить страницу в закладки    
       PlacesCommandHook.bookmarkLink(PlacesUtils.bookmarksMenuFolderId, content.location.href, content.document.title);
}, true);

или добавляем

Выделить код

Код:

memoryPanel.addEventListener("click", function(){
//Без запроса, добавить страницу в закладки в Меню закладок.
var bmsvc = Components. classes ["@mozilla.org/browser/nav-bookmarks-service;1"].
        getService (Components. interfaces. nsINavBookmarksService);

var br = gBrowser. getBrowserForTab (gBrowser. mCurrentTab);
bmsvc. insertBookmark (bmsvc. bookmarksMenuFolder, br. webNavigation. currentURI, bmsvc. DEFAULT_INDEX, gBrowser. mCurrentTab. label);
}, true);

На самом деле сомнительно решение заменить звездочку:/

Kamui пишет:

На самом деле сомнительно решение заменить звездочку:/

Почему.

А мне идея понравилась, но не понравилось, что не работает с Add Bookmark Here ², поэтому оставил первый вариант [CB]Memory Monitor.

bunda1 пишет:

Почему.

Звездочка как-то привычнее, да и по логике эти функции не связаны друг с другом. А еще на скрине видно что индикатор немного залезает на кнопку go. У меня например звездочка и go на одном месте находятся и заменяют друг друга (когда фокус на странице там звездочка, когда в адресной строке, там go), а тут такое не получится, потому что индикатор шире чем кнопка go/

Kamui пишет:

а тут такое не получится, потому что индикатор шире чем кнопка go/

Замени _dPrefix: true, на _dPrefix: false, и места станет больше. :)

bunda1 пишет:

Удаляет из адресной строки star-button(звездочка).

А можете сделать вариант кода с заменой не звёздочки, а треугольника выпадающего списка?

Kamui пишет:

А еще на скрине видно что индикатор немного залезает на кнопку go.

Не проблема, если изменить #MemoryDisplay{margin-right:

mserv пишет:

А можете сделать вариант кода с заменой не звёздочки, а треугольника выпадающего списка?

К сожалению, не знаю как это сделать.
Но можно зделать так - кнопка go становится желтого цвета, если текущая страница уже есть в закладках + если щелкнуть правой клавишей мыши на go button, откроется диалог добавление страницы в закладки.

bunda1 пишет:

Но можно зделать так - кнопка go становится желтого цвета, если текущая страница уже есть в закладках + если щелкнуть правой клавишей мыши на go button, откроется диалог добавление страницы в закладки.

А у меня этой go нет совсем, и уже не помню, куда она делась, когда я её убрал…  http://www.kolobok.us/smiles/big_standart/scratch_one-s_head.gifДа и как управление закладками меня устраивает звёздочка, я просто просил убрать треугольник, а его функции приделать к [CB]Memory Monitor, что бы сэкономить место.

mserv пишет:

bunda1
У меня показатели отличаются от диспетчера задач на 70-130МБ

У меня на 2 - 3МБ

на 5мб разница, не думаю что это много)

WW пишет:

на 5мб разница, не думаю что это много)

Да не, не много. :)

Не успевает за диспетчером обновятся. :D

AKBA пишет:

Не успевает за диспетчером обновятся. :D

интервал обновления можно изменить в коде

Выделить код

Код:

_interval: 2000, //ms

Подскажите а можно ли сделать так что бы при открытии Firefox - Memory monitor запускался автоматически и во всех открытых окнах? Спасибо

Pippo78 пишет:

Подскажите а можно ли сделать так что бы при открытии Firefox - Memory monitor запускался автоматически и во всех открытых окнах? Спасибо

запускался автоматически - а разве не запускается?
и во всех открытых окнах - тоже вроде работает.
может код не положил в инициализацию а в вкладку код?

bunda1 пишет:

запускался автоматически - а разве не запускается?

Кстати, всё забываю сказать. У меня довольно часто бывает, что монитор сразу не отображается, приходится перезагружать [nightly], иногда 2-3 раза.

mserv пишет:

Кстати, всё забываю сказать. У меня довольно часто бывает, что монитор сразу не отображается, приходится перезагружать [nightly], иногда 2-3 раза.

Замени

Выделить код

Код:

if (!document.getElementById("MemoryDisplay")) ucjs_MemoryMonitor.init();

на

Выделить код

Код:

if (!document.getElementById("MemoryDisplay")) setTimeout(function() {ucjs_MemoryMonitor.init() }, 1000);

bunda1 Большое спасибо за помощь, всё работает как надо, это я накосячил-код не положил в инициализацию

bunda1 пишет:

Замени

Спасибо, буду тестировать, пока вроде работает.

Приветствую народ! С переходом на 12 лису, установил по новой мемори монитор, и он что то стал болльше показывать,  вот к примеру: в диспетчере Fx в данный момент ест 378444кб + 7200 плугин контейнер = 385644, а у меня монитор показывает, что 459мб. Или ещё что то входит в монитор?

WW пишет:

Приветствую народ! С переходом на 12 лису, установил по новой мемори монитор, и он что то стал болльше показывать,  вот к примеру: в диспетчере Fx в данный момент ест 378444кб + 7200 плугин контейнер = 385644, а у меня монитор показывает, что 459мб. Или ещё что то входит в монитор?

Memory Monitor показывает сколько потребляет памяти Firefox и у меня на FF12 показывает правильно. Не знаю в чём тут дело, может это поможет 06-11-2011 00:29:22

На [nightly] кнопка перестала работать, просьба оживить.

voqabuhe пишет:

На [nightly] кнопка перестала работать, просьба оживить.

Да, не работает и мне пока не понятно почему.

И на [aurora] тоже не работает:(

SendAbuse пишет:

И на [aurora] тоже не работает:(

с 13 [firefox] не работает и на [seamonkey] 2.9 может связано с адресной строкой?

feas пишет:

с 13 [firefox] не работает

У меня с 14 отвалилась, на 13 работала.

bunda1

Выделить код

Код:

      //var commitmentSize = gMemReporters["private"].amount;
      //var gfxImage = gMemReporters["gfx-surface-image"].amount;

2k1dmg пишет:

//var commitmentSize = gMemReporters["private"].amount;
//var gfxImage = gMemReporters["gfx-surface-image"].amount;

Ура, работает. Молодец :beer:

2k1dmg
Большое спасибо тебе. :)

Исправил Memory Monitor(Firefox 7.1 +)

Memory Monitor (Firefox 7.1 +)
Исправил ошибки:
Memory Monitor при изменении расхода оперативной памяти на трехзначную число(например 65MB > 120MB) удлинялся, из за чего дергались другие кнопки в адресной строке.

на UX просто исчезает при перезапуске, снося за собой кнопку
А при новом добавлении работает

sthprog пишет:

на UX просто исчезает при перезапуске, снося за собой кнопку

А CB пофикшено? У меня не исчезает.

Починил, спасибо

Здравствуйте.  Подскажите, пожалуйста, а можно разместить Memory Monitor  в "Панели дополнений" (снизу экрана)?  Что надо изменить в коде?

PEAKTOP пишет:

Здравствуйте.  Подскажите, пожалуйста, а можно разместить Memory Monitor  в "Панели дополнений" (снизу экрана)?  Что надо изменить в коде?

Заменить в коде:

Выделить код

Код:

var urlbar = document.getElementById("urlbar-icons");
var go = urlbar.lastChild;
urlbar.insertBefore(memoryPanel, go);

на

Выделить код

Код:

document.getElementById("status-bar").insertBefore(memoryPanel, null);

рестарт.

Кнопка вызывает самопроизвольный перезапуск FF версий 18.0.2, 19.0, 19.0.1, 20b1, 20b2 и 21а2. Как можно от это побороть? В какой именно момент происходит перезапуск и чем он вызван понять не удалось, т.к. нет механизма для отслеживания. Могу сказать одно - память занимаемая FF около 1200-1600 Мб и открыто около 100 вкладок.

PEAKTOP

скрытый текст

PEAKTOP пишет:

В какой именно момент происходит перезапуск и чем он вызван понять не удалось

Выделить код

Код:

if (workingSet > restartMemory) {
        ucjs_MemoryMonitor.restart();
      }

PEAKTOP пишет:

Как можно от это побороть?

Выделить код

Код:

  _maxMemory: Infinity, // 1500,


bunda1
И правда, хорошо бы рестарт в описание добавить, на всякий случай :)
Кстати, интересно, если такую строчку добавить,
у тебя тоже тикает как true ?
скрытый текст

Выделить код

Код:

      var workingSet = gMemReporters["resident"].amount;
Services.console.logStringMessage("MM: mgr.resident == workingSet is " + (mgr.resident == workingSet));
      var restartMemory = ucjs_MemoryMonitor.getSize(ucjs_MemoryMonitor._maxMemory, true);

Dumby пишет:

bunda1
И правда, хорошо бы рестарт в описание добавить, на всякий случай :)
Кстати, интересно, если такую строчку добавить,
у тебя тоже тикает как true ?

Добавлю, кто бы мог подумать что у кого то браузер потребляет 1200-1600 Мб.
Да true постоянно.

Для Firefox 26

Выделить код

Код:

      var e = mgr.enumerateReporters();
      var gMemReporters = {};
      while (e.hasMoreElements()) {
        var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
        gMemReporters[mr.path] = mr;
      }
      var workingSet = gMemReporters["resident"].amount;

заменить на:

Выделить код

Код:

var workingSet = mgr.resident;

скрытый текст

Выделить код

Код:

var ucjs_MemoryMonitor = {
    _interval: 2000, //ms
    _maxMemory: 700, // если больше, то текст индикатора станет жирным
    _prefix: "MiB", //B, KB, KiB, MB, MiB, GB, GiB
    _dPrefix: true,
    _inURLbar: true, // true - в адресной строке, false в статусбаре(панель дополнений)

    interval: null,

    init: function () {
        if (!document.getElementById("ucjs_MemoryMonitor")) {
            var memoryPanel = document.createElement("statusbarpanel");
            memoryPanel.id = "ucjs_MemoryMonitor";
            memoryPanel.setAttribute("label", this.setPrefix(this._dPrefix));

            if (this._inURLbar) {
                document.getElementById("urlbar-icons").appendChild(memoryPanel);
            } else {
                try {
                    document.getElementById("status-bar").appendChild(memoryPanel);
                } catch (e) {
                    document.getElementById("addon-bar").appendChild(memoryPanel);
                }

            }
        }
        this.start();
        this.interval = setInterval(this.start, this._interval);

    },
    uninit: function () {
        clearInterval(ucjs_MemoryMonitor.interval);
    },

    destroy: function () {
        this.uninit();
        var m = document.getElementById("ucjs_MemoryMonitor");
        if (m)
            m.parentNode.removeChild(m);
        ucjs_MemoryMonitor = null;
    },

    addFigure: function (str) {
        var num = new String(str).replace(/,/g, "");
        while (num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
        return num;
    },

    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 = {};
            while (e.hasMoreElements()) {
                var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                gMemReporters[mr.path] = mr;
            };
            var workingSet = gMemReporters["resident"].amount;
            */
            var workingSet = mgr.resident;
            var restartMemory = ucjs_MemoryMonitor.getSize(ucjs_MemoryMonitor._maxMemory, true);
            var memoryPanel = document.getElementById("ucjs_MemoryMonitor");
            memoryPanel.setAttribute("label", ucjs_MemoryMonitor.getSize(workingSet) + ucjs_MemoryMonitor.setPrefix(ucjs_MemoryMonitor._dPrefix));
            //memoryPanel.setAttribute("memload", "norm");
            if (workingSet > restartMemory) {
                memoryPanel.setAttribute("memload", "high");
            } else {
                memoryPanel.setAttribute("memload", "norm");
            }
        } catch (e) {
            clearInterval(ucjs_MemoryMonitor.interval);
        }
    }

};

var cssStr = ('\
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");\n\
@-moz-document url("' + window.location.href + '") {\n\
    #ucjs_MemoryMonitor {\n\
        /*font-size: -moz-use-system-font !important;*/\n\
        -moz-appearance: none !important;\n\
        padding: 0 !important;\n\
        margin: 0 !important;\n\
        background: transparent !important;\n\
        border: 0 !important;\n\
    }\n\
    #ucjs_MemoryMonitor > .statusbarpanel-text {\n\
        font-size: 1em !important;\n\
        margin-top: 0 !important;\n\
        margin-bottom: 0 !important;\n\
        -moz-margin-start: 3px !important;\n\
        -moz-margin-end: 3px !important;\n\
    }\n\
    #ucjs_MemoryMonitor[memload="high"] .statusbarpanel-text {\n\
        font-weight: bold !important;\n\
    }\n\
}\n\
');
var cssURI = this.cssURI = Components.classes["@mozilla.org/network/io-service;1"]
    .getService(Components.interfaces.nsIIOService)
    .newURI("data:text/css," + encodeURIComponent(cssStr), null, null);
var sss = this.sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
    .getService(Components.interfaces.nsIStyleSheetService);
if (!sss.sheetRegistered(cssURI, sss.USER_SHEET))
    sss.loadAndRegisterSheet(cssURI, sss.USER_SHEET);

if (typeof addDestructor == "function" &&  // userChromeJS/uc
    addDestructor != ("addDestructor" in window && window.addDestructor)) {
    addDestructor(function (reason) {
        if (reason != "destructor") {
            let sss = this.sss;
            let cssURI = this.cssURI;
            if (sss.sheetRegistered(cssURI, sss.USER_SHEET))
                sss.unregisterSheet(cssURI, sss.USER_SHEET);
        }
        if (ucjs_MemoryMonitor) {
            ucjs_MemoryMonitor.destroy();
        }
    }, this);
} 
ucjs_MemoryMonitor.init();

Насчет рестарта посмотрите, как справились здесь:https://github.com/ardiman/userChrome.j … rMod.uc.js

2k1dmg пишет:

Для Firefox 26

спасиб =)

Решил создать почти новый профиль, перенес папку с кнопками CB, все отвалились, костыль с предыдущей страницы не работает :( что можно сделать?

sthprog пишет:

Решил создать почти новый профиль, перенес папку с кнопками CB, все отвалились, костыль с предыдущей страницы не работает :( что можно сделать?

Что за костыль?

bunda1 пишет:

sthprog пишет: Решил создать почти новый профиль, перенес папку с кнопками CB, все отвалились, костыль с предыдущей страницы не работает  что можно сделать?Что за костыль?

этот, в прошлый раз советовали

sthprog
custombuttons-0.0.5.7pre1-20130923

bunda1 пишет:

sthprogcustombuttons-0.0.5.7pre1-20130923

Ура, заработало, спасибо.

Мне кажется, что для экономии места можно не показывать "МВ", а только само число мегабайт.
Кроме того можно показывать только 3 младшие цифры, а 1200МБ от 200МБ можно различить  цветом фона :)
Индикатор можно ещё в аддон баре показывать - "addon-bar". Это почти там же где и "status-bar", чуть левее в панели закладок.
Интересно - можно ли его помещать ещё в каком-то месте - панели закладок, таб-баре и т.д.?

difabor пишет:

Мне кажется, что для экономии места можно не показывать "МВ", а только само число мегабайт.

Дело вкуса или переделать просишь?

difabor пишет:

Кроме того можно показывать только 3 младшие цифры, а 1200МБ от 200МБ можно различить  цветом фона :)

Ну можно конечно, но почему именно эти значения?

difabor пишет:

Интересно - можно ли его помещать ещё в каком-то месте - панели закладок, таб-баре и т.д.?

Легко.

difabor пишет:

2. Если текст состоит из нескольких символов, можно ли устанавливать цвета отдельно для каждого символа?

Можно но сложно, я не сделаю.

bunda1 пишет:

difabor пишет:

Мне кажется, что для экономии места можно не показывать "МВ", а только само число мегабайт.

Дело вкуса или переделать просишь?

difabor пишет:

Кроме того можно показывать только 3 младшие цифры, а 1200МБ от 200МБ можно различить  цветом фона :)

Ну можно конечно, но почему именно эти значения?

difabor пишет:

Интересно - можно ли его помещать ещё в каком-то месте - панели закладок, таб-баре и т.д.?

Легко.

difabor пишет:

2. Если текст состоит из нескольких символов, можно ли устанавливать цвета отдельно для каждого символа?

Можно но сложно, я не сделаю.

Спасибо!
Нет, нет, я не прошу Вас переделывать, я хочу сам научиться переделывать! (МВ я сам смогу убрать).
То же касается 3 младших цифр - это я сам постараюсь - всё-таки надо же мне учиться :)
А вот как указать другую панель - я не знаю  и если бы Вы мне просто показали как это делается - был бы Вам очень благодарен.
Кроме того, если бы Вы мне просто показали как менять цвет всего текста - я бы Вам был очень признателен.
Что же касается установки цветов отдельных цифр, то очевидно, что для Memory Monitor это не нужно, но знать, как это делается я бы хотел...

Ох тяжко, мне не русскому человеку трудно объяснять :(

Цвета отдельных цифр - наверно нужно создать и объединить в адресной строке несколько маленьких разноцветных панелей которые должены отображать только одну цифру расхода памяти..

Как указать другую панель здесь почитай Метод appendChild() – добавление дочернего узла к XML элементу | okITgo.ru и Метод insertBefore() XML Элемента | okITgo.ru
Для примера ниже в коде который я переписал для наглядности замени:
var urlbarIcons = document.getElementById("urlbar-icons");
на:
var urlbarIcons = document.getElementById("PersonalToolbar"); //это панель закладок

Выделить код

Код:

// Показывать потребление памяти в адресной строке, от 12.11.2013. ................................
(function func() {  
   // Создать в адресной строке счётчик памяти ....
   var memoryDisplay = document.createElement("statusbarpanel");
   var urlbarIcons = document.getElementById("urlbar-icons");
   urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки
   addDestructor(function() { urlbarIcons.removeChild( memoryDisplay ) });
   
   memoryDisplay.id = "memoryDisplay";
   memoryDisplay.label = getMemory();  
   setInterval(function() { memoryDisplay.label = getMemory() }, 2000 ); // таймер обновляет счётчик, по умолчанию в 2000мс( 2 сек )   
   
   
   // Получить потребление памяти в MB ....
   function getMemory() {            
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      var e = reporterManager.enumerateReporters();
      while ( e.hasMoreElements() ) {
              var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
              func[mr.path] = mr;
              }
      var memory = func["resident"].amount;
      return ( Math.round( memory/1048576 )+10 );
   };      

      
   // Css стиль для счётчика ....
   var uri = makeURI('data:text/css,'+ encodeURIComponent('\
      #memoryDisplay { -moz-appearance: none !important; border: 0 !important; min-width: 5.5em; text-align: right; }\
      #memoryDisplay{ color: #FF1493 !important; }\
   '));
   const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); 
   addDestructor(function() { sss.unregisterSheet(uri, sss.AGENT_SHEET) });  

})();

Цвет всего текста - #memoryDisplay{ color: #FF1493 !important; }

bunda1 можно подставить в подсказку различные показатели типа памяти из about:memory:
например:
       var commitmentSize=(typeof(gMemReporters["private"])!="undefined" ? gMemReporters["private"].amount : 0);
       var gfxImage=(typeof(gMemReporters["vsize"])!="undefined" ? gMemReporters["vsize"].amount : 0);
     
      memoryPanel.setAttribute("tooltiptext",
        ((workingSet) ? "resident: " + ucjs_MemoryMonitor.getSize(workingSet) + " " + ucjs_MemoryMonitor._prefix + "\n" : "") +
        ((commitmentSize) ? "private: " + ucjs_MemoryMonitor.getSize(commitmentSize) + " " + ucjs_MemoryMonitor._prefix + "\n" : "") +
                ((gfxImage) ? "vsize: " + ucjs_MemoryMonitor.getSize(gfxImage) + " " + ucjs_MemoryMonitor._prefix + "\n" : "")
        );

Из того что показывает кнопка - соответствует: значению resident.
В диспетчере задач  - другое значение.
Можете объяснить (может быть и ни к вам вопрос, а ко всем) - что мы наблюдаем на этой кнопке.? Чисто спортивный интерес.

Andrey_Krropotkin пишет:

Из того что показывает кнопка - соответствует: значению resident.
В диспетчере задач  - другое значение.

У меня соответствует тому что показывает диспетчер задач, разница около 5-10MB
http://img36.imageshack.us/img36/8327/0dmc.jpg

13-11-2013 00:31:08
Я так понимаю resident и enumerateReporters() отдаёт всю занимаемую оперативную память.

bunda1 пишет:

Ох тяжко, мне не русскому человеку трудно объяснять :(
...

Как указать другую панель здесь почитай Метод appendChild() – добавление дочернего узла к XML элементу | okITgo.ru и Метод insertBefore() XML Элемента | okITgo.ru
Для примера ниже в коде который я переписал для наглядности замени:
var urlbarIcons = document.getElementById("urlbar-icons");
на:
var urlbarIcons = document.getElementById("PersonalToolbar"); //это панель закладок

Огромнейшее спасибо!http://www.megapolis.org/forum/images/smilies/appl.gif
А как называется таб бар (бар вкладок) и может есть место, где перечислены названия всех тулбаров?

difabor пишет:

А как называется таб бар (бар вкладок) и может есть место, где перечислены названия всех тулбаров?

TabsToolbar

bunda1 пишет:

difabor пишет:

А как называется таб бар (бар вкладок) и может есть место, где перечислены названия всех тулбаров?

TabsToolbar

Спасибо большое!
Подстраиваю под свои нужды Ваш монитор - скорее, с целью научиться чему либо.
Заодно обнаружил, что personal-bookmarks это не PersonalToolbar и можно добавить и к personal-bookmarks - тогда монитор можно перетаскивать вместе с закладками куда угодно :)
Для Вас, конечно, это не новость, а вот я открываю для себя Америки :)

difabor
Также можно выводить расход памяти или другие данные прямо на Сustom Buttons кнопку:

Выделить код

Код:

// Показывать потребление памяти на текущей кнопке, от 12.11.2013. ................................
(function () {  
   self.label = getMemory();  
   self.timer = setInterval(function() { self.label = getMemory() }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек )   
   
   // Получить потребление памяти в MB ....
   function getMemory() {         
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      var e = reporterManager.enumerateReporters();
      while ( e.hasMoreElements() ) {
              var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
              self[mr.path] = mr;
              }
      var memory = self["resident"].amount;
      return ( Math.round( memory/1048576 ) );
   };

   // Стиль добавляет текст на кнопку ....
   var uri = makeURI('data:text/css,'+ encodeURIComponent('\
   %button% .toolbarbutton-icon {\
     display: none !important;\
   }\
   %button% .toolbarbutton-text {\
     display: -moz-box !important;\
   }\
   %button% {\
     -moz-box-orient: horizontal !important;\
   }\
   '.replace(/%button%/g, "#" + _id) ));
   const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); 
   
   // Удалять изменения ....
   addDestructor(function() { 
      sss.unregisterSheet(uri, sss.AGENT_SHEET);
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
     
})();

bunda1 пишет:

Добавлены новые возможности:
Теперь Левый клик в адресной строке на расходе оперативной памяти открывает в новой вкладке потребление памяти(about:memory) подробно по элементам.

В [nightly] открывает пустую страницу, с названием вкладки about:memory

voqabuhe пишет:

В [nightly] открывает пустую страницу, с названием вкладки about:memory

У меня на [nightly] проблем нет, что будет если просто открыть about:memory из адресной строки.

bunda1
Через адресную открывается. А если через кнопку, то сначала открывается пустая страница, потом жму в адресной строке Enter, тогда открывается about:memory

voqabuhe
Не понятная проблема, может в коде замени:

Выделить код

Код:

       var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") ); 
          
       // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
       memoryTab.addEventListener("pageshow", function c(e) {         
          this.removeEventListener( e.type, c );           

          setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);  

на:

Выделить код

Код:

gBrowser.selectedTab = gBrowser.addTab("about:memory");

bunda1
Так вообще перестала работать, совсем исчезла вместе с Изменить масштаб, в одной кнопке были.

Упс, пропустил }); за  setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);

bunda1
Так ничего не изменилось, работает как в первом варианте №72

А если в новой кнопке запустить gBrowser.selectedTab = gBrowser.addTab("about:memory");

bunda1
Результат такой же.

16-11-2013 00:51:36
Странно, несколько раз открыла пустую вкладку, а теперь вообще не работает

Ну тогда не знаю :(

mserv пишет:

bunda1
И ещё подскажите плиз, как уменьшить интервалы.
                                                                   http://s006.radikal.ru/i215/1111/38/874b14a0a9b8.jpg

Я уменьшил их так:

Выделить код

Код:

memoryPanel.style.paddingLeft  = "0px";
memoryPanel.style.paddingRight = "0px";

Не намного, конечно, но чуть-чуть уменьшил  :)

difabor пишет:

Не намного, конечно, но чуть-чуть уменьшил

Ну наверное надо минусовые значения поставить вместо нуля, чтобы ещё уменьшить интервал?
Для уменьшения интервала между значением и единицей измерения можно убрать пробел между апострофом и MB.
memoryDisplay.label = getMemory() + ' MB';

difabor
Попробуй вот это:
memoryDisplay.style.cssText = "-moz-appearance: none; border: 0; padding: 0; margin-right:-4px; margin-left:-2px;"; // Css стиль для счётчика

Andrey_Krropotkin
так лучше, спасибо.

Andrey_Krropotkin пишет:

difabor
Попробуй вот это:
memoryDisplay.style.cssText = "-moz-appearance: none; border: 0; padding: 0; margin-right:-4px; margin-left:-2px;"; // Css стиль для счётчика

Спасибо!!!

Подскажите, плз, в чём может быть проблема.
Их теперь как бы два монитора:
http://img.flashtux.org/img1332d30b231x3f91c890.jpg

Удалял и создавал заново. Делал отдельную кнопку и клал в существующую.
Всё без толку.

Может обнови Сustom Buttons, проверь на чистом профиле. Вообще то такое возможно только если ты установил два таких кода :/

bunda1 пишет:

только если ты установил два таких кода

Не, ну я ещё не совсем из ума выжил! :D
Сustom Buttons стоит последняя версия. Ставил также и pre-версию.
На чистом, голом профиле, естественно, работает нормально.
Вообщем, искать по отдельности, что же мешает, времени и желания нет.
Благо, сохранил старый код. Буду им пользоваться.
Меня терзают смутные сомнения, что виноват Addons in Urlbar. :mad:
Спасибо за участие!

bunda1 а можно ли в текущей версии Memory Monitor сделать так чтобы при достижении отметки например 1000 MB  текст становился жирным выделенным. Спасибо.

Pippo78 пишет:

bunda1 а можно ли в текущей версии Memory Monitor сделать так чтобы при достижении отметки например 1000 MB  текст становился жирным выделенным. Спасибо.

Замени в коде:

Выделить код

Код:

self.timer = setInterval(function() { memoryDisplay.label = getMemory() + ' MB' }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек ) 

на:

Выделить код

Код:

   self.timer = setInterval(function() {
      var m = getMemory();
      memoryDisplay.label = m + ' MB';
      memoryDisplay.style.fontWeight = (m > 1000) ? 'bold' : '';
   }, 2000 );

bunda1 большое спасибо!:D

bunda1, а что надо в коде заменить для размещения монитора в панели дополнений (статусной строке)?

PEAKTOP пишет:

bunda1, а что надо в коде заменить для размещения монитора в панели дополнений (статусной строке)?

var urlbarIcons = document.getElementById("urlbar-icons"); надо заменить на var urlbarIcons = document.getElementById("status-bar"); или на "addon-bar" (это не то же самое, но разница небольшая)

bunda1
А можно объединить 2 кнопки?
Л: Подробно показать потребление памяти в вкладке (Кнопка Memory Monitor)
R: Очистил кеш и удалил Flash кукиси (Кнопка Clear Cache / Delete flash cookie)
Мне кажется, было бы так удобно. Всё равно всплывающие подсказки у них одинаковые. ;)

Хорошо.

А что происходит при удалении Flash кукиси? Пароли сохраняются?
Я попытался найти объяснение - что такое Flash кукиси, но всё, что я нашёл - это то, что эти кукиси доступны всем браузерам.

bunda1 пишет:

Andrey_Krropotkin пишет: Из того что показывает кнопка - соответствует: значению resident.В диспетчере задач  - другое значение.У меня соответствует тому что показывает диспетчер задач, разница около 5-10MBДобавлено 12-11-2013 22:31:08Я так понимаю resident и enumerateReporters() отдаёт всю занимаемую оперативную память.
                    Отредактировано bunda1 (12-11-2013 22:31:08)

Добрый день.

Чего то мониторчик стабильно подбрехивает на + 40 МБ.

Вин 7 [firefox] -26

ДЗ - Винды показывает 190, монитор 230.

Где можно поправить?

nafanja333
У меня на на FF26 и Вин 7 примерно соответствует разница максимум 10 MB не знаю в чём тут дело.
Может измени время обновления монитора в:

Выделить код

Код:

self.timer = setInterval(function() { memoryDisplay.label = getMemory() + ' MB' }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек ) 

20-12-2013 17:21:30
http://img138.imageshack.us/img138/9669/vfcn.jpg

20-12-2013 17:22:34
Наверно надо добавить 10.

У меня

Выделить код

Код:

var mrm = Cc["@mozilla.org/memory-reporter-manager;1"]
    .getService(Ci.nsIMemoryReporterManager);
mrm.resident/1024;

совпадает с Physical Memory – Working Set в Process Explorer'е.

20-12-2013 17:48:37
Во встроенном диспетчере задач в Windows 7 это столбец «Память – рабочий набор», тогда как по умолчанию выводится «частный рабочий набор» («WS Private» в Process Explorer'e).

Спасибо за разъяснения Infocatcher
Действительно в других программах совпадает:
http://img689.imageshack.us/img689/5218/27qj.jpg

Спасибо.

С прогой Process Explorer'е. есть расхождение в 15- 18 мб, а так вроде бы ОК.

bunda1
Доброго времени. Уже в этой теме спрашивал, у самого сделать не получилось №93.
Сейчас появилась ещё одна идея. Можно во всплывающем окне кнопки (выделено "1") показывать сумму "Plugin Flash: xxx MB" (одной цифрой, это сумма plugin-container.exe + все дочерние процессы) (выделено на скриншоте "2")?
Точность цифр не особенно важна, можно как показывает сейчас [firefox] использует +/- 20 MB.

скрытый текст
http://i.imgur.com/gt3p2mA.png

xrun1 пишет:

bunda1
А можно объединить 2 кнопки?
Л: Подробно показать потребление памяти в вкладке (Кнопка Memory Monitor)
R: Очистил кеш и удалил Flash кукиси (Кнопка Clear Cache / Delete flash cookie)
Мне кажется, было бы так удобно. Всё равно всплывающие подсказки у них одинаковые. ;)

Выделить код

Код:

// Показывать потребление памяти в адресной строке, от 20.12.2013. ................................
(function () {  
   // Создать в адресной строке счётчик памяти ....
   var memoryDisplay = document.createElement("statusbarpanel");
   memoryDisplay.setAttribute("context", "event.stopPropagation()");
   var urlbarIcons = document.getElementById("urlbar-icons");
   urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки
            
   memoryDisplay.id = "memoryDisplay";
   memoryDisplay.label = getMemory() + ' MB'; 
   memoryDisplay.style.cssText = "-moz-appearance: none; border: 0; min-width: 5.5em; text-align: right;"; // Css стиль для счётчика
   self.timer = setInterval(function() { memoryDisplay.label = getMemory() + ' MB' }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек ) 
   
   
   // Всплывающая подсказка у счётчика отображает заполнение дискового кеша, автор кода 'Dumby' ....
   var k = 100, mb = 1024 * 1024, str = "",
   cs = Cc["@mozilla.org/network/cache-service;1"].getService(Ci.nsICacheService),
   visitor = { visitDevice: addInfo };

   function addInfo(device, info) {
      str += (str ? "\n" : "") + device[0].toUpperCase() + device.slice(1) + " Cache:  " +
      [info.totalSize, info.maximumSize].map(function(num) Math.round(k * num / mb) / k + " MB").join(" / ");
   };

   memoryDisplay.onmouseenter = function() {
     str = "";
     cs.visitEntries(visitor);
     memoryDisplay.tooltipText = "Л: Подробно показать потребление памяти в вкладке" + "\n" +
                                 "Р: Очистить кэш и удалить Flash кукисы" + "\n\n" + str;
   };
   
   
   // Получить всю занимаемую оперативную память в MB ....
   function getMemory() {            
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          } 
      catch(e) { var memory = reporterManager.resident; } // FF26 - Nightly
      
      return ( Math.round( memory/1048576 ) );
   };      
   
   
   // Отслеживать клики на счётчике памяти ....
   memoryDisplay.onclick = function(e) {
       // по ЛКМ подробно показать потребление памяти в вкладке
       if ( e.button == 0 ) {
           var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") ); 
          
           // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
           memoryTab.addEventListener("pageshow", function c(e) {         
              this.removeEventListener( e.type, c );
              setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);      
           })
           }

      // по ПКМ очистить кэш и удалить Flash кукисы
      if ( e.button == 2 ) {
           // очистить кэш ....
           var cacheService = Cc["@mozilla.org/network/cache-service;1"].getService(Ci.nsICacheService);
           cacheService.evictEntries(Ci.nsICache.STORE_IN_MEMORY);
           cacheService.evictEntries(Ci.nsICache.STORE_ON_DISK);

           // удалить Flash кукисы ....
           var dir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("Home", Ci.nsIFile);
           dir.append("Application Data");
           dir.append("Macromedia");
           if ( dir.exists() ) dir.remove(true);
           if ( !dir.exists() ) dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);

           // всплывающее сообщение ....
           Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService).
           showAlertNotification("chrome://global/skin/icons/question-16.png", self.label, 'Очистил кеш и удалил Flash кукиси', false, "", null, "");
           }
  
   };
   
   
   // Удалять счётчик памяти и другие изменения ....
   addDestructor(function() { 
      urlbarIcons.removeChild( memoryDisplay )
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
})();

А вот как получить память что расходует Plugin Flash я не знаю :(

bunda1
Спасибо. Мне удобнее пользоваться одной кнопкой в адресной строке, так как панель дополнений у меня обычно отключена.

bunda1 пишет:

А вот как получить память что расходует Plugin Flash я не знаю

Значит буду пользоваться Process Explorer для мониторинга и дальше. Ещё раз, спасибо за внимание и помощь.

xrun1 пишет:

Значит буду пользоваться Process Explorer для мониторинга и дальше. Ещё раз, спасибо за внимание и помощь.

Можно отключить plugin-container и смотреть общий расход памяти.

bunda1

Можно отключить plugin-container и смотреть общий расход памяти.

Интересно, не знал об этой возможности, спасибо.

ЛКМ вызывает about:memory, а там есть "кнопки", одна из которых - "minimize memory usage"
Можно ли как-то напр. по СКМ (или длинному ЛКМ) сымитировать её нажатие без вызова about:memory?
И более общий вопрос: как узнать по каким операциям вызываются кнопки этой вкладки?
Я посмотрел код страницы about:memory но оттуда ничего не выудил.
Моя просьба - не столько как "навесить" minimize memory usage на СКМ, сколько как узнать по какой операции это делается и откуда это узнаётся.
Спасибо
-------------------------------
Я сам нашёл - там есть источник:
Вопрос к Бунде:
Я добавил в монитор такую штуку:

Выделить код

Код:

if (e.button == 1) {Services.obs.notifyObservers(null, "child-mmu-request", null); custombuttons.alertSlide("MMU",1);}

Это будет работать?
Я игрался - как будто уменьшается нагрузка, но не намного.

difabor пишет:

Я сам нашёл - там есть источник:
Вопрос к Бунде:
Я добавил в монитор такую штуку:

Выделить код

Код:

if (e.button == 1) {Services.obs.notifyObservers(null, "child-mmu-request", null); custombuttons.alertSlide("MMU",1);}

Это будет работать?
Я игрался - как будто уменьшается нагрузка, но не намного.

Думаю что не уменьшится нагрузка, код это не может. Кстати себе в коде Memory Monitor я сделал выгрузку занимаемой памяти по ЛКМ который запускает портативную программку afom.exe которая работает как процесс, программку вытащил из расширения AFOM

Выделить код

Код:

   // Включить по клику программу для автоматической выгрузки памяти ....
   memoryDisplay.onclick = function(e) {
      if ( e.button ) return;
      var profileDir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("ProfD", Ci.nsILocalFile).path;                                 
      var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile);
      file.initWithPath( profileDir + "\\..\\Soft\\afom\\afom.exe" ); 
      file.launch();
   };

26-03-2014 22:50:15
Папки с afom.exe положил в папку в которой находится Firefox и его профиль - Firefox portable\Soft\afom\afom.exe

bunda1 пишет:

difabor пишет:

Я сам нашёл - там есть источник:
Вопрос к Бунде:
Я добавил в монитор такую штуку:

Выделить код

Код:

if (e.button == 1) {Services.obs.notifyObservers(null, "child-mmu-request", null); custombuttons.alertSlide("MMU",1);}

Это будет работать?
Я игрался - как будто уменьшается нагрузка, но не намного.

Думаю что не уменьшится нагрузка, код это не может. Кстати себе в коде Memory Monitor я сделал выгрузку занимаемой памяти по ЛКМ который запускает портативную программку afom.exe которая работает как процесс, программку вытащил из расширения AFOM

Выделить код

Код:

   // Включить по клику программу для автоматической выгрузки памяти ....
   memoryDisplay.onclick = function(e) {
      if ( e.button ) return;
      var profileDir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("ProfD", Ci.nsILocalFile).path;                                 
      var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile);
      file.initWithPath( profileDir + "\\..\\Soft\\afom\\afom.exe" ); 
      file.launch();
   };

26-03-2014 22:50:15
Папки с afom.exe положил в папку в которой находится Firefox и его профиль - Firefox portable\Soft\afom\afom.exe

Спасибо большое, я себе тоже скачал и посадил на СКМ. Работает.
Но что интересно - с самого начала она сильно уменьшает загрузку памяти и без кликов.
Где можно почитать об этой программе? Где этот AFOM и что это такое?

difabor пишет:

Спасибо большое, я себе тоже скачал и посадил на СКМ. Работает.
Но что интересно - с самого начала она сильно уменьшает загрузку памяти и без кликов.
Где можно почитать об этой программе? Где этот AFOM и что это такое?

AFOM | Форум Mozilla Россия
Но его автор удалил из Add-ons for Firefox

Я вот уже неделю пользуюсь этим AFOM и не нарадуюсь. Я забыл что такое 700 МВ... Ещё раз огромное спасибо, bunda1

bunda1
Привет.
В 32-й кнопка работает не правильно, не показывает при наведении мыши на счётчик потребление памяти.
Мой старый вариант вообще ничего не показывает и не реагирует на ПКМ, в 31-й работал. Я твой новый вариант сам модифицировал под себя на СКМ, т.к. ПКМ вызывало меню. В 31-й вариант работал, в 32-й перестал.
Возможно, это как-то связано с новыми параметрами кеша. В 31-й, если выставлял "browser.cache.use_new_backend", 1 (не создавать в APPLOCAL папки Cache2.xxxxx) тоже переставадо показывать кеш (только на моём профиле это глючило, на стандартном работало), а в 32-й добавился ещё и browser.cache.use_new_backend_temp.
Значит, ещё и кнопка Clear Cache / Delete flash cookie отвалилась?

Мой вариант

Выделить код

Код:

// https://forum.mozilla-russia.org/viewtopic.php?pid=644365#p644365
// https://forum.mozilla-russia.org/viewtopic.php?pid=633560#p633560

// Показывать потребление памяти в адресной строке, от 28.07.2014. ................................
(function () {
   if ( document.getElementById('memoryDisplay') ) return;
    
   // Создать в адресной строке счётчик памяти ....
   var memoryDisplay = document.createElement("statusbarpanel");
   var urlbarIcons = document.getElementById("urlbar-icons");
   urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки
   
   memoryDisplay.id = "memoryDisplay";
   memoryDisplay.label = getMemory() + ' MB';  
   self.timer = setInterval(function() {
      var mv = getMemory();
      memoryDisplay.label = mv + ' MB';
      memoryDisplay.style.background = (mv > 800) ? 'Red' : '';
   }, 2000 );  // таймер обновляет счётчик раз в 2000мс( 2 сек )
   
   // Всплывающая подсказка у счётчика отображает заполнение дискового кеша ....
   var k = 100, mb = 1024 * 1024, str = "",
   cs = Cc["@mozilla.org/network/cache-service;1"].getService(Ci.nsICacheService),
   visitor = { visitDevice: addInfo };

   function addInfo(device, info) {
      str += (str ? "\n" : "") + device[0].toUpperCase() + device.slice(1) + " Cache:  " +
      [info.totalSize, info.maximumSize].map(function(num) Math.round(k * num / mb) / k + " MB").join(" / ");
   };

   memoryDisplay.onmouseenter = function() {
     str = "";
     try { cs.visitEntries(visitor) } catch(e) {};
     memoryDisplay.tooltipText = "Л: Подробно показать потребление памяти" + "\n" +
                                 "С: Очистить кэш и удалить Flash-куки" + "\n\n"
        + ( cbu.getPrefs("browser.cache.memory.enable") || cbu.getPrefs("browser.cache.disk.enable") ? str : "Кэш отключен" );
   };
   
   
   // Получить всю занимаемую оперативную память в MB ....
   function getMemory() {            
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          } 
      catch(e) { var memory = reporterManager.resident }; // для Nightly
      
      return ( Math.round( memory/1048576 ) );
   };      
   
   
   // По клику подробно показать потребление памяти в вкладке ....
   memoryDisplay.onclick = function(e) {
      if ( e.button == 0 ) {
       var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") ); 
          
       // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
       memoryTab.addEventListener("pageshow", function c(e) {         
          this.removeEventListener( e.type, c );           

          setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);      
       }); 
       }

      // по СКМ очистить кэш и удалить Flash кукисы
      if ( e.button == 1 ) {
           // очистить кэш ....
           var cacheService = Cc["@mozilla.org/network/cache-service;1"].getService(Ci.nsICacheService);
           cacheService.evictEntries(Ci.nsICache.STORE_IN_MEMORY);
           cacheService.evictEntries(Ci.nsICache.STORE_ON_DISK);

           // удалить Flash кукисы ....
           var dir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("Home", Ci.nsIFile);
           dir.append("Application Data");
           dir.append("Macromedia");
           if ( dir.exists() ) dir.remove(true);
           if ( !dir.exists() ) dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);

           // всплывающее сообщение ....
           Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService).
           showAlertNotification("chrome://global/skin/icons/question-16.png", self.label, 'Очистил кеш и удалил Flash-куки', false, "", null, "");
           }

   };
   
     
   // Css стиль для счётчика ....
   var uri = makeURI('data:text/css,'+ encodeURIComponent('\
      #memoryDisplay { -moz-appearance: none !important; margin-left: -2px !important; margin-right: -2px !important; border: 0 !important; padding: 0 !important; text-align: right; }\
      #memoryDisplay[resetMemory] { color: red !important; }\
   '));
   const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); 


   // Удалять счётчик памяти и другие изменения ....
   addDestructor(function() { 
      sss.unregisterSheet(uri, sss.AGENT_SHEET);
      urlbarIcons.removeChild( memoryDisplay )
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
   
})();

xrun1

Выделить код

Код:

// https://forum.mozilla-russia.org/viewtopic.php?pid=644365#p644365
// https://forum.mozilla-russia.org/viewtopic.php?pid=633560#p633560

// Показывать потребление памяти в адресной строке, от 04.09.2014. ................................
(function () {
   if ( document.getElementById('memoryDisplay') ) return;
    
   // Создать в адресной строке счётчик памяти ....
   var memoryDisplay = document.createElement("statusbarpanel");
   var urlbarIcons = document.getElementById("urlbar-icons");
   urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки
   
   memoryDisplay.id = "memoryDisplay";
   memoryDisplay.label = getMemory() + ' MB';  
   self.timer = setInterval(function() {
      var mv = getMemory();
      memoryDisplay.label = mv + ' MB';
      memoryDisplay.style.background = (mv > 800) ? 'Red' : '';
   }, 2000 );  // таймер обновляет счётчик раз в 2000мс( 2 сек )
   
   
   // Всплывающая подсказка у счётчика отображает заполнение дискового кеша ....
   var title = "Л: Подробно показать потребление памяти \nС: Очистить кэш и удалить Flash-куки\n\n";
   var data = {
       memory: "Memory Cache:  ",
       disk: "Disk Cache:  ",
       offline: "Offline Cache:  "
   };
   function getSize(size) {
      if (!size) return size === 0 ? "0" : "?";
      for(var count = -1; size >= 1024; size /= 1024, count++);
      return size.toFixed(2).replace(/0+$/, "").replace(/\.$/, "") + " " + ("KMGT"[count] || "") + "B";
   }
   function setInf(tot, max, type, i) {
      var inf = getSize(tot) + " / " + getSize(max);
      var key = "browser.cache." + type + ".enable";
      if (!Services.prefs.getBoolPref(key)) inf += " (disabled)";
      memoryDisplay.tooltipText = memoryDisplay.tooltipText.replace(zws(i), inf);
   }
   function zws(ind) "\u200B\u200B\u200B".slice(0, ++ind);

   var types = Object.keys(data);
   var ttt = title + types.map(function(key, i) data[key] + zws(i)).join("\n");

   memoryDisplay.onmouseenter = function() {
       memoryDisplay.tooltipText = ttt;
       try {
           var entries = {};
           Services.cache.visitEntries({
              visitDevice: function(device, info) entries[device] = info,
              visitEntry: function() {}
           });
           types.forEach(function(type, i) {
              var info = entries[type];
              setInf(info && info.totalSize, info && info.maximumSize, type, i)
           });
       } catch(ex) {
           Services.cache2 && types.forEach(function(type, i) {
               var func = function(aEntryCount, aConsumption, aCapacity, aDiskDirectory)
                          setInf(aConsumption, aCapacity, type, i);
               var storage = Services.cache2[(type == "offline" ? "app" : type) + "CacheStorage"]({}, null);
               try { storage.asyncVisitStorage({onCacheStorageInfo: func}, false) } catch(ex) {};
           });
       }
   };
    
   
   // Получить всю занимаемую оперативную память в MB ....
   function getMemory() {            
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          } 
      catch(e) { var memory = reporterManager.resident }; // для Nightly
      
      return ( Math.round( memory/1048576 ) );
   };      
   
   
   // По клику подробно показать потребление памяти в вкладке ....
   memoryDisplay.onclick = function(e) {
      if ( e.button == 0 ) {
       var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") ); 
          
       // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
       memoryTab.addEventListener("pageshow", function c(e) {         
          this.removeEventListener( e.type, c );           

          setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);      
       }); 
       }

      // по СКМ очистить кэш и удалить Flash кукисы
      if ( e.button == 1 ) {
           // очистить кэш ....
           try { 
                Services.cache.evictEntries(Ci.nsICache.STORE_IN_MEMORY);
                Services.cache.evictEntries(Ci.nsICache.STORE_ON_DISK);
                } 
           catch(e) { Services.cache2.clear() };

           // удалить Flash кукисы ....
           var dir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("Home", Ci.nsIFile);
           dir.append("Application Data");
           dir.append("Macromedia");
           if ( dir.exists() ) dir.remove(true);
           if ( !dir.exists() ) dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);

           // всплывающее сообщение ....
           Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService).
           showAlertNotification("chrome://global/skin/icons/question-16.png", self.label, 'Очистил кеш и удалил Flash-куки', false, "", null, "");
           }

   };
   
     
   // Css стиль для счётчика ....
   var uri = makeURI('data:text/css,'+ encodeURIComponent('\
      #memoryDisplay { -moz-appearance: none !important; margin-left: -2px !important; margin-right: -2px !important; border: 0 !important; padding: 0 !important; text-align: right; }\
      #memoryDisplay[resetMemory] { color: red !important; }\
   '));
   const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); 


   // Удалять счётчик памяти и другие изменения ....
   addDestructor(function() { 
      sss.unregisterSheet(uri, sss.AGENT_SHEET);
      urlbarIcons.removeChild( memoryDisplay )
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
   
})();

:/

bunda1
Спасибо, работает. Но если дисковый кеш отключён, то в значения попадает кеш памяти.

скрытый текст
https://forum.mozilla-russia.org/uploaded/MemoryMonitor%20001.pnghttps://forum.mozilla-russia.org/uploaded/MemoryMonitor%20002.png

UPD: И в Offline Cache: 0 / 0  - берётся другое значение (только в случае, если disabled), чем в browser.cache.offline.capacity.

Не обращай внимание на моё занудство, это уже мелочи и просто для тебя информация. Память показывает в адресной строке и очищает, мне этого достаточно. :)

bunda1
А эту кнопку можно поместить на панель вкладок, просто у меня урл очень узкий.

На 31 стандартно показывало потребление памяти в районе 1Gb. Сильно не парился, но с переходом на 32 потребление памяти упало почти вдвое. Прочитал что кнопка сломалась, сегодня поменял код. Показывает в районе 256-350 Mb. Это у нас теперь такой браузер, или у меня что-то?:) Хотя мне так очень нравится.
PS: Что-то я поторопился, разогнался до 1200.

villa7 пишет:

bunda1
А эту кнопку можно поместить на панель вкладок, просто у меня урл очень узкий.

Легко :)

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-1%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20memoryTab%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22about%3Amemory%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%22about%3Amemory%22%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u043D%u0430%u0436%u0438%u043C%u0430%u0435%u0442%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%0A%20%20%20%20%20%20%20%20%20%20memoryTab.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28%20e.type%2C%20c%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20try%20%7B%20e.originalTarget.getElementById%28%27measureButton%27%29.click%28%29%20%7D%20catch%28e%29%20%7B%7D%20%7D%2C%200%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20....%0A%20%20%20%20%20%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%20....%0A%20%20%20%20%20%20%20%20%20%20var%20dir%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Ci.nsIProperties%29.get%28%22Home%22%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20%20%20%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20dir.exists%28%29%20%29%20dir.remove%28true%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21dir.exists%28%29%20%29%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20%20%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29.%0A%20%20%20%20%20%20%20%20%20%20showAlertNotification%28%27chrome%3A//global/skin/icons/information-16.png%27%2C%20%27%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%27%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u043D%u0430%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u0435%20................................%0A%28function%20%28%29%20%7B%0A%20%20%20self.label%20%3D%20getMemory%28%29%20+%20%27MB%27%3B%20%20%0A%20%20%20self.timer%20%3D%20setInterval%28function%28%29%20self.label%20%3D%20getMemory%28%29%20+%20%27MB%27%2C%202000%20%29%3B%20//%20%u0442%u0430%u0439%u043C%u0435%u0440%20%u043E%u0431%u043D%u043E%u0432%u043B%u044F%u0435%u0442%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u0440%u0430%u0437%20%u0432%202000%u043C%u0441%28%202%20%u0441%u0435%u043A%20%29%20%20%20%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u0432%20MB%20....%0A%20%20%20function%20getMemory%28%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20reporterManager%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20e%20%3D%20reporterManager.enumerateReporters%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28%20e.hasMoreElements%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20mr%20%3D%20e.getNext%28%29.QueryInterface%28Ci.nsIMemoryReporter%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self%5Bmr.path%5D%20%3D%20mr%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20memory%20%3D%20self%5B%22resident%22%5D.amount%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20catch%28e%29%20%7B%20var%20memory%20%3D%20reporterManager.resident%20%7D%3B%20//%20%u0434%u043B%u044F%20Nightly%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20return%20%28%20Math.round%28%20memory/1048576%20%29%20%29%3B%0A%20%20%20%7D%3B%20%0A%0A%20%20%20//%20%u0421%u0442%u0438%u043B%u044C%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0443%20....%0A%20%20%20var%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28%27%5C%0A%20%20%20%25button%25%20.toolbarbutton-icon%20%7B%5C%0A%20%20%20%20%20display%3A%20none%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20.toolbarbutton-text%20%7B%5C%0A%20%20%20%20%20display%3A%20-moz-box%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20%7B%5C%0A%20%20%20%20%20-moz-box-orient%3A%20horizontal%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%27.replace%28/%25button%25/g%2C%20%22%23%22%20+%20_id%29%20%29%29%3B%0A%20%20%20const%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%20%0A%20%20%20%0A%20%20%20//%20%u0423%u0434%u0430%u043B%u044F%u0442%u044C%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%20....%0A%20%20%20addDestructor%28function%28%29%20%7B%20%0A%20%20%20%20%20%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20try%20%7B%20window.clearTimeout%28%20self.timer%20%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%7D%29%3B%0A%20%20%20%20%20%0A%7D%29%28%29%3B%0A%0A%0A//%20%u0421%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0A%28function%28%29%20%7B%20%20%20%0A%20%20%20%20var%20title%20%3D%20%22%u041B%3A%20%u041F%u043E%u0434%u0440%u043E%u0431%u043D%u043E%20%u043F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%5Cn%u041F%3A%20%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash-%u043A%u0443%u043A%u0438%5Cn%5Cn%22%3B%0A%20%20%20%20var%20data%20%3D%20%7B%0A%20%20%20%20%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%20%20%20%20%7D%3B%0A%20%20%20%20function%20getSize%28size%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20%20%20%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20%20%20%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20%20%20%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20self.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0A%20%20%20%20var%20types%20%3D%20Object.keys%28data%29%3B%0A%20%20%20%20var%20ttt%20%3D%20title%20+%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%0A%20%20%20%20self.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20ttt%3B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28%7B%7D%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%7D%29%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

06-09-2014 20:12:38

xrun1 пишет:

bunda1
Спасибо, работает. Но если дисковый кеш отключён, то в значения попадает кеш памяти.


UPD: И в Offline Cache: 0 / 0  - берётся другое значение (только в случае, если disabled), чем в browser.cache.offline.capacity.

Не обращай внимание на моё занудство, это уже мелочи и просто для тебя информация. Память показывает в адресной строке и очищает, мне этого достаточно. :)

Хорошо, спасибо за информацию.

bunda1
О, спасибо, давно хотел с переходом Австралис.

bunda1
Вдогонку к этому посту.
Если отключить этот новый кеш browser.cache.use_new_backend_temp;false и перезапустить браузер, то всё отображается нормально (версия у меня 32.0.2).

скрытый текст
https://forum.mozilla-russia.org/uploaded/memory_monitor.png

Memory Monitor + функционал кнопки  Clear Cache / Delete flash cookie для FF 24.8.0 с размещением индикатора в адресной строке/панели дополнений.

При клике ЛКМ по индикатору, происходит запуск утилиты afom.exe — программа для автоматической выгрузки памяти.
Измените путь для этого файла в строке  «file.initWithPath( profileDir + "\\afom.exe" );» по умолчанию считается, что файл afom.exe лежит в корне папки профиля FF.

Очистка кэша и удаление Flash кукисов выполняется по нажатию СКМ или ПКМ (при нажатии ПКМ, вместе с уведомлением очистки кэша и кукисов вылезет стандартное меню панели.

Автор кода Bunda1 Все благодарности ему.

С размещением индикатора в адресной строке

Выделить код

Код:

//  Показывать потребление памяти в адресной строке, от 28.07.2014. ................................
(function () {
   if ( document.getElementById('memoryDisplay') ) return;
    
   // Создать в адресной строке....
    var memoryDisplay = document.createElement("statusbarpanel");
   var urlbarIcons = document.getElementById("urlbar-icons");
   urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки
   
   memoryDisplay.id = "memoryDisplay";
   memoryDisplay.label = getMemory() + ' MB';  
   self.timer = setInterval(function() { memoryDisplay.label = getMemory() + ' MB' }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек )
   
   
   // Всплывающая подсказка у счётчика отображает заполнение дискового кеша ....
   var k = 100, mb = 1024 * 1024, str = "",
   cs = Cc["@mozilla.org/network/cache-service;1"].getService(Ci.nsICacheService),
   visitor = { visitDevice: addInfo };

   function addInfo(device, info) {
      str += (str ? "\n" : "") + device[0].toUpperCase() + device.slice(1) + " Cache:  " +
      [info.totalSize, info.maximumSize].map(function(num) Math.round(k * num / mb) / k + " MB").join(" / ");
   };

   memoryDisplay.onmouseenter = function() {
     str = "";
     try { cs.visitEntries(visitor) } catch(e) {};
     memoryDisplay.tooltipText = "ЛКМ: Автоматически выгружать память" + "\n"+ "СКМ и ПКМ: Очистить кэш и удалить Flash кукисы" + "\n\n"  
        + ( cbu.getPrefs("browser.cache.memory.enable") || cbu.getPrefs("browser.cache.disk.enable") ? str : "Кэш отключен" );
   };
   
   
   // Получить всю занимаемую оперативную память в MB ....
   function getMemory() {            
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          } 
      catch(e) { var memory = reporterManager.resident }; // для Nightly
      
      return ( Math.round( memory/1048576 ) );
   };      
   
// Включить по клику программу для автоматической выгрузки памяти ....
   memoryDisplay.onclick = function(e) {
      if ( e.button == 0 ) {
           var profileDir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("ProfD", Ci.nsILocalFile).path;                                 
           var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile);
           file.initWithPath( profileDir + "\\afom.exe" ); 
           file.launch();
            
           memoryDisplay.setAttribute("resetMemory", true );
           return;
           }

      // очистить кэш ....
     try { 
         Services.cache.evictEntries(Ci.nsICache.STORE_IN_MEMORY);
         Services.cache.evictEntries(Ci.nsICache.STORE_ON_DISK);
         } 
     catch(e) { Services.cache2.clear() }

     // Удалить Flash кукиси ....
     var dir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("Home", Ci.nsIFile);
     dir.append("Application Data");
     dir.append("Macromedia");
     if ( dir.exists() ) dir.remove(true);
     if ( !dir.exists() ) dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);

     // Всплывающее сообщение ....
  Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService).
     showAlertNotification(self.image, 'Memory Monitor', 'Очистил кеш и удалил Flash кукиси', false, "", null, "");
    };
   // Css стиль для счётчика ....
   var uri = makeURI('data:text/css,'+ encodeURIComponent('\
      #memoryDisplay { -moz-appearance: none !important; margin-left: 2px !important; margin-right: -4px !important; border: 0 !important; min-width: 5.5em; text-align: right; }\
      #memoryDisplay[resetMemory] { color: BLACK !important; }\
   '));
   const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); 


   // Удалять счётчик памяти и другие изменения ....
   addDestructor(function() { 
      sss.unregisterSheet(uri, sss.AGENT_SHEET);
      urlbarIcons.removeChild( memoryDisplay )
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
})();

С размещением индикатора в панели дополнений.

Выделить код

Код:

//  Показывать потребление памяти в панели дополнений, от 28.07.2014. ................................
(function () {
   if ( document.getElementById('memoryDisplay') ) return;
    
   // Создать в панели дополнений....
   var memoryDisplay = document.createElement("statusbarpanel");
   var urlbarIcons = document.getElementById("status-bar");
   urlbarIcons.insertBefore( memoryDisplay, null); 
   
   memoryDisplay.id = "memoryDisplay";
   memoryDisplay.label = getMemory() + ' MB';  
   self.timer = setInterval(function() { memoryDisplay.label = getMemory() + ' MB' }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек )
   
   
   // Всплывающая подсказка у счётчика отображает заполнение дискового кеша ....
   var k = 100, mb = 1024 * 1024, str = "",
   cs = Cc["@mozilla.org/network/cache-service;1"].getService(Ci.nsICacheService),
   visitor = { visitDevice: addInfo };

   function addInfo(device, info) {
      str += (str ? "\n" : "") + device[0].toUpperCase() + device.slice(1) + " Cache:  " +
      [info.totalSize, info.maximumSize].map(function(num) Math.round(k * num / mb) / k + " MB").join(" / ");
   };

   memoryDisplay.onmouseenter = function() {
     str = "";
     try { cs.visitEntries(visitor) } catch(e) {};
     memoryDisplay.tooltipText = "ЛКМ: Автоматически выгружать память" + "\n"+ "СКМ и ПКМ: Очистить кэш и удалить Flash кукисы" + "\n\n"  
        + ( cbu.getPrefs("browser.cache.memory.enable") || cbu.getPrefs("browser.cache.disk.enable") ? str : "Кэш отключен" );
   };
   
   
   // Получить всю занимаемую оперативную память в MB ....
   function getMemory() {            
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          } 
      catch(e) { var memory = reporterManager.resident }; // для Nightly
      
      return ( Math.round( memory/1048576 ) );
   };      
   
// Включить по клику программу для автоматической выгрузки памяти ....
   memoryDisplay.onclick = function(e) {
      if ( e.button == 0 ) {
           var profileDir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("ProfD", Ci.nsILocalFile).path;                                 
           var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile);
           file.initWithPath( profileDir + "\\afom.exe" ); 
           file.launch();
            
           memoryDisplay.setAttribute("resetMemory", true );
           return;
           }

      // очистить кэш ....
     try { 
         Services.cache.evictEntries(Ci.nsICache.STORE_IN_MEMORY);
         Services.cache.evictEntries(Ci.nsICache.STORE_ON_DISK);
         } 
     catch(e) { Services.cache2.clear() }

     // Удалить Flash кукиси ....
     var dir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("Home", Ci.nsIFile);
     dir.append("Application Data");
     dir.append("Macromedia");
     if ( dir.exists() ) dir.remove(true);
     if ( !dir.exists() ) dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);

     // Всплывающее сообщение ....
  Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService).
     showAlertNotification(self.image, 'Memory Monitor', 'Очистил кеш и удалил Flash кукиси', false, "", null, "");
    };
   // Css стиль для счётчика ....
   var uri = makeURI('data:text/css,'+ encodeURIComponent('\
      #memoryDisplay { -moz-appearance: none !important; margin-left: 2px !important; margin-right: -4px !important; border: 0 !important; min-width: 5.5em; text-align: right; }\
      #memoryDisplay[resetMemory] { color: BLACK !important; }\
   '));
   const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); 


   // Удалять счётчик памяти и другие изменения ....
   addDestructor(function() { 
      sss.unregisterSheet(uri, sss.AGENT_SHEET);
      urlbarIcons.removeChild( memoryDisplay )
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
})();

Bunda1, добавь пожалуйста к расширенной версии кнопки — с очисткой кукисов и кэша, очистку памяти по СКМ и ПКМ
http://iceimg.com/wx2SLChu/thumb.png 
А также добавить этот функционал в кнопку Clear Cache / Delete flash cookie

PEAKTOP пишет:

Bunda1, добавь пожалуйста к расширенной версии кнопки — с очисткой кукисов и кэша, очистку памяти по СКМ и ПКМ
А также добавить этот функционал в кнопку Clear Cache / Delete flash cookie

Извини но я не знаю как запустить очистку памяти через Minimize memory usage так как у тебя в изображении.

bunda1, печально. А если мне удасться выяснить у знатоков как это делается, добавишь в кнопку?

bunda1 пишет:

не знаю как запустить очистку памяти через Minimize memory usage так как у тебя в изображении

img

Dumby пишет:

bunda1 пишет:

не знаю как запустить очистку памяти через Minimize memory usage так как у тебя в изображении

img

Не работает:

Выделить код

Код:

var gMgr = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
gMgr.minimizeMemoryUsage();

а так работает:

Выделить код

Код:

var gMgr = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
gMgr.minimizeMemoryUsage(() => updateMainAndFooter("Memory minimization completed", HIDE_FOOTER));

но показывает ошибку:

Метка времени: 25.11.2014 18:13:55
Ошибка: ReferenceError: updateMainAndFooter is not defined
Источник: chrome://custombuttons-context/content/button.js?windowId=Firefox&id=custombuttons-button67@code
Строка: 3

25-11-2014 19:17:06

PEAKTOP пишет:

bunda1, печально. А если мне удасться выяснить у знатоков как это делается, добавишь в кнопку?

Хорошо.

?

скрытый текст

Выделить код

Код:

Cc["@mozilla.org/memory-reporter-manager;1"]
    .getService(Ci.nsIMemoryReporterManager)
    .minimizeMemoryUsage(null);

Dumby
Спасибо :)

PEAKTOP пишет:

Bunda1, добавь пожалуйста к расширенной версии кнопки — с очисткой кукисов и кэша, очистку памяти по СКМ и ПКМ
А также добавить этот функционал в кнопку Clear Cache / Delete flash cookie

А стоит ли это добавлять если запуск Minimize memory usage не сильно снижает потребление памяти максимум на 30MB.

У меня

bunda1 пишет:

...не сильно снижает потребление памяти максимум на 30MB

У меня иной раз 150-200 Мб освобождает, но это в случае, когда FF отжирает больше 1,5 Гб. У меня вкладок много открыто, в среднем > 60-70.

я так понимаю!!! эта кнопа не актуальна.????
из за отсутствием "afom"???

yacornei
Тут есть, скачайте и вытащите, архиватором 7-zip, например. Memory Fox.

xrun1 пишет:

yacornei
Тут есть, скачайте и вытащите, архиватором 7-zip, например. Memory Fox.

??

Так у меня есть это расширение! стоит!!! есть ли смысл вытаскивать оттуда-отдельный элемент?

yacornei
Тогда поправить путь в кнопке
«file.initWithPath( profileDir + "\\extensions\\{E173B749-DB5B-4fd2-BA0E-94ECEA0CA55B}\\components\\afom.exe" );»
или просто поставить чистую кнопку с первой страницы топика без специфического функционала очистки, раз за это отвечает расширение.

Поначалу поставил с 1 стр,а потом дальше пошел и наткнулся на с "afom",попробую поправить путь :blush: спс!!!

Подскажите почему у меня при нажатии на лкм начинается попытка открытия новой вкладки и фф сразу падает.
Так было и на предыдущих версиях и на последней то же самое, все забывал спросить.
Может что то включить или выключить в настройках нужно?

villi311 пишет:

Подскажите почему у меня при нажатии на лкм начинается попытка открытия новой вкладки и фф сразу падает.

Не знаю в чём проблема, может удали в коде Memory Monitor этот кусок:

Выделить код

Код:

   // По клику подробно показать потребление памяти в вкладке ....
   memoryDisplay.onclick = function(e) {
      if ( e.button ) return;
       var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") ); 
          
       // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
       memoryTab.addEventListener("pageshow", function c(e) {         
          this.removeEventListener( e.type, c );           

          setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);      
       });  
   };

bunda1 пишет:

Не знаю в чём проблема, может удали в коде Memory Monitor этот кусок:

Ну тогда я так понимаю, он вообще не будет открывать в новой вкладке about:memory
Ну если не щелкать по нему он и так не открывает, я же наоборот хочу чтобы это работало.
Неужели у всех все нормально? Я уже не первый раз переустанавливал Мозиллу и всегда при нажатии она вылетала, хотя за все время несколько раз страница about:memory открывалась, но очень редко.

villi311
Если у Вас не портабельный, а обычный Firefox, ничего переставлять не надо. Создаёте новый профиль, например так
"C:\Program Files\Mozilla Firefox\firefox.exe" -ProfileManager
(список команд можно посмотреть здесь), ставите Custom Buttons и кнопку, проверяете.
Если не падает - той же командой возвращаете основной профиль по умолчанию и начинаете по одному отключать свои расширения и проверять, какое вызывает глюк.
У меня с кнопкой всё нормально.
:offtopic: Недавно обновилось расширение Redirect Cleaner, так у меня после этого стали глючить жесты в FireGestures...

villi311 пишет:

Ну тогда я так понимаю, он вообще не будет открывать в новой вкладке about:memory
Ну если не щелкать по нему он и так не открывает, я же наоборот хочу чтобы это работало.
Неужели у всех все нормально?

У меня работает, но я как-то про эту фишку  подзабыл и не пользуюсь. Открываю about:memory с помощью About: Menu. Попробуй, может и тебя устроит такой вариант и все Эбауты )) будут под рукой.

Всем спасибо. Буду пробовать.  Не так то это важно, да и давно уже падает, бог с ней. Видимо и правда какое то расширение мешает, но они у меня все отфильтрованы и поставлены только нужные.

Подниму тему. Скажите можно ли сделать так чтоб afom запускался автоматически, если потребление оперативки наберет например 500мб. спасибо.

broker пишет:

Подниму тему. Скажите можно ли сделать так чтоб afom запускался автоматически, если потребление оперативки наберет например 500мб. спасибо.

Замени:

Выделить код

Код:

   self.timer = setInterval(function() { memoryDisplay.label = getMemory() + ' MB' }, 2000 );

на:

Выделить код

Код:

   self.timer = setInterval(function() {
      var memory = getMemory();
      memoryDisplay.label = memory + ' MB';
      if ( memory > 500 ) {
           var path = "c:\\Program files\\Afom\\afom.exe";
           var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
           file.initWithPath(path);
           file.launch();
           }
   }, 2000 ); 

Только замени путь c:\\Program files\\Afom\\afom.exe на свой, но с двойными \\

bunda1
Спасибо но я не учел http://www.kolobok.us/smiles/big_standart/fool.gif, у меня портабле браузер и нужно задать относительные пути папка Soft/afom.exe находится в профиле.

broker пишет:

Спасибо но я не учел, у меня портабле браузер и нужно задать относительные пути папка Soft/afom.exe находится в профиле.

Ну тогда что то типа:

Выделить код

Код:

   self.timer = setInterval(function() {
      var memory = getMemory();
      memoryDisplay.label = memory + ' MB';
      if ( memory > 500 ) {
           var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
           file.initWithPath(file.path + "\\..\\Soft\\afom.exe"); 
           file.launch();
           }
   }, 2000 ); 

bunda1, подскажи, пожалуйста — как добиться запуска afom.exe при старте браузера?

PEAKTOP пишет:

bunda1, подскажи, пожалуйста — как добиться запуска afom.exe при старте браузера?

Ну наверно положить в инициализацию любой кнопки:

Выделить код

Код:

var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
file.initWithPath(file.path + "\\..\\Soft\\afom.exe"); 
file.launch();

bunda1
Чето у меня не робит "Проверьте, правильно ли указано имя и повторите попитку"
разобрался удалил  "\\.." из "\\Soft\\afom.exe"); Спасибо большое кнопка мастхев получилась:D.

bunda1
Скажите, можно сделать так чтоб индикатор в зависимости от занятой оперативки менял цвет?  на подобе кнопки индикатор загрузки страницы цвет меняется з зеленого до красна.

А есть ли итоговый враиант с AFOM работающий на 40 версии? Что-то у меня не выходит подружить кнопку с файлом, файл лежит в портативной версии в профиле.

free13man пишет:

А есть ли итоговый враиант с AFOM работающий на 40 версии? Что-то у меня не выходит подружить кнопку с файлом, файл лежит в портативной версии в профиле.

Если я правильно понял что требуется, то нужно положить в инициализацию любой кнопки:

Выделить код

Код:

var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
file.append("afom.exe");    
file.launch();

и тогда при старте браузера AFOM тоже заработает.

bunda1 пишет:

и тогда при старте браузера AFOM тоже заработает.

Ага спасибо, а вычищаться при заполнении памяти он ведь не будет, я так понимаю он единожды запустится и всё.

free13man пишет:

Ага спасибо, а вычищаться при заполнении памяти он ведь не будет, я так понимаю он единожды запустится и всё.

Нет, после запуска он регулярно, кажется раз в минуту вычищает память.

Мониторить бы сколько каждая отдельная вкладка памяти жрет)

emlen пишет:

Мониторить бы сколько каждая отдельная вкладка памяти жрет)

Может посмотри в about:memory :/

bunda1 пишет:

emlen пишет: Мониторить бы сколько каждая отдельная вкладка памяти жрет)Может посмотри в about:memory

Не ну там как-то не наглядненько)

Есть код, минимизирует использование памяти

скрытый текст

Выделить код

Код:

doMMU();
function doMMU() {
    let gMgr = Cc["@mozilla.org/memory-reporter-manager;1"]
        .getService(Ci.nsIMemoryReporterManager);
    Services.obs.notifyObservers(null, "child-mmu-request", null);
    gMgr.minimizeMemoryUsage(null, false, false);
}


Как перенести его в инициализацию, чтобы срабатывал по клику СКМ на индикаторе в URL и появлялось окошко о выполнении?

Я пробовал так
скрытый текст

Выделить код

Код:

// По клику очистить кэш и удалить Flash кукисы
   memoryDisplay.onclick = function(e) {
      if ( e.button == 0 ){
                try { 
                Services.cache.evictEntries(Ci.nsICache.STORE_IN_MEMORY);
                Services.cache.evictEntries(Ci.nsICache.STORE_ON_DISK);
                } 
           catch(e) { Services.cache2.clear() };
     var dir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("Home", Ci.nsIFile);
           dir.append("Application Data");
           dir.append("Macromedia");
           if ( dir.exists() ) dir.remove(true);
           if ( !dir.exists() ) dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);

// по СКМ минимизировать использование памяти
      if ( e.button == 1 ) doMMU();
function doMMU() {
    let gMgr = Cc["@mozilla.org/memory-reporter-manager;1"]
        .getService(Ci.nsIMemoryReporterManager);
    Services.obs.notifyObservers(null, "child-mmu-request", null);
    gMgr.minimizeMemoryUsage(null, false, false);
}


Но, похоже, средний клик не работает

Ultima2m
 

Выделить код

Код:

 // Настройка функций кликов мыши для Memory Monitor .....
   memoryDisplay.onclick = function(e) {
      // по ЛКМ очистить кэш и удалить Flash кукисы
      if ( e.button == 0 ){
           try { 
                Services.cache.evictEntries(Ci.nsICache.STORE_IN_MEMORY);
                Services.cache.evictEntries(Ci.nsICache.STORE_ON_DISK);
                } 
           catch(e) { Services.cache2.clear() };
           var dir = Services.dirsvc.get('Home', Ci.nsIFile);
           dir.append("Application Data");
           dir.append("Macromedia");
           dir.exists() && dir.remove(true);
           !dir.exists() && dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);
           }
      // по СКМ минимизировать использование памяти
      if ( e.button == 1 ) {
           memoryDisplay.style.color = "red";             
           Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager)
           .minimizeMemoryUsage(null);
           }
   };

bunda1,
С этим кодом кнопка просто отрубается
Кстати, я использую такой вариант

скрытый текст

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u041F%u0430%u043C%u044F%u0442%u044C%20%u0432%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0435%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADHklEQVQ4jYWTXUxTBxiG32hn62h1GLASoWoY+JNaZBtLmIMjyyKixLgEspEFkJZNHDHOAdmBU6RkUZzZsmK1+EOyOspAQ92QpjhbEEaUSmLXru4s4WLdxSgmrhCdEGSL7640ahb23L3J99w9H/AsiwBoHo9dOcu+fydvuQuAGoAKQBwWQvMiCps/TPo9WbvYBEDnatHOXTu7nnm5b1w/3NQUliRpHEDO895qnVYhAtiSrV9yfP7mBnY0Jz9am6z1W1v2/3Pj+jDn5h7yMXa7PaZUKnc9sVNWKmvv/5hBW03Cg7ffXHe343Q9f/BcYiTyG/+amefM7BxjsRgnJyc5MTHBWCxGq9X6QKlUFgAA9giaDu/pjfzmjJnBn3/h1PQsp6bvMRqdZCQS4fj4OGVZZjgcZjAYZCAQoCzLrK+vn1IoFNmo3K0ZFvfn0uH8jtFolLIsMxQKMRAIcGxsjKOjoxwZGeHQ0BB9Ph99Ph8HBgbo8XgoCEIIB4rUv3aek9jy+Rd0Op30+/0cHByk1+tlf38/3W43+/r66Ha76XL1sK2tjQ1SIz+pqWP+9u1/wlyx4u6pryT2X/GyurqaXV1d7O3tZU9PD10uF7u7u2m32ylJZlZVVbGy8gOWFO+guaGGpWVlf0DYovK+/kraja8d52mz2Wg0Gtne3s7W1laKokiTyUSj0cjSchMls4W1dSI9J1LZeXQjl7208ksAUAJQZ2VlDTscDoqiyMLCQpaX72Vp+T42NR+hubGR5ywZPLRXP5+UpGsr2Kq5PDW4mZkblhx9uoc1giCELRYLKyqMtDSZeeTQqywrKXik12++9e1nKXd+6kyfB/AyACF6xcCPihN8z0eVmpaWdnNb3luzBoM+PHBq7f1rZ1L/BrAzP1ttDXVtIoAMQ7qq4c5VA3XaFz7+z6IBpANQ5b0W1/7Qn8nlmkW1+4oSnOeb18wASDj4buKtk5/q7gFIWvA3SnbEO29f2EQA+ccPro4ceC9xCEDcqkTFMZUC2xaUAShsdSm3Lx5bNw1gVW5mnEcbv7jk/6SnWfp+fnwwJ1NtX+joXwJBlDIWFgabAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%28function%20%28%29%20%7B%0A%20%20%20if%20%28%20document.getElementById%28%27memoryDisplay%27%29%20%29%20return%3B%0A%20%20%20%20%0A%20%20%20//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u0432%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0435%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u043F%u0430%u043C%u044F%u0442%u0438%20....%0A%20%20%20var%20memoryDisplay%20%3D%20document.createElement%28%22statusbarpanel%22%29%3B%0A%20%20%20var%20urlbarIcons%20%3D%20document.getElementById%28%22urlbar-icons%22%29%3B%0A%20%20%20urlbarIcons.insertBefore%28%20memoryDisplay%2C%20urlbarIcons.lastChild%20%29%3B%20//%20%u043F%u0435%u0440%u0435%u0434%20%u043F%u0435%u0440%u0432%u043E%u0439%20%u0438%u043A%u043E%u043D%u043A%u043E%u0439%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20%20%20%20%20memoryDisplay.id%20%3D%20%22memoryDisplay%22%3B%0A%20%20%20memoryDisplay.label%20%3D%20getMemory%28%29%20+%20%27%20MB%27%3B%20%20%0A%20%20%20self.timer%20%3D%20setInterval%28function%28%29%20%7B%0A%20%20%20%20%20%20var%20mv%20%3D%20getMemory%28%29%3B%0A%20%20%20%20%20%20memoryDisplay.label%20%3D%20mv%20+%20%27%20MB%27%3B%0A%20%20%20%20%20%20memoryDisplay.style.color%20%3D%20%28mv%20%3E%20700%29%20%3F%20%27%23AB274F%27%20%3A%20%27%27%3B%0A%20%20%20%7D%2C%202000%20%29%3B%20%20//%20%u0442%u0430%u0439%u043C%u0435%u0440%20%u043E%u0431%u043D%u043E%u0432%u043B%u044F%u0435%u0442%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u0440%u0430%u0437%20%u0432%202000%u043C%u0441%28%202%20%u0441%u0435%u043A%20%29%0A%20%20%0A%20%20%0A//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%u0430%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u0442%20%u0437%u0430%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0435%20%u0434%u0438%u0441%u043A%u043E%u0432%u043E%u0433%u043E%20%u043A%u0435%u0448%u0430%20....%0A%20%20%20var%20title%20%3D%20%22%u041B%3A%20%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash-%u043A%u0443%u043A%u0438%5Cn%5Cn%22%3B%0A%20%20%20var%20data%20%3D%20%7B%0A%20%20%20%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%20%20%20%7D%3B%20%20%20%0A%20%20%20%20%20%20function%20getSize%28size%29%20%7B%0A%20%20%20%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%20%20%20%7D%0A%20%20%20function%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20%20%20%20memoryDisplay.tooltipText%20%3D%20memoryDisplay.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%20%20%20%7D%0A%20%20%20function%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0A%20%20%20var%20types%20%3D%20Object.keys%28data%29%3B%0A%20%20%20var%20ttt%20%3D%20title%20+%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%0A%20%20%20memoryDisplay.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20memoryDisplay.tooltipText%20%3D%20ttt%3B%0A%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28%7B%7D%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20%7D%3B%0A%20%20%20%20%0A%20%20%20%20%0A%20%20%20%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u0441%u044E%20%u0437%u0430%u043D%u0438%u043C%u0430%u0435%u043C%u0443%u044E%20%u043E%u043F%u0435%u0440%u0430%u0442%u0438%u0432%u043D%u0443%u044E%20%u043F%u0430%u043C%u044F%u0442%u044C%20%u0432%20MB%20....%0A%20%20%20function%20getMemory%28%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20reporterManager%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20e%20%3D%20reporterManager.enumerateReporters%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28%20e.hasMoreElements%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20mr%20%3D%20e.getNext%28%29.QueryInterface%28Ci.nsIMemoryReporter%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self%5Bmr.path%5D%20%3D%20mr%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20memory%20%3D%20self%5B%22resident%22%5D.amount%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20catch%28e%29%20%7B%20var%20memory%20%3D%20reporterManager.resident%20%7D%3B%20//%20%u0434%u043B%u044F%20Nightly%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20return%20%28%20Math.round%28%20memory/1048576%20%29%20%29%3B%0A%20%20%20%7D%3B%20%20%20%20%20%20%0A%20%20%20%0A%20%0A%20//%20%u041F%u043E%20%u043A%u043B%u0438%u043A%u0443%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u044B%0A%20%20%20memoryDisplay.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%3B%0A%20%20%20%20%20var%20dir%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Ci.nsIProperties%29.get%28%22Home%22%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20dir.exists%28%29%20%29%20dir.remove%28true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20%21dir.exists%28%29%20%29%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%0A//%20%u043F%u043E%20%u0421%u041A%u041C%20%u043C%u0438%u043D%u0438%u043C%u0438%u0437%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0438%u0441%u043F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%0A%20%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20doMMU%28%29%3B%0Afunction%20doMMU%28%29%20%7B%0A%09let%20gMgr%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D%0A%09.getService%28Ci.nsIMemoryReporterManager%29%3B%20%0A%09Services.obs.notifyObservers%28null%2C%20%22child-mmu-request%22%2C%20null%29%3B%20%0A%09gMgr.minimizeMemoryUsage%28null%2C%20false%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%0A%20%0A//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20%20%20%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29.%0A%20%20%20%20%20%20%20%20%20%20%20showAlertNotification%28%22chrome%3A//global/skin/icons/question-16.png%22%2C%20self.label%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash-%u043A%u0443%u043A%u0438%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%0A%20%20%20//%20Css%20%u0441%u0442%u0438%u043B%u044C%20%u0434%u043B%u044F%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%u0430%20....%0A%20%20%20var%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28%27%5C%0A%20%20%20%20%20%20%23memoryDisplay%20%7B%20-moz-appearance%3A%20none%20%21important%3B%20color%3A%20green%20%21important%3B%20margin-left%3A%20-4px%20%21important%3B%20margin-right%3A%20-4px%20%21important%3B%20border%3A%200%20%21important%3B%20padding%3A%200%20%21important%3B%20text-align%3A%20right%3B%20%7D%5C%0A%20%20%20%20%20%20%23memoryDisplay%5BresetMemory%5D%20%7B%20color%3A%20red%20%21important%3B%20%7D%5C%0A%20%20%20%27%29%29%3B%0A%20%20%20const%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%20%0A%20%20%20//%20%u0423%u0434%u0430%u043B%u044F%u0442%u044C%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u0438%20%u0434%u0440%u0443%u0433%u0438%u0435%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%20....%0A%20%20%20addDestructor%28function%28%29%20%7B%20%0A%20%20%20%20%20%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20urlbarIcons.removeChild%28%20memoryDisplay%20%29%0A%20%20%20%20%20%20try%20%7B%20window.clearTimeout%28%20self.timer%20%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%7D%29%3B%0A%20%20%20%0A%7D%29%28%29%3B%0A%0A%0A%0A%0A%0Athis.tooltipText%20%3D%20%22MinMemory%20%5Cn%u041B%3A%20%u041C%u0438%u043D%u0438%u043C%u0438%u0437%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0438%u0441%u043F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%5Cn%u041F%3A%20%u041C%u0435%u043D%u044E%22%3B%0A%0A%0A%20%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5BdoMMU%28%29%3B%0Afunction%20doMMU%28%29%20%7B%0A%09let%20gMgr%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D%0A%09%09.getService%28Ci.nsIMemoryReporterManager%29%3B%0A%09Services.obs.notifyObservers%28null%2C%20%22child-mmu-request%22%2C%20null%29%3B%0A%09gMgr.minimizeMemoryUsage%28null%2C%20false%2C%20false%29%3B%0A%7D%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E


P.S.Я пробовал вот так сделать
memoryDisplay.style.color = (mv < 500) ? 'green' : '';
memoryDisplay.style.color = (mv > 700) ? 'red' : '';
и иногда это срабатывало.
Можно это как-то правильно сделать?

Ultima2m
Ну тогда:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u041F%u0430%u043C%u044F%u0442%u044C%20%u0432%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0435%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADHklEQVQ4jYWTXUxTBxiG32hn62h1GLASoWoY+JNaZBtLmIMjyyKixLgEspEFkJZNHDHOAdmBU6RkUZzZsmK1+EOyOspAQ92QpjhbEEaUSmLXru4s4WLdxSgmrhCdEGSL7640ahb23L3J99w9H/AsiwBoHo9dOcu+fydvuQuAGoAKQBwWQvMiCps/TPo9WbvYBEDnatHOXTu7nnm5b1w/3NQUliRpHEDO895qnVYhAtiSrV9yfP7mBnY0Jz9am6z1W1v2/3Pj+jDn5h7yMXa7PaZUKnc9sVNWKmvv/5hBW03Cg7ffXHe343Q9f/BcYiTyG/+amefM7BxjsRgnJyc5MTHBWCxGq9X6QKlUFgAA9giaDu/pjfzmjJnBn3/h1PQsp6bvMRqdZCQS4fj4OGVZZjgcZjAYZCAQoCzLrK+vn1IoFNmo3K0ZFvfn0uH8jtFolLIsMxQKMRAIcGxsjKOjoxwZGeHQ0BB9Ph99Ph8HBgbo8XgoCEIIB4rUv3aek9jy+Rd0Op30+/0cHByk1+tlf38/3W43+/r66Ha76XL1sK2tjQ1SIz+pqWP+9u1/wlyx4u6pryT2X/GyurqaXV1d7O3tZU9PD10uF7u7u2m32ylJZlZVVbGy8gOWFO+guaGGpWVlf0DYovK+/kraja8d52mz2Wg0Gtne3s7W1laKokiTyUSj0cjSchMls4W1dSI9J1LZeXQjl7208ksAUAJQZ2VlDTscDoqiyMLCQpaX72Vp+T42NR+hubGR5ywZPLRXP5+UpGsr2Kq5PDW4mZkblhx9uoc1giCELRYLKyqMtDSZeeTQqywrKXik12++9e1nKXd+6kyfB/AyACF6xcCPihN8z0eVmpaWdnNb3luzBoM+PHBq7f1rZ1L/BrAzP1ttDXVtIoAMQ7qq4c5VA3XaFz7+z6IBpANQ5b0W1/7Qn8nlmkW1+4oSnOeb18wASDj4buKtk5/q7gFIWvA3SnbEO29f2EQA+ccPro4ceC9xCEDcqkTFMZUC2xaUAShsdSm3Lx5bNw1gVW5mnEcbv7jk/6SnWfp+fnwwJ1NtX+joXwJBlDIWFgabAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%28function%20%28%29%20%7B%0A%20%20%20if%20%28%20document.getElementById%28%27memoryDisplay%27%29%20%29%20return%3B%0A%20%20%20%20%0A%20%20%20//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u0432%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0435%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u043F%u0430%u043C%u044F%u0442%u0438%20....%0A%20%20%20var%20memoryDisplay%20%3D%20document.createElement%28%22statusbarpanel%22%29%3B%0A%20%20%20var%20urlbarIcons%20%3D%20document.getElementById%28%22urlbar-icons%22%29%3B%0A%20%20%20urlbarIcons.insertBefore%28%20memoryDisplay%2C%20urlbarIcons.lastChild%20%29%3B%20//%20%u043F%u0435%u0440%u0435%u0434%20%u043F%u0435%u0440%u0432%u043E%u0439%20%u0438%u043A%u043E%u043D%u043A%u043E%u0439%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20%20%20%20%20memoryDisplay.id%20%3D%20%22memoryDisplay%22%3B%0A%20%20%20memoryDisplay.label%20%3D%20getMemory%28%29%20+%20%27%20MB%27%3B%20%20%0A%20%20%20self.timer%20%3D%20setInterval%28function%28%29%20%7B%0A%20%20%20%20%20%20var%20mv%20%3D%20getMemory%28%29%3B%0A%20%20%20%20%20%20memoryDisplay.label%20%3D%20mv%20+%20%27%20MB%27%3B%0A%20%20%20%20%20%20memoryDisplay.style.color%20%3D%20%28mv%20%3E%20700%29%20%3F%20%27%23AB274F%27%20%3A%20%27%27%3B%0A%20%20%20%7D%2C%202000%20%29%3B%20%20//%20%u0442%u0430%u0439%u043C%u0435%u0440%20%u043E%u0431%u043D%u043E%u0432%u043B%u044F%u0435%u0442%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u0440%u0430%u0437%20%u0432%202000%u043C%u0441%28%202%20%u0441%u0435%u043A%20%29%0A%20%20%0A%20%20%0A//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%u0430%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u0442%20%u0437%u0430%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0435%20%u0434%u0438%u0441%u043A%u043E%u0432%u043E%u0433%u043E%20%u043A%u0435%u0448%u0430%20....%0A%20%20%20var%20title%20%3D%20%22%u041B%3A%20%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash-%u043A%u0443%u043A%u0438%5Cn%5Cn%22%3B%0A%20%20%20var%20data%20%3D%20%7B%0A%20%20%20%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%20%20%20%7D%3B%20%20%20%0A%20%20%20%20%20%20function%20getSize%28size%29%20%7B%0A%20%20%20%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%20%20%20%7D%0A%20%20%20function%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20%20%20%20memoryDisplay.tooltipText%20%3D%20memoryDisplay.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%20%20%20%7D%0A%20%20%20function%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0A%20%20%20var%20types%20%3D%20Object.keys%28data%29%3B%0A%20%20%20var%20ttt%20%3D%20title%20+%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%0A%20%20%20memoryDisplay.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20memoryDisplay.tooltipText%20%3D%20ttt%3B%0A%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28%7B%7D%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20%7D%3B%0A%20%20%20%20%0A%20%20%20%20%0A%20%20%20%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u0441%u044E%20%u0437%u0430%u043D%u0438%u043C%u0430%u0435%u043C%u0443%u044E%20%u043E%u043F%u0435%u0440%u0430%u0442%u0438%u0432%u043D%u0443%u044E%20%u043F%u0430%u043C%u044F%u0442%u044C%20%u0432%20MB%20....%0A%20%20%20function%20getMemory%28%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20reporterManager%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20e%20%3D%20reporterManager.enumerateReporters%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28%20e.hasMoreElements%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20mr%20%3D%20e.getNext%28%29.QueryInterface%28Ci.nsIMemoryReporter%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self%5Bmr.path%5D%20%3D%20mr%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20memory%20%3D%20self%5B%22resident%22%5D.amount%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20catch%28e%29%20%7B%20var%20memory%20%3D%20reporterManager.resident%20%7D%3B%20//%20%u0434%u043B%u044F%20Nightly%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20return%20%28%20Math.round%28%20memory/1048576%20%29%20%29%3B%0A%20%20%20%7D%3B%20%20%20%20%20%20%0A%20%20%20%0A%20%0A%20//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20Memory%20Monitor%20.....%0A%20%20%20memoryDisplay.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20%20//%20%u043F%u043E%20%u041B%u041A%u041C%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u044B%0A%20%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20var%20dir%20%3D%20Services.dirsvc.get%28%27Home%27%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20dir.exists%28%29%20%26%26%20dir.remove%28true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%21dir.exists%28%29%20%26%26%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20%20%20%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29.%0A%20%20%20%20%20%20%20%20%20%20%20showAlertNotification%28%22chrome%3A//global/skin/icons/question-16.png%22%2C%20self.label%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash-%u043A%u0443%u043A%u0438%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20//%20%u043F%u043E%20%u0421%u041A%u041C%20%u043C%u0438%u043D%u0438%u043C%u0438%u0437%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0438%u0441%u043F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%0A%20%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%0A%20%20%20%20%20%20%20%20%20%20%20.minimizeMemoryUsage%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20%20%20%0A%20%20%20//%20Css%20%u0441%u0442%u0438%u043B%u044C%20%u0434%u043B%u044F%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%u0430%20....%0A%20%20%20var%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28%27%5C%0A%20%20%20%20%20%20%23memoryDisplay%20%7B%20-moz-appearance%3A%20none%20%21important%3B%20color%3A%20green%20%21important%3B%20margin-left%3A%20-4px%20%21important%3B%20margin-right%3A%20-4px%20%21important%3B%20border%3A%200%20%21important%3B%20padding%3A%200%20%21important%3B%20text-align%3A%20right%3B%20%7D%5C%0A%20%20%20%20%20%20%23memoryDisplay%5BresetMemory%5D%20%7B%20color%3A%20red%20%21important%3B%20%7D%5C%0A%20%20%20%27%29%29%3B%0A%20%20%20const%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%20%0A%20%20%20//%20%u0423%u0434%u0430%u043B%u044F%u0442%u044C%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u0438%20%u0434%u0440%u0443%u0433%u0438%u0435%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%20....%0A%20%20%20addDestructor%28function%28%29%20%7B%20%0A%20%20%20%20%20%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20urlbarIcons.removeChild%28%20memoryDisplay%20%29%0A%20%20%20%20%20%20try%20%7B%20window.clearTimeout%28%20self.timer%20%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%7D%29%3B%0A%20%20%20%0A%7D%29%28%29%3B%0A%0A%0A%0A%0A%0A%0A%0A%20%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5BdoMMU%28%29%3B%0Afunction%20doMMU%28%29%20%7B%0A%09let%20gMgr%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D%0A%09%09.getService%28Ci.nsIMemoryReporterManager%29%3B%0A%09Services.obs.notifyObservers%28null%2C%20%22child-mmu-request%22%2C%20null%29%3B%0A%09gMgr.minimizeMemoryUsage%28null%2C%20false%2C%20false%29%3B%0A%7D%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

удали старую кнопку + рестарт.

bunda1
Спасибо, работает.
А индикацию на срабатывание СКМ  никак не подвесить?
Вариант с  memoryDisplay.style.color = "red"; не работает.
Впрочем, и так нормально.

Ultima2m пишет:

bunda1
Спасибо, работает.
А индикацию на срабатывание СКМ  никак не подвесить?
Вариант с  memoryDisplay.style.color = "red"; не работает.
Впрочем, и так нормально.

наверно у тебя конфликт с:

Выделить код

Код:

memoryDisplay.style.color = (mv < 500) ? 'green' : '';
memoryDisplay.style.color = (mv > 700) ? 'red' : '';

и

Выделить код

Код:

color: green !important;

можешь вместо memoryDisplay.style.color = "red"; поставить:

Выделить код

Код:

 Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService).
           showAlertNotification("chrome://global/skin/icons/question-16.png", self.label, 'Минимизировать использование памяти', false, "", null, "");

Кстати лучше в коде твоей кнопки заменить:

Выделить код

Код:

           Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager)
           .minimizeMemoryUsage(null);

на

Выделить код

Код:

self.interval = setInterval(function() {
   Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager)
   .minimizeMemoryUsage(null);
}, 40000 );

тогда очистка памяти будет происходить раз в 40 секунд.

Можно готовый рабочий вариант кнопки для делитантов?:)

emlen пишет:

Можно готовый рабочий вариант кнопки для делитантов?:)

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u041F%u0430%u043C%u044F%u0442%u044C%20%u0432%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0435%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADHklEQVQ4jYWTXUxTBxiG32hn62h1GLASoWoY+JNaZBtLmIMjyyKixLgEspEFkJZNHDHOAdmBU6RkUZzZsmK1+EOyOspAQ92QpjhbEEaUSmLXru4s4WLdxSgmrhCdEGSL7640ahb23L3J99w9H/AsiwBoHo9dOcu+fydvuQuAGoAKQBwWQvMiCps/TPo9WbvYBEDnatHOXTu7nnm5b1w/3NQUliRpHEDO895qnVYhAtiSrV9yfP7mBnY0Jz9am6z1W1v2/3Pj+jDn5h7yMXa7PaZUKnc9sVNWKmvv/5hBW03Cg7ffXHe343Q9f/BcYiTyG/+amefM7BxjsRgnJyc5MTHBWCxGq9X6QKlUFgAA9giaDu/pjfzmjJnBn3/h1PQsp6bvMRqdZCQS4fj4OGVZZjgcZjAYZCAQoCzLrK+vn1IoFNmo3K0ZFvfn0uH8jtFolLIsMxQKMRAIcGxsjKOjoxwZGeHQ0BB9Ph99Ph8HBgbo8XgoCEIIB4rUv3aek9jy+Rd0Op30+/0cHByk1+tlf38/3W43+/r66Ha76XL1sK2tjQ1SIz+pqWP+9u1/wlyx4u6pryT2X/GyurqaXV1d7O3tZU9PD10uF7u7u2m32ylJZlZVVbGy8gOWFO+guaGGpWVlf0DYovK+/kraja8d52mz2Wg0Gtne3s7W1laKokiTyUSj0cjSchMls4W1dSI9J1LZeXQjl7208ksAUAJQZ2VlDTscDoqiyMLCQpaX72Vp+T42NR+hubGR5ywZPLRXP5+UpGsr2Kq5PDW4mZkblhx9uoc1giCELRYLKyqMtDSZeeTQqywrKXik12++9e1nKXd+6kyfB/AyACF6xcCPihN8z0eVmpaWdnNb3luzBoM+PHBq7f1rZ1L/BrAzP1ttDXVtIoAMQ7qq4c5VA3XaFz7+z6IBpANQ5b0W1/7Qn8nlmkW1+4oSnOeb18wASDj4buKtk5/q7gFIWvA3SnbEO29f2EQA+ccPro4ceC9xCEDcqkTFMZUC2xaUAShsdSm3Lx5bNw1gVW5mnEcbv7jk/6SnWfp+fnwwJ1NtX+joXwJBlDIWFgabAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%28function%20%28%29%20%7B%0A%20%20%20if%20%28%20document.getElementById%28%27memoryDisplay%27%29%20%29%20return%3B%0A%20%20%20%20%0A%20%20%20//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u0432%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0435%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u043F%u0430%u043C%u044F%u0442%u0438%20....%0A%20%20%20var%20memoryDisplay%20%3D%20document.createElement%28%22statusbarpanel%22%29%3B%0A%20%20%20var%20urlbarIcons%20%3D%20document.getElementById%28%22urlbar-icons%22%29%3B%0A%20%20%20urlbarIcons.insertBefore%28%20memoryDisplay%2C%20urlbarIcons.lastChild%20%29%3B%20//%20%u043F%u0435%u0440%u0435%u0434%20%u043F%u0435%u0440%u0432%u043E%u0439%20%u0438%u043A%u043E%u043D%u043A%u043E%u0439%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20memoryDisplay.id%20%3D%20%22memoryDisplay%22%3B%0A%20%20%20memoryDisplay.label%20%3D%20getMemory%28%29%20+%20%27%20MB%27%3B%20%20%0A%20%20%20self.timer%20%3D%20setInterval%28function%28%29%20%7B%0A%20%20%20%20%20%20var%20mv%20%3D%20getMemory%28%29%3B%0A%20%20%20%20%20%20memoryDisplay.label%20%3D%20mv%20+%20%27%20MB%27%3B%0A%20%20%20%7D%2C%202000%20%29%3B%20%20//%20%u0442%u0430%u0439%u043C%u0435%u0440%20%u043E%u0431%u043D%u043E%u0432%u043B%u044F%u0435%u0442%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u0440%u0430%u0437%20%u0432%202000%u043C%u0441%28%202%20%u0441%u0435%u043A%20%29%0A%20%20%0A%20%20%0A//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%u0430%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u0442%20%u0437%u0430%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0435%20%u0434%u0438%u0441%u043A%u043E%u0432%u043E%u0433%u043E%20%u043A%u0435%u0448%u0430%20....%0A%20%20%20var%20title%20%3D%20%22%u041B%3A%20%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash-%u043A%u0443%u043A%u0438%5Cn%u0421%3A%20%u041C%u0438%u043D%u0438%u043C%u0438%u0437%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0438%u0441%u043F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%5Cn%5Cn%22%3B%0A%20%20%20var%20data%20%3D%20%7B%0A%20%20%20%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%20%20%20%7D%3B%20%20%20%0A%20%20%20%20%20%20function%20getSize%28size%29%20%7B%0A%20%20%20%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%20%20%20%7D%0A%20%20%20function%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20%20%20%20memoryDisplay.tooltipText%20%3D%20memoryDisplay.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%20%20%20%7D%0A%20%20%20function%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0A%20%20%20var%20types%20%3D%20Object.keys%28data%29%3B%0A%20%20%20var%20ttt%20%3D%20title%20+%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%0A%20%20%20memoryDisplay.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20memoryDisplay.tooltipText%20%3D%20ttt%3B%0A%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28%7B%7D%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u0441%u044E%20%u0437%u0430%u043D%u0438%u043C%u0430%u0435%u043C%u0443%u044E%20%u043E%u043F%u0435%u0440%u0430%u0442%u0438%u0432%u043D%u0443%u044E%20%u043F%u0430%u043C%u044F%u0442%u044C%20%u0432%20MB%20....%0A%20%20%20function%20getMemory%28%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20reporterManager%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20e%20%3D%20reporterManager.enumerateReporters%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28%20e.hasMoreElements%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20mr%20%3D%20e.getNext%28%29.QueryInterface%28Ci.nsIMemoryReporter%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self%5Bmr.path%5D%20%3D%20mr%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20memory%20%3D%20self%5B%22resident%22%5D.amount%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20catch%28e%29%20%7B%20var%20memory%20%3D%20reporterManager.resident%20%7D%3B%20//%20%u0434%u043B%u044F%20Nightly%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20return%20%28%20Math.round%28%20memory/1048576%20%29%20%29%3B%0A%20%20%20%7D%3B%20%20%20%20%20%20%0A%20%20%20%0A%20%0A%20//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20Memory%20Monitor%20.....%0A%20%20%20memoryDisplay.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20%20//%20%u043F%u043E%20%u041B%u041A%u041C%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u044B%0A%20%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20var%20dir%20%3D%20Services.dirsvc.get%28%27Home%27%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20dir.exists%28%29%20%26%26%20dir.remove%28true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%21dir.exists%28%29%20%26%26%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20%20%20%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29.%0A%20%20%20%20%20%20%20%20%20%20%20showAlertNotification%28self.image%2C%20self.label%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash-%u043A%u0443%u043A%u0438%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u043F%u043E%20%u0421%u041A%u041C%20%u043C%u0438%u043D%u0438%u043C%u0438%u0437%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0438%u0441%u043F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%0A%20%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20memoryDisplay.style.color%20%3D%20%22red%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20self.interval%20%29%20%7B%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20clearInterval%28%20self.interval%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20delete%20self.interval%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20self.interval%20%3D%20setInterval%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20.minimizeMemoryUsage%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%2C%2040000%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20%20%20%0A%20%20%20//%20Css%20%u0441%u0442%u0438%u043B%u044C%20%u0434%u043B%u044F%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%u0430%20....%0A%20%20%20var%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28%27%5C%0A%20%20%20%20%20%20%23memoryDisplay%20%7B%20-moz-appearance%3A%20none%20%21important%3B%20margin-left%3A%20-4px%20%21important%3B%20margin-right%3A%20-4px%20%21important%3B%20border%3A%200%20%21important%3B%20padding%3A%200%20%21important%3B%20text-align%3A%20right%3B%20%7D%5C%0A%20%20%20%20%20%20%23memoryDisplay%5BresetMemory%5D%20%7B%20color%3A%20red%20%21important%3B%20%7D%5C%0A%20%20%20%27%29%29%3B%0A%20%20%20const%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%20%0A%20%20%20%0A%20%20%20%0A%20%20%20//%20%u0423%u0434%u0430%u043B%u044F%u0442%u044C%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u0438%20%u0434%u0440%u0443%u0433%u0438%u0435%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%20....%0A%20%20%20addDestructor%28function%28%29%20%7B%20%0A%20%20%20%20%20%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20urlbarIcons.removeChild%28%20memoryDisplay%20%29%0A%20%20%20%20%20%20try%20%7B%20window.clearTimeout%28%20self.timer%20%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%7D%29%3B%0A%20%20%20%0A%7D%29%28%29%3B%0A%0A%0A%0A%0A%0A%0A%0A%20%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Разница с диспетчером задач на Windows 10 примерно в 50 МБ

tom911, эта цифра не критична. плюс/минус 50 Мб мы потерпим. Может быть "Диспетчер задач" не правильно считает. :)

Разные диспетчеры и менеджеры процессов потребление памяти тоже по разному показывают, у меня самое близкое значение с кодом [CB]Memory Monitor показывает AnVir Task Manager.

bunda1, подскажи, пожалуйста, я разместил Memory Monitor в строке состояния,

Выделить код

Код:

   // Создать в панели дополнений....
   var memoryDisplay = document.createElement("statusbarpanel");
   var urlbarIcons = document.getElementById("status-bar");
   urlbarIcons.insertBefore (memoryDisplay, null); 

а можно как-нибудь указать для него определенную позицию? Хочу, чтобы он отображался в определённом месте панели. Через ПКМ на любой панели -> "Изменить" его невозможно переместить. :(

А у меня с Process Hacker практически один в один показывает.

PEAKTOP пишет:

bunda1, подскажи, пожалуйста, я разместил Memory Monitor в строке состояния,

Выделить код

Код:

   // Создать в панели дополнений....
   var memoryDisplay = document.createElement("statusbarpanel");
   var urlbarIcons = document.getElementById("status-bar");
   urlbarIcons.insertBefore (memoryDisplay, null); 

а можно как-нибудь указать для него определенную позицию? Хочу, чтобы он отображался в определённом месте панели. Через ПКМ на любой панели -> "Изменить" его невозможно переместить. :(

Мне кажется, что можно панельку поместить на саму кнопку (хоть и не уверен).
А кнопку можно помещать и перетаскивать.
Но окончательный ответ должен дать сам bunda1

PEAKTOP пишет:

а можно как-нибудь указать для него определенную позицию? Хочу, чтобы он отображался в определённом месте панели. Через ПКМ на любой панели -> "Изменить" его невозможно переместить.

Вот перемещаемая кнопка [CB]Memory Monitor:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname/%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-2%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20memoryTab%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22about%3Amemory%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%22about%3Amemory%22%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u043D%u0430%u0436%u0438%u043C%u0430%u0435%u0442%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%0A%20%20%20%20%20%20%20%20%20%20memoryTab.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28%20e.type%2C%20c%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20try%20%7B%20e.originalTarget.getElementById%28%27measureButton%27%29.click%28%29%20%7D%20catch%28e%29%20%7B%7D%20%7D%2C%200%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20gShowPopup%28this%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20....%0A%20%20%20%20%20%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%20....%0A%20%20%20%20%20%20%20%20%20%20var%20dir%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Ci.nsIProperties%29.get%28%22Home%22%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20%20%20%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20dir.exists%28%29%20%29%20dir.remove%28true%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21dir.exists%28%29%20%29%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20%20%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29.%0A%20%20%20%20%20%20%20%20%20%20showAlertNotification%28%27chrome%3A//global/skin/icons/information-16.png%27%2C%20%27%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%27%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u043D%u0430%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u0435%20................................%0A%28function%20%28%29%20%7B%0A%20%20%20self.label%20%3D%20getMemory%28%29%20+%20%27MB%27%3B%20%20%0A%20%20%20self.timer%20%3D%20setInterval%28function%28%29%20self.label%20%3D%20getMemory%28%29%20+%20%27MB%27%2C%202000%20%29%3B%20//%20%u0442%u0430%u0439%u043C%u0435%u0440%20%u043E%u0431%u043D%u043E%u0432%u043B%u044F%u0435%u0442%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u0440%u0430%u0437%20%u0432%202000%u043C%u0441%28%202%20%u0441%u0435%u043A%20%29%20%20%20%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u0432%20MB%20....%0A%20%20%20function%20getMemory%28%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20reporterManager%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20e%20%3D%20reporterManager.enumerateReporters%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28%20e.hasMoreElements%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20mr%20%3D%20e.getNext%28%29.QueryInterface%28Ci.nsIMemoryReporter%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self%5Bmr.path%5D%20%3D%20mr%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20memory%20%3D%20self%5B%22resident%22%5D.amount%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20catch%28e%29%20%7B%20var%20memory%20%3D%20reporterManager.resident%20%7D%3B%20//%20%u0434%u043B%u044F%20Nightly%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20return%20%28%20Math.round%28%20memory/1048576%20%29%20%29%3B%0A%20%20%20%7D%3B%20%0A%0A%20%20%20//%20%u0421%u0442%u0438%u043B%u044C%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0443%20....%0A%20%20%20var%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28%27%5C%0A%20%20%20%25button%25%20.toolbarbutton-icon%20%7B%5C%0A%20%20%20%20%20display%3A%20none%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20.toolbarbutton-text%20%7B%5C%0A%20%20%20%20%20display%3A%20-moz-box%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20%7B%5C%0A%20%20%20%20%20-moz-box-orient%3A%20horizontal%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%27.replace%28/%25button%25/g%2C%20%22%23%22%20+%20_id%29%20%29%29%3B%0A%20%20%20const%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%20%0A%20%20%20%0A%20%20%20//%20%u0423%u0434%u0430%u043B%u044F%u0442%u044C%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%20....%0A%20%20%20addDestructor%28function%28%29%20%7B%20%0A%20%20%20%20%20%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20try%20%7B%20window.clearTimeout%28%20self.timer%20%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%7D%29%3B%0A%20%20%20%20%20%0A%7D%29%28%29%3B%0A%0A%0A//%20%u0421%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0A%28function%28%29%20%7B%20%20%20%0A%20%20%20%20var%20title%20%3D%20%22%u041B%3A%20%u041F%u043E%u0434%u0440%u043E%u0431%u043D%u043E%20%u043F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%5Cn%u0421%3A%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash-%u043A%u0443%u043A%u0438%5Cn%5Cn%22%3B%0A%20%20%20%20var%20data%20%3D%20%7B%0A%20%20%20%20%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%20%20%20%20%7D%3B%0A%20%20%20%20function%20getSize%28size%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20%20%20%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20%20%20%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20%20%20%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20self.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0A%20%20%20%20var%20types%20%3D%20Object.keys%28data%29%3B%0A%20%20%20%20var%20ttt%20%3D%20title%20+%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%0A%20%20%20%20self.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20ttt%3B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28%7B%7D%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%7D%29%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

bunda1? перемещаемая кнопка не перемещается. После захода в режим "настройка интерфейса" индикатор Memory Monitor пропадает с панели, такое же поведение было и со старой кнопкой.

P.S. После обновления кнопки FF перезапускал

PEAKTOP пишет:

bunda1? перемещаемая кнопка не перемещается. После захода в режим "настройка интерфейса" индикатор Memory Monitor пропадает с панели, такое же поведение было и со старой кнопкой.

Упс, ну тогда вот так:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E222MB%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-2%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20memoryTab%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22about%3Amemory%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%22about%3Amemory%22%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u043D%u0430%u0436%u0438%u043C%u0430%u0435%u0442%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%0A%20%20%20%20%20%20%20%20%20%20memoryTab.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28%20e.type%2C%20c%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20try%20%7B%20e.originalTarget.getElementById%28%27measureButton%27%29.click%28%29%20%7D%20catch%28e%29%20%7B%7D%20%7D%2C%200%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20gShowPopup%28this%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20....%0A%20%20%20%20%20%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%20....%0A%20%20%20%20%20%20%20%20%20%20var%20dir%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Ci.nsIProperties%29.get%28%22Home%22%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20%20%20%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20dir.exists%28%29%20%29%20dir.remove%28true%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21dir.exists%28%29%20%29%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20%20%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29.%0A%20%20%20%20%20%20%20%20%20%20showAlertNotification%28%27chrome%3A//global/skin/icons/information-16.png%27%2C%20%27%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%27%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u043D%u0430%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u0435%20................................%0A%28function%20%28%29%20%7B%0A%20%20%20self.label%20%3D%20getMemory%28%29%20+%20%27MB%27%3B%20%20%0A%20%20%20self.timer%20%3D%20setInterval%28function%28%29%20self.label%20%3D%20getMemory%28%29%20+%20%27MB%27%2C%202000%20%29%3B%20//%20%u0442%u0430%u0439%u043C%u0435%u0440%20%u043E%u0431%u043D%u043E%u0432%u043B%u044F%u0435%u0442%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u0440%u0430%u0437%20%u0432%202000%u043C%u0441%28%202%20%u0441%u0435%u043A%20%29%20%20%20%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u0432%20MB%20....%0A%20%20%20function%20getMemory%28%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20reporterManager%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20e%20%3D%20reporterManager.enumerateReporters%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28%20e.hasMoreElements%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20mr%20%3D%20e.getNext%28%29.QueryInterface%28Ci.nsIMemoryReporter%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self%5Bmr.path%5D%20%3D%20mr%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20memory%20%3D%20self%5B%22resident%22%5D.amount%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20catch%28e%29%20%7B%20var%20memory%20%3D%20reporterManager.resident%20%7D%3B%20//%20%u0434%u043B%u044F%20Nightly%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20return%20%28%20Math.round%28%20memory/1048576%20%29%20%29%3B%0A%20%20%20%7D%3B%20%0A%0A%20%20%20//%20%u0421%u0442%u0438%u043B%u044C%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0443%20....%0A%20%20%20var%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28%27%5C%0A%20%20%20%25button%25%20.toolbarbutton-icon%20%7B%5C%0A%20%20%20%20%20display%3A%20none%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20.toolbarbutton-text%20%7B%5C%0A%20%20%20%20%20display%3A%20-moz-box%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20%7B%5C%0A%20%20%20%20%20-moz-box-orient%3A%20horizontal%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%27.replace%28/%25button%25/g%2C%20%22%23%22%20+%20_id%29%20%29%29%3B%0A%20%20%20const%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%20%0A%20%20%20%0A%20%20%20//%20%u0423%u0434%u0430%u043B%u044F%u0442%u044C%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%20....%0A%20%20%20addDestructor%28function%28%29%20%7B%20%0A%20%20%20%20%20%20try%20%7B%20window.clearTimeout%28%20self.timer%20%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%7D%29%3B%0A%20%20%20%20%20%0A%7D%29%28%29%3B%0A%0A%0A//%20%u0421%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0A%28function%28%29%20%7B%20%20%20%0A%20%20%20%20var%20title%20%3D%20%22%u041B%3A%20%u041F%u043E%u0434%u0440%u043E%u0431%u043D%u043E%20%u043F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%5Cn%u0421%3A%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash-%u043A%u0443%u043A%u0438%5Cn%5Cn%22%3B%0A%20%20%20%20var%20data%20%3D%20%7B%0A%20%20%20%20%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%20%20%20%20%7D%3B%0A%20%20%20%20function%20getSize%28size%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20%20%20%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20%20%20%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20%20%20%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20self.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0A%20%20%20%20var%20types%20%3D%20Object.keys%28data%29%3B%0A%20%20%20%20var%20ttt%20%3D%20title%20+%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%0A%20%20%20%20self.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20ttt%3B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28%7B%7D%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%7D%29%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

bunda1, благодарю за кнопку. Ещё одна просьба:  а как можно сделать пустое пространство, слева и справа от индикатора?
http://2.firepic.org/2/images/2015-12/15/vr1gq80rhkzv.png 
Раньше можно было использовать в режиме редактирования интерфейса разделитель/плавающий разделитель, но в нынешних версиях FF он отсутствует. :(

P.S В не перемещаемой кнопке пустое пространство было.

tom911 пишет:

Разница с диспетчером задач на Windows 10 примерно в 50 МБ

на самом деле это очень веская разница!

Alexay пишет:

на самом деле это очень веская разница!

На самом деле разницы нет, кнопка выводит working set в мегабайтах.
Если включить столбец «память - рабочий набор» и пересчитать КБ/МБ, все совпадет.

PEAKTOP пишет:

Ещё одна просьба:  а как можно сделать пустое пространство, слева и справа от индикатора?

Поменяй:

Выделить код

Код:

-moz-box-orient: horizontal !important;\

на

Выделить код

Код:

display: -moz-box !important; min-width: 5.5em;\

и измени там 5.5 как тебе удобней.

А как можно задавать цвет текста, фона, силу текста (bold/normal), стиль текста (italic, normal), подчёркивание?
Можно ли добавить иконку? И если можно, то как?
Спасибо
PS. Я сам нашёл как этим всем управлять, кроме иконки. Как добавить иконку пока не знаю.

difabor пишет:

Как добавить иконку пока не знаю.

Удали:

Выделить код

Код:

   %button% .toolbarbutton-text {\
     display: -moz-box !important;\
   }\

bunda1 пишет:

difabor пишет:

Как добавить иконку пока не знаю.

Удали:

Выделить код

Код:

   %button% .toolbarbutton-text {\
     display: -moz-box !important;\
   }\

Спасибо.
Только у меня так не получилось.
А получилось так:
Я удалил:

Выделить код

Код:

%button% .toolbarbutton-icon {\
     display: none !important;\
   }\

и добавил:

Выделить код

Код:

var btn = this;
...
btn.image = <path_to_some_image>;

difabor пишет:

Только у меня так не получилось.

Извиняюсь, в спешке не то скопировал.

difabor пишет:

добавил:

Выделить код

Код:

var btn = this;
btn.image = <path_to_some_image>;

Это ты зря, можно было просто сменить иконку у кнопки.

bunda1 пишет:

difabor пишет:

добавил:

Выделить код

Код:

var btn = this;
btn.image = <path_to_some_image>;

Это ты зря, можно было просто сменить иконку у кнопки.

Спасибо.
Но так можно задать иконку статически, а через btn.image - динамически - задать несколько картинок и по определённым условиям выбирать нужную.
Уважаемый bunda1, безусловно, Ваш Memory Monitor не требует иконки - это я спросил для общего развития, чтобы знать как управлять.
Надеюсь, я своими вопросами не сильно Вам морочу голову :)
Офф-топ.
Есть ли возможность найти в вэб архиве тему о сниппетах, управлением файлами и т.д.?

bunda1, подскажи, пожалуйста, если я в раздел удаления кэша и кукисов добавлю вот этот код, действие "Минимизировать использование памяти" выполнится?

Выделить код

Код:

     if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { 
          e.preventDefault();  

// Минимизировать использование памяти
Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager)
           .minimizeMemoryUsage(null);

// очистить кэш ....
          try { 
              Services.cache.evictEntries(Ci.nsICache.STORE_IN_MEMORY);
              Services.cache.evictEntries(Ci.nsICache.STORE_ON_DISK);
              } 
          catch(e) { Services.cache2.clear() }

Оставшуюся часть кода  — удаление кукисов, для экономии места не стал вставлять.

Пробовал повесить "Минимизировать использование памяти" на СКМ и после выполнения выводить сообщение, уж не знаю выполняет очистка памяти или нет, но сообщение не выводит:

Выделить код

Код:

 if ( e.button == 1 ) {
Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager)
           .minimizeMemoryUsage(null);
 Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService).
          showAlertNotification('chrome://global/skin/icons/information-16.png', 'Минимизировать использование памяти', 'Минимизирование использование памяти - выполнено', false, "", null, "");
}

Ещё попутно вопрос — можно при очистке памяти выполнять не одно, а три действия —  кнопки CG, CC, Minimize Memory  Usage?
http://2.firepic.org/2/images/2015-12/17/z1dpzu4kicyv.png

PEAKTOP
Custom Buttons • View topic - Minimize memory usage

difabor пишет:

Есть ли возможность найти в вэб архиве тему о сниппетах, управлением файлами и т.д.?

Инструменты для создателей Custom Buttons | Форум Mozilla Россия

17-12-2015 20:39:05
PEAKTOP
Выполнится по e.button == 2 и по e.button == 1, но такой код освобождает память максимум до 7 МБ как и CG, CC, Minimize Memory  Usage, так что нет толка от этого.

bunda1 пишет:

difabor пишет:

Есть ли возможность найти в вэб архиве тему о сниппетах, управлением файлами и т.д.?

Инструменты для создателей Custom Buttons | Форум Mozilla Россия

Спасибо!!!

В FF44.0 у меня поломалось что-то.Так показывает, т.е нет инфы с правой стороны:

скрытый текст
http://i.imgur.com/BcO7X6ql.jpg

CB версии 0.0.5.9pre1, ставил отсюда: Custom Buttons • View topic - Custom Buttons broken on all Firefox versions higher than 43
Кнопку использую эту: №161

Уважаемый bunda1,
у меня есть небольшой вопрос:
После того, как я создал кнопку у которой и иконка и ярлык (label), как мне отличить - находится курсор на иконке или на label? Что-то типа:

Выделить код

Код:

if (e.target.id == "<ИД кнопки>" && <что-то> == "image") alert("image");
if (e.target.id == "<ИД кнопки>" && <что-то> == "label") alert("label");

Что надо подставить вместо <что-то>?

difabor пишет:

После того, как я создал кнопку у которой и иконка и ярлык (label), как мне отличить - находится курсор на иконке или на label?

Я проверил - обработчики не видят иконку или label, тут наверно нужно отдельно создать label - document.createElement("label") и поставить у кнопки. Не нужны такие сложности.

bunda1 пишет:

difabor пишет:

После того, как я создал кнопку у которой и иконка и ярлык (label), как мне отличить - находится курсор на иконке или на label?

Я проверил - обработчики не видят иконку или label, тут наверно нужно отдельно создать label - document.createElement("label") и поставить у кнопки. Не нужны такие сложности.

Да нет, мне - чтобы понять...
Спасибо большое!

Garider пишет:

В FF44.0 у меня поломалось что-то.Так показывает, т.е нет инфы с правой стороны:
Кнопку использую эту: №161

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u041F%u0430%u043C%u044F%u0442%u044C%20%u0432%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0435%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADHklEQVQ4jYWTXUxTBxiG32hn62h1GLASoWoY+JNaZBtLmIMjyyKixLgEspEFkJZNHDHOAdmBU6RkUZzZsmK1+EOyOspAQ92QpjhbEEaUSmLXru4s4WLdxSgmrhCdEGSL7640ahb23L3J99w9H/AsiwBoHo9dOcu+fydvuQuAGoAKQBwWQvMiCps/TPo9WbvYBEDnatHOXTu7nnm5b1w/3NQUliRpHEDO895qnVYhAtiSrV9yfP7mBnY0Jz9am6z1W1v2/3Pj+jDn5h7yMXa7PaZUKnc9sVNWKmvv/5hBW03Cg7ffXHe343Q9f/BcYiTyG/+amefM7BxjsRgnJyc5MTHBWCxGq9X6QKlUFgAA9giaDu/pjfzmjJnBn3/h1PQsp6bvMRqdZCQS4fj4OGVZZjgcZjAYZCAQoCzLrK+vn1IoFNmo3K0ZFvfn0uH8jtFolLIsMxQKMRAIcGxsjKOjoxwZGeHQ0BB9Ph99Ph8HBgbo8XgoCEIIB4rUv3aek9jy+Rd0Op30+/0cHByk1+tlf38/3W43+/r66Ha76XL1sK2tjQ1SIz+pqWP+9u1/wlyx4u6pryT2X/GyurqaXV1d7O3tZU9PD10uF7u7u2m32ylJZlZVVbGy8gOWFO+guaGGpWVlf0DYovK+/kraja8d52mz2Wg0Gtne3s7W1laKokiTyUSj0cjSchMls4W1dSI9J1LZeXQjl7208ksAUAJQZ2VlDTscDoqiyMLCQpaX72Vp+T42NR+hubGR5ywZPLRXP5+UpGsr2Kq5PDW4mZkblhx9uoc1giCELRYLKyqMtDSZeeTQqywrKXik12++9e1nKXd+6kyfB/AyACF6xcCPihN8z0eVmpaWdnNb3luzBoM+PHBq7f1rZ1L/BrAzP1ttDXVtIoAMQ7qq4c5VA3XaFz7+z6IBpANQ5b0W1/7Qn8nlmkW1+4oSnOeb18wASDj4buKtk5/q7gFIWvA3SnbEO29f2EQA+ccPro4ceC9xCEDcqkTFMZUC2xaUAShsdSm3Lx5bNw1gVW5mnEcbv7jk/6SnWfp+fnwwJ1NtX+joXwJBlDIWFgabAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%28function%20%28%29%20%7B%0A%20%20%20if%20%28%20document.getElementById%28%27memoryDisplay%27%29%20%29%20return%3B%0A%20%20%20%20%0A%20%20%20//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u0432%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0435%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u043F%u0430%u043C%u044F%u0442%u0438%20....%0A%20%20%20var%20memoryDisplay%20%3D%20document.createElement%28%22statusbarpanel%22%29%3B%0A%20%20%20var%20urlbarIcons%20%3D%20document.getElementById%28%22urlbar-icons%22%29%3B%0A%20%20%20urlbarIcons.insertBefore%28%20memoryDisplay%2C%20urlbarIcons.lastChild%20%29%3B%20//%20%u043F%u0435%u0440%u0435%u0434%20%u043F%u0435%u0440%u0432%u043E%u0439%20%u0438%u043A%u043E%u043D%u043A%u043E%u0439%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20memoryDisplay.id%20%3D%20%22memoryDisplay%22%3B%0A%20%20%20memoryDisplay.label%20%3D%20getMemory%28%29%20+%20%27%20MB%27%3B%20%20%0A%20%20%20self.timer%20%3D%20setInterval%28function%28%29%20%7B%0A%20%20%20%20%20%20var%20mv%20%3D%20getMemory%28%29%3B%0A%20%20%20%20%20%20memoryDisplay.label%20%3D%20mv%20+%20%27%20MB%27%3B%0A%20%20%20%7D%2C%202000%20%29%3B%20%20//%20%u0442%u0430%u0439%u043C%u0435%u0440%20%u043E%u0431%u043D%u043E%u0432%u043B%u044F%u0435%u0442%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u0440%u0430%u0437%20%u0432%202000%u043C%u0441%28%202%20%u0441%u0435%u043A%20%29%0A%20%20%0A%20%20%0A//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%u0430%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u0442%20%u0437%u0430%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0435%20%u0434%u0438%u0441%u043A%u043E%u0432%u043E%u0433%u043E%20%u043A%u0435%u0448%u0430%20....%0A%20%20%20var%20title%20%3D%20%22%u041B%3A%20%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash-%u043A%u0443%u043A%u0438%5Cn%u0421%3A%20%u041C%u0438%u043D%u0438%u043C%u0438%u0437%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0438%u0441%u043F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%5Cn%5Cn%22%3B%0A%20%20%20var%20data%20%3D%20%7B%0A%20%20%20%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%20%20%20%7D%3B%20%20%20%0A%20%20%20%20%20%20function%20getSize%28size%29%20%7B%0A%20%20%20%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%20%20%20%7D%0A%20%20%20function%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20%20%20%20memoryDisplay.tooltipText%20%3D%20memoryDisplay.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%20%20%20%7D%0A%20%20%20function%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0A%20%20%20var%20types%20%3D%20Object.keys%28data%29%3B%0A%20%20%20var%20ttt%20%3D%20title%20+%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%20%20%20%0A%20%20%20var%20context%20%3D%20Cu.import%28%22resource%3A//gre/modules/LoadContextInfo.jsm%22%2C%20%7B%7D%29.LoadContextInfo.default%3B%0A%20%20%20memoryDisplay.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20memoryDisplay.tooltipText%20%3D%20ttt%3B%0A%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28context%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u0441%u044E%20%u0437%u0430%u043D%u0438%u043C%u0430%u0435%u043C%u0443%u044E%20%u043E%u043F%u0435%u0440%u0430%u0442%u0438%u0432%u043D%u0443%u044E%20%u043F%u0430%u043C%u044F%u0442%u044C%20%u0432%20MB%20....%0A%20%20%20function%20getMemory%28%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20reporterManager%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20e%20%3D%20reporterManager.enumerateReporters%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28%20e.hasMoreElements%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20mr%20%3D%20e.getNext%28%29.QueryInterface%28Ci.nsIMemoryReporter%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self%5Bmr.path%5D%20%3D%20mr%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20memory%20%3D%20self%5B%22resident%22%5D.amount%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20catch%28e%29%20%7B%20var%20memory%20%3D%20reporterManager.resident%20%7D%3B%20//%20%u0434%u043B%u044F%20Nightly%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20return%20%28%20Math.round%28%20memory/1048576%20%29%20%29%3B%0A%20%20%20%7D%3B%20%20%20%20%20%20%0A%20%20%20%0A%20%0A%20//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20Memory%20Monitor%20.....%0A%20%20%20memoryDisplay.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20%20//%20%u043F%u043E%20%u041B%u041A%u041C%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u044B%0A%20%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20var%20dir%20%3D%20Services.dirsvc.get%28%27Home%27%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20dir.exists%28%29%20%26%26%20dir.remove%28true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%21dir.exists%28%29%20%26%26%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20%20%20%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29.%0A%20%20%20%20%20%20%20%20%20%20%20showAlertNotification%28self.image%2C%20self.label%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash-%u043A%u0443%u043A%u0438%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u043F%u043E%20%u0421%u041A%u041C%20%u043C%u0438%u043D%u0438%u043C%u0438%u0437%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0438%u0441%u043F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%0A%20%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20memoryDisplay.style.color%20%3D%20%22red%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20self.interval%20%29%20%7B%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20clearInterval%28%20self.interval%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20delete%20self.interval%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20self.interval%20%3D%20setInterval%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20.minimizeMemoryUsage%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%2C%2040000%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20%20%20%0A%20%20%20//%20Css%20%u0441%u0442%u0438%u043B%u044C%20%u0434%u043B%u044F%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%u0430%20....%0A%20%20%20var%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28%27%5C%0A%20%20%20%20%20%20%23memoryDisplay%20%7B%20-moz-appearance%3A%20none%20%21important%3B%20margin-left%3A%20-4px%20%21important%3B%20margin-right%3A%20-4px%20%21important%3B%20border%3A%200%20%21important%3B%20padding%3A%200%20%21important%3B%20text-align%3A%20right%3B%20%7D%5C%0A%20%20%20%20%20%20%23memoryDisplay%5BresetMemory%5D%20%7B%20color%3A%20red%20%21important%3B%20%7D%5C%0A%20%20%20%27%29%29%3B%0A%20%20%20const%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%20%0A%20%20%20%0A%20%20%20%0A%20%20%20//%20%u0423%u0434%u0430%u043B%u044F%u0442%u044C%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u0438%20%u0434%u0440%u0443%u0433%u0438%u0435%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%20....%0A%20%20%20addDestructor%28function%28%29%20%7B%20%0A%20%20%20%20%20%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20urlbarIcons.removeChild%28%20memoryDisplay%20%29%0A%20%20%20%20%20%20try%20%7B%20window.clearTimeout%28%20self.timer%20%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%7D%29%3B%0A%20%20%20%0A%7D%29%28%29%3B%0A%0A%0A%0A%0A%0A%0A%0A%20%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

bunda1
Спасибо! Теперь норм.

bunda1, можно ли исправить отображение размера кэш в таком варианте? :blush:

скрытый текст
// Показывать потребление памяти в адресной строке, от 04.09.2014. ................................
(function () {
   if ( document.getElementById('memoryDisplay') ) return;
   
   // Создать в адресной строке счётчик памяти ....
   var memoryDisplay = document.createElement("statusbarpanel");
   var urlbarIcons = document.getElementById("urlbar-icons");
   urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки
   
   memoryDisplay.id = "memoryDisplay";
   memoryDisplay.label = getMemory() + ' MB'; 
   self.timer = setInterval(function() {
      var mv = getMemory();
      memoryDisplay.label = mv + ' MB';
      memoryDisplay.style.background = (mv > 800) ? 'Red' : '';
   }, 2000 );  // таймер обновляет счётчик раз в 2000мс( 2 сек )
   
   
   // Всплывающая подсказка у счётчика отображает заполнение дискового кеша ....
   var title = "Л: Подробно показать потребление памяти \nС: Очистить кэш и удалить Flash-куки\n\n";
   var data = {
       memory: "Memory Cache:  ",
       disk: "Disk Cache:  ",
       offline: "Offline Cache:  "
   };
   function getSize(size) {
      if (!size) return size === 0 ? "0" : "?";
      for(var count = -1; size >= 1024; size /= 1024, count++);
      return size.toFixed(2).replace(/0+$/, "").replace(/\.$/, "") + " " + ("KMGT"[count] || "") + "B";
   }
   function setInf(tot, max, type, i) {
      var inf = getSize(tot) + " / " + getSize(max);
      var key = "browser.cache." + type + ".enable";
      if (!Services.prefs.getBoolPref(key)) inf += " (disabled)";
      memoryDisplay.tooltipText = memoryDisplay.tooltipText.replace(zws(i), inf);
   }
   function zws(ind) "\u200B\u200B\u200B".slice(0, ++ind);

   var types = Object.keys(data);
   var ttt = title + types.map(function(key, i) data[key] + zws(i)).join("\n");

   memoryDisplay.onmouseenter = function() {
       memoryDisplay.tooltipText = ttt;
       try {
           var entries = {};
           Services.cache.visitEntries({
              visitDevice: function(device, info) entries[device] = info,
              visitEntry: function() {}
           });
           types.forEach(function(type, i) {
              var info = entries[type];
              setInf(info && info.totalSize, info && info.maximumSize, type, i)
           });
       } catch(ex) {
           Services.cache2 && types.forEach(function(type, i) {
               var func = function(aEntryCount, aConsumption, aCapacity, aDiskDirectory)
                          setInf(aConsumption, aCapacity, type, i);
               var storage = Services.cache2[(type == "offline" ? "app" : type) + "CacheStorage"]({}, null);
               try { storage.asyncVisitStorage({onCacheStorageInfo: func}, false) } catch(ex) {};
           });
       }
   };
   
   
   // Получить всю занимаемую оперативную память в MB ....
   function getMemory() {           
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          }
      catch(e) { var memory = reporterManager.resident }; // для Nightly
     
      return ( Math.round( memory/1048576 ) );
   };     
   
   
   // По клику подробно показать потребление памяти в вкладке ....
   memoryDisplay.onclick = function(e) {
      if ( e.button == 0 ) {
       var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") );
         
       // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
       memoryTab.addEventListener("pageshow", function c(e) {         
          this.removeEventListener( e.type, c );           

          setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);     
       });
       }

      // по СКМ очистить кэш и удалить Flash кукисы
      if ( e.button == 1 ) {
           // очистить кэш ....
           try {
                Services.cache.evictEntries(Ci.nsICache.STORE_IN_MEMORY);
                Services.cache.evictEntries(Ci.nsICache.STORE_ON_DISK);
                }
           catch(e) { Services.cache2.clear() };

           // удалить Flash кукисы ....
           var dir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("Home", Ci.nsIFile);
           dir.append("Application Data");
           dir.append("Macromedia");
           if ( dir.exists() ) dir.remove(true);
           if ( !dir.exists() ) dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);

           // всплывающее сообщение ....
           Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService).
           showAlertNotification("chrome://global/skin/icons/question-16.png", self.label, 'Очистил кеш и удалил Flash-куки', false, "", null, "");
           }

   };
   
     
   // Css стиль для счётчика ....
   var uri = makeURI('data:text/css,'+ encodeURIComponent('\
      #memoryDisplay { -moz-appearance: none !important; margin-left: -3px !important; margin-right: -5px !important; border: 0 !important; padding: 0 !important; text-align: right; }\
      #memoryDisplay[resetMemory] { color: red !important; }\
   '));
   const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);


   // Удалять счётчик памяти и другие изменения ....
   addDestructor(function() {
      sss.unregisterSheet(uri, sss.AGENT_SHEET);
      urlbarIcons.removeChild( memoryDisplay )
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
   
})();

Спасибо...

Saenko пишет:

bunda1, можно ли исправить отображение размера кэш в таком варианте?

Выделить код

Код:

// Показывать потребление памяти в адресной строке, от 04.09.2014. ................................
(function () {
   if ( document.getElementById('memoryDisplay') ) return;
   
   // Создать в адресной строке счётчик памяти ....
   var memoryDisplay = document.createElement("statusbarpanel");
   var urlbarIcons = document.getElementById("urlbar-icons");
   urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки
   
   memoryDisplay.id = "memoryDisplay";
   memoryDisplay.label = getMemory() + ' MB'; 
   self.timer = setInterval(function() {
      var mv = getMemory();
      memoryDisplay.label = mv + ' MB';
      memoryDisplay.style.background = (mv > 800) ? 'Red' : '';
   }, 2000 );  // таймер обновляет счётчик раз в 2000мс( 2 сек )
   
   
// Всплывающая подсказка у счётчика отображает заполнение дискового кеша ....
   var title = "Л: Очистить кэш и удалить Flash-куки\nС: Минимизировать использование памяти\n\n";
   var data = {
       memory: "Memory Cache:  ",
       disk: "Disk Cache:  ",
       offline: "Offline Cache:  "
   };   
      function getSize(size) {
      if (!size) return size === 0 ? "0" : "?";
      for(var count = -1; size >= 1024; size /= 1024, count++);
      return size.toFixed(2).replace(/0+$/, "").replace(/\.$/, "") + " " + ("KMGT"[count] || "") + "B";
   }
   function setInf(tot, max, type, i) {
      var inf = getSize(tot) + " / " + getSize(max);
      var key = "browser.cache." + type + ".enable";
      if (!Services.prefs.getBoolPref(key)) inf += " (disabled)";
      memoryDisplay.tooltipText = memoryDisplay.tooltipText.replace(zws(i), inf);
   }
   function zws(ind) "\u200B\u200B\u200B".slice(0, ++ind);

   var types = Object.keys(data);
   var ttt = title + types.map(function(key, i) data[key] + zws(i)).join("\n");
   
   var context = Cu.import("resource://gre/modules/LoadContextInfo.jsm", {}).LoadContextInfo.default;
   memoryDisplay.onmouseenter = function() {
       memoryDisplay.tooltipText = ttt;
       try {
           var entries = {};
           Services.cache.visitEntries({
              visitDevice: function(device, info) entries[device] = info,
              visitEntry: function() {}
           });
           types.forEach(function(type, i) {
              var info = entries[type];
              setInf(info && info.totalSize, info && info.maximumSize, type, i)
           });
       } catch(ex) {
           Services.cache2 && types.forEach(function(type, i) {
               var func = function(aEntryCount, aConsumption, aCapacity, aDiskDirectory)
                          setInf(aConsumption, aCapacity, type, i);
               var storage = Services.cache2[(type == "offline" ? "app" : type) + "CacheStorage"](context, null);
               try { storage.asyncVisitStorage({onCacheStorageInfo: func}, false) } catch(ex) {};
           });
       }
   };
   
   
   // Получить всю занимаемую оперативную память в MB ....
   function getMemory() {           
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          }
      catch(e) { var memory = reporterManager.resident }; // для Nightly
     
      return ( Math.round( memory/1048576 ) );
   };     
   
   
   // По клику подробно показать потребление памяти в вкладке ....
   memoryDisplay.onclick = function(e) {
      if ( e.button == 0 ) {
       var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") );
         
       // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
       memoryTab.addEventListener("pageshow", function c(e) {         
          this.removeEventListener( e.type, c );           

          setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);     
       });
       }

      // по СКМ очистить кэш и удалить Flash кукисы
      if ( e.button == 1 ) {
           // очистить кэш ....
           try {
                Services.cache.evictEntries(Ci.nsICache.STORE_IN_MEMORY);
                Services.cache.evictEntries(Ci.nsICache.STORE_ON_DISK);
                }
           catch(e) { Services.cache2.clear() };

           // удалить Flash кукисы ....
           var dir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("Home", Ci.nsIFile);
           dir.append("Application Data");
           dir.append("Macromedia");
           if ( dir.exists() ) dir.remove(true);
           if ( !dir.exists() ) dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);

           // всплывающее сообщение ....
           Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService).
           showAlertNotification("chrome://global/skin/icons/question-16.png", self.label, 'Очистил кеш и удалил Flash-куки', false, "", null, "");
           }

   };
   
     
   // Css стиль для счётчика ....
   var uri = makeURI('data:text/css,'+ encodeURIComponent('\
      #memoryDisplay { -moz-appearance: none !important; margin-left: -3px !important; margin-right: -5px !important; border: 0 !important; padding: 0 !important; text-align: right; }\
      #memoryDisplay[resetMemory] { color: red !important; }\
   '));
   const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);


   // Удалять счётчик памяти и другие изменения ....
   addDestructor(function() {
      sss.unregisterSheet(uri, sss.AGENT_SHEET);
      urlbarIcons.removeChild( memoryDisplay )
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
   
})();

bunda1, премного благодарен..! :beer: Чуток переписал обозначения действий для Л: и С: ... Всё как и хотелось...

bunda1
Я тут новенький, прочитал не все. Но понял так, что я выпаду из общего хора.

В принципе размер потребляемой памяти показывают многие проги.
По опыту с хромоногами знаю - мониторинг сам по себе несоразмерно (по сравнению со спец прогами) жрет и памяти и процессор.

Хотелось бы другого: Не общего на всю прогу потребления ресурсов, а по вкладкам.
Допустим загрузил 20 вкладок, все тип-топ, потребление в норме. Загрузил еще одну, а она жрет как голодная крыса. И я об этом ни сном ни духом.
А делов то - знать какая пакость это делает и закрыть ее в таком случае. Нечего ей висеть.

Если получится такое сотворить возможны два варианта:
Мониторинг (очень редкий, к примеру раз в минуту) и второй вариант просто инфа по требованию.
Вот тогда была бы реальная польза от фичи. Работаешь себе и вдруг бац - сообщение: вкладка жрет там больше нормы в 5 раз. Ок. Я знаю. Я конечно закрою.
Как итог браузер жил бы без перезапуска долго-долго. Что удобно.

Ну и к тому же знание сила: такая информация могла бы сподвигнуть некоторых разработчиков на конкретные шаги. А так ведь не знают просто.

Надеюсь что вас простимулирует не только решение не тривиальной задачки, но и сам факт что эта фича будет всегда востребована как для отладки самой проги так и просто для ее разумного использования.

Если в лоб задачу решить невозможно, можно еще попробовать простую логическую вещь: При открытии вкладки всегда после загрузки сверять потребление памяти до и после, хранить эту информацию и выдавать по требованию.
В итоге я буду видеть какая вкладка требует закрытия. Мониторинг вести опять же редко, но при загрузке вкладки - обязательно.

Такой подход тоже мог бы решить проблему. Ну а нюансы (которые безусловно появятся) типа одновременной загрузки нескольких вкладок разрулить потом.

DmFedorov

Не общего на всю прогу потребления ресурсов, а по вкладкам.

Tab Memory Usage :: Add-ons for Firefox

DmFedorov пишет:

Не общего на всю прогу потребления ресурсов, а по вкладкам.

Как тут написал oleg.sgh уже есть такое расширение.

bunda1
Да, только оно фризит и скроллинг и открытие вкладок. Так как напихали в него не пойми что, я так думаю. Надо то, просто отображение потребляемой памяти в подсказках и миниатюрах вкладок, а не тупые графики и постоянный мониторинг уже открытых вкладок. Зачем мониторить открытую вкладку вообще не понятно!? Открыл вкладку - получил размер, обновил - получил еще раз.

Упс. Извиняюсь, не о том расширении писал. Был под впечатлением беспонтовости и неоптимизированности вот этого шедевра - Tab Data (+Memory usage)

Однако, все же неплохо было бы увидеть кнопку с функционалом описанным выше.

отображение потребляемой памяти в подсказках и миниатюрах вкладок

Кнопка пропала с панели адреса, куда копнуть, чтобы найти причину?

sthprog пишет:

Кнопка пропала с панели адреса, куда копнуть, чтобы найти причину?

24-01-2017 15:55:57

bunda1 пишет:

PEAKTOP пишет:

bunda1? перемещаемая кнопка не перемещается. После захода в режим "настройка интерфейса" индикатор Memory Monitor пропадает с панели, такое же поведение было и со старой кнопкой.

Упс, ну тогда вот так:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E222MB%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-2%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20memoryTab%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22about%3Amemory%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%22about%3Amemory%22%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u043D%u0430%u0436%u0438%u043C%u0430%u0435%u0442%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%0A%20%20%20%20%20%20%20%20%20%20memoryTab.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28%20e.type%2C%20c%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20try%20%7B%20e.originalTarget.getElementById%28%27measureButton%27%29.click%28%29%20%7D%20catch%28e%29%20%7B%7D%20%7D%2C%200%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20gShowPopup%28this%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20....%0A%20%20%20%20%20%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%20....%0A%20%20%20%20%20%20%20%20%20%20var%20dir%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Ci.nsIProperties%29.get%28%22Home%22%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20%20%20%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20dir.exists%28%29%20%29%20dir.remove%28true%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21dir.exists%28%29%20%29%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20%20%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29.%0A%20%20%20%20%20%20%20%20%20%20showAlertNotification%28%27chrome%3A//global/skin/icons/information-16.png%27%2C%20%27%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%27%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u043D%u0430%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u0435%20................................%0A%28function%20%28%29%20%7B%0A%20%20%20self.label%20%3D%20getMemory%28%29%20+%20%27MB%27%3B%20%20%0A%20%20%20self.timer%20%3D%20setInterval%28function%28%29%20self.label%20%3D%20getMemory%28%29%20+%20%27MB%27%2C%202000%20%29%3B%20//%20%u0442%u0430%u0439%u043C%u0435%u0440%20%u043E%u0431%u043D%u043E%u0432%u043B%u044F%u0435%u0442%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u0440%u0430%u0437%20%u0432%202000%u043C%u0441%28%202%20%u0441%u0435%u043A%20%29%20%20%20%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u0432%20MB%20....%0A%20%20%20function%20getMemory%28%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20reporterManager%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20e%20%3D%20reporterManager.enumerateReporters%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28%20e.hasMoreElements%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20mr%20%3D%20e.getNext%28%29.QueryInterface%28Ci.nsIMemoryReporter%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self%5Bmr.path%5D%20%3D%20mr%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20memory%20%3D%20self%5B%22resident%22%5D.amount%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20catch%28e%29%20%7B%20var%20memory%20%3D%20reporterManager.resident%20%7D%3B%20//%20%u0434%u043B%u044F%20Nightly%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20return%20%28%20Math.round%28%20memory/1048576%20%29%20%29%3B%0A%20%20%20%7D%3B%20%0A%0A%20%20%20//%20%u0421%u0442%u0438%u043B%u044C%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0443%20....%0A%20%20%20var%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28%27%5C%0A%20%20%20%25button%25%20.toolbarbutton-icon%20%7B%5C%0A%20%20%20%20%20display%3A%20none%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20.toolbarbutton-text%20%7B%5C%0A%20%20%20%20%20display%3A%20-moz-box%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20%7B%5C%0A%20%20%20%20%20-moz-box-orient%3A%20horizontal%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%27.replace%28/%25button%25/g%2C%20%22%23%22%20+%20_id%29%20%29%29%3B%0A%20%20%20const%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%20%0A%20%20%20%0A%20%20%20//%20%u0423%u0434%u0430%u043B%u044F%u0442%u044C%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%20....%0A%20%20%20addDestructor%28function%28%29%20%7B%20%0A%20%20%20%20%20%20try%20%7B%20window.clearTimeout%28%20self.timer%20%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%7D%29%3B%0A%20%20%20%20%20%0A%7D%29%28%29%3B%0A%0A%0A//%20%u0421%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0A%28function%28%29%20%7B%20%20%20%0A%20%20%20%20var%20title%20%3D%20%22%u041B%3A%20%u041F%u043E%u0434%u0440%u043E%u0431%u043D%u043E%20%u043F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%5Cn%u0421%3A%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash-%u043A%u0443%u043A%u0438%5Cn%5Cn%22%3B%0A%20%20%20%20var%20data%20%3D%20%7B%0A%20%20%20%20%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%20%20%20%20%7D%3B%0A%20%20%20%20function%20getSize%28size%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20%20%20%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20%20%20%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20%20%20%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20self.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0A%20%20%20%20var%20types%20%3D%20Object.keys%28data%29%3B%0A%20%20%20%20var%20ttt%20%3D%20title%20+%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%0A%20%20%20%20self.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20ttt%3B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28%7B%7D%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%7D%29%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

а тут можно тоже сделать фикс отоброжения кеша и т д ?

mahtanoronra пишет:

а тут можно тоже сделать фикс отоброжения кеша и т д ?

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E222MB%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-2%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20memoryTab%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22about%3Amemory%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%22about%3Amemory%22%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u043D%u0430%u0436%u0438%u043C%u0430%u0435%u0442%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%0A%20%20%20%20%20%20%20%20%20%20memoryTab.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28%20e.type%2C%20c%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20try%20%7B%20e.originalTarget.getElementById%28%27measureButton%27%29.click%28%29%20%7D%20catch%28e%29%20%7B%7D%20%7D%2C%200%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20gShowPopup%28this%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20....%0A%20%20%20%20%20%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%20....%0A%20%20%20%20%20%20%20%20%20%20var%20dir%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Ci.nsIProperties%29.get%28%22Home%22%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20%20%20%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20dir.exists%28%29%20%29%20dir.remove%28true%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21dir.exists%28%29%20%29%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20%20%20%20%20%20var%20alertService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0A%20%20%20%20%20%20%20%20%20%20alertService.showAlertNotification%28%27chrome%3A//global/skin/icons/information-16.png%27%2C%20%27%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%27%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20alertService.closeAlert%28%29%20%7D%2C%202500%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u043D%u0430%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u0435%20................................%0A%28function%20%28%29%20%7B%0A%20%20%20self.label%20%3D%20getMemory%28%29%20+%20%27MB%27%3B%20%20%0A%20%20%20self.timer%20%3D%20setInterval%28function%28%29%20self.label%20%3D%20getMemory%28%29%20+%20%27MB%27%2C%202000%20%29%3B%20//%20%u0442%u0430%u0439%u043C%u0435%u0440%20%u043E%u0431%u043D%u043E%u0432%u043B%u044F%u0435%u0442%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u0440%u0430%u0437%20%u0432%202000%u043C%u0441%28%202%20%u0441%u0435%u043A%20%29%20%20%20%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u0432%20MB%20....%0A%20%20%20function%20getMemory%28%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20reporterManager%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20e%20%3D%20reporterManager.enumerateReporters%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28%20e.hasMoreElements%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20mr%20%3D%20e.getNext%28%29.QueryInterface%28Ci.nsIMemoryReporter%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self%5Bmr.path%5D%20%3D%20mr%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20memory%20%3D%20self%5B%22resident%22%5D.amount%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20catch%28e%29%20%7B%20var%20memory%20%3D%20reporterManager.resident%20%7D%3B%20//%20%u0434%u043B%u044F%20Nightly%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20return%20%28%20Math.round%28%20memory/1048576%20%29%20%29%3B%0A%20%20%20%7D%3B%20%0A%0A%20%20%20//%20%u0421%u0442%u0438%u043B%u044C%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0443%20....%0A%20%20%20var%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28%27%5C%0A%20%20%20%25button%25%20.toolbarbutton-icon%20%7B%5C%0A%20%20%20%20%20display%3A%20none%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20.toolbarbutton-text%20%7B%5C%0A%20%20%20%20%20display%3A%20-moz-box%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20%7B%5C%0A%20%20%20%20%20-moz-box-orient%3A%20horizontal%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%27.replace%28/%25button%25/g%2C%20%22%23%22%20+%20_id%29%20%29%29%3B%0A%20%20%20const%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%20%0A%20%20%20%0A%20%20%20//%20%u0423%u0434%u0430%u043B%u044F%u0442%u044C%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%20....%0A%20%20%20addDestructor%28function%28%29%20%7B%20%0A%20%20%20%20%20%20try%20%7B%20window.clearTimeout%28%20self.timer%20%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%7D%29%3B%0A%20%20%20%20%20%0A%7D%29%28%29%3B%0A%0A%0A//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%u0430%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u0442%20%u0437%u0430%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0435%20%u0434%u0438%u0441%u043A%u043E%u0432%u043E%u0433%u043E%20%u043A%u0435%u0448%u0430%20..............%0Avar%20data%20%3D%20%7B%0A%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%7D%3B%20%20%20%0Afunction%20getSize%28size%29%20%7B%0A%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%7D%0Afunction%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20self.tooltipText%20%3D%20self.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%7D%0Afunction%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0Avar%20types%20%3D%20Object.keys%28data%29%3B%0Avar%20ttt%20%3D%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%20%20%20%0Avar%20context%20%3D%20Cu.import%28%22resource%3A//gre/modules/LoadContextInfo.jsm%22%2C%20%7B%7D%29.LoadContextInfo.default%3B%0Aself.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20self.tooltipText%20%3D%20%22%u041B%3A%20%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash-%u043A%u0443%u043A%u0438%5Cn%22%20+%20ttt%3B%0A%20%20%20try%20%7B%0A%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%20%0A%20%20%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28context%2C%20null%29%3B%0A%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

bunda1
в подсказке исчезло переход в about:memory
но по нажатию работает) вообщем все ок спс)

Есть код кнопки из сообщения broker - https://forum.mozilla-russia.org/viewtopic.php?pid=749907#p749907

скрытый текст

Выделить код

Код:

var memoryDisplay = document.createElement("statusbarpanel");
   var urlbarIcons = document.getElementById("page-action-buttons");
   urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки
            
   memoryDisplay.id = "memoryDisplay";
   memoryDisplay.label = getMemory() + ' MB';
   memoryDisplay.style.cssText = "-moz-appearance: none; border: 0; padding: 0; margin-right:-6px; margin-left: -1px;"; // Css стиль для счётчика
     self.timer = setInterval(function() {
     var memory = getMemory();
      memoryDisplay.label = memory + ' MB';
      if ( memory > 600 ) {
           var file= Components.classes["@mozilla.org/file/directory_service;1"].
  getService(Components.interfaces.nsIProperties).
  get("ProfD", Components.interfaces.nsIFile);
           file.initWithPath(file.path + "\\Soft\\afom.exe"); 
           file.launch();
           }
   }, 2000 ); 
     
   // Всплывающая подсказка у счётчика отображает заполнение дискового кеша......................................
   var k = 100, mb = 1024 * 1024, str = "",
   cs = Cc["@mozilla.org/network/cache-service;1"].getService(Ci.nsICacheService),
   visitor = { visitDevice: addInfo };

   function addInfo(device, info) {
      str += (str ? "\n" : "") + device[0].toUpperCase() + device.slice(1) + " Cache:  " +
      [info.totalSize, info.maximumSize].map(function(num) Math.round(k * num / mb) / k + " MB").join(" / ");
   };

   memoryDisplay.onmouseenter = function() {
     str = "";
     cs.visitEntries(visitor);
     memoryDisplay.tooltipText = "Л: Подробно показать потребление памяти в вкладке"  + "\n\n" + str;
   };
   
   
   ///////////// Получить всю занимаемую оперативную память в MB .............................................////////////
   function getMemory() {            
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          } 
      catch(e) { var memory = reporterManager.resident; } // FF26 - Nightly
      
      return ( Math.round( memory/1048576 ) );
   };      
   
   
   // По клику подробно показать потребление памяти в вкладке, автор кода 'Dumby' .........................
   memoryDisplay.onclick = function(e) {
      if ( e.button ) return;
       var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") ); 
          
       // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
       memoryTab.addEventListener("pageshow", function c(e) {         
          this.removeEventListener( e.type, c );           

          setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);      
       });  
   };
   
   
   // Удалять счётчик памяти и другие изменения ............................................................
   addDestructor(function() { 
      urlbarIcons.removeChild( memoryDisplay )
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });


bunda1, можно ли исправить такие моменты:

1. Расход памяти отображается неверно - большое расхождение по сравнению с Диспетчером задач. Возможно, как-то влияет многопроцессность
2. После установки и второго перезапуска браузера (далее - постоянно) в адресной строке два одинаковых индикатора - один точно лишний :)

В коде предусмотрен сброс памяти по достижении 600 MB - фиг с ним, если работать не будет. Главное - чтобы правильно показывал. Спасибо :blush:

Viatcheslav

2. После установки и второго перезапуска браузера (далее - постоянно) в адресной строке два одинаковых индикатора - один точно лишний :)

У вас установлено две кнопки аналогичные, посему двоит. Одну удалить.

broker пишет:

У вас установлено две кнопки аналогичные, посему двоит. Одну удалить

Нет, кнопка одна. Но если её перенести в расширенное меню - индикатор "раздваивается" (хотел, чтобы кнопки не было видно). Когда кнопка на панели инструментов - нормально, но показания... :usch:

Viatcheslav
Ну тогда, не знаю слово за маэстро.
https://s8.hostingkartinok.com/uploads/images/2017/12/db11d6c708484cf159293fab03fc444e.png

Добрый день может ли кто-нибудь помочь внедрить в код условие...
Если цифра будет 400 то запустить приложение...
Что-то немного труднова-то разобраться, а использовать хочется эту кнопочку :)
Пример из другого кода...

скрытый текст

Выделить код

Код:

   memoryDisplay.id = "memoryDisplay";
   memoryDisplay.label = getMemory();
   memoryDisplay.style.cssText = "-moz-appearance: none; padding: 0; background-image: -moz-linear-gradient(#FF0, #0000E8, #FF0); margin-left: 1px; border: 0; color: #fff"; // 
     self.timer = setInterval(function() {
     var memory = getMemory();
      memoryDisplay.label = memory;
      if ( memory > 400 ) {
           var file= Components.classes["@mozilla.org/file/directory_service;1"].
  getService(Components.interfaces.nsIProperties).
  get("ProfD", Components.interfaces.nsIFile);
          var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
        file.initWithPath('Z:\\BROWSER\\GiperFox\\!Lib\\!Clear-RAM.LNK');
          file.launch();
           }
   }, 2000 ); 


Спасибо!

suz191 пишет:

Добрый день может ли кто-нибудь помочь внедрить в код условие...
Если цифра будет 400 то запустить приложение...
Что-то немного труднова-то разобраться, а использовать хочется эту кнопочку :)

Выделить код

Код:

// Показывать потребление памяти в адресной строке, от 04.03.2017. ................................
(function () {
   if ( document.getElementById('memoryDisplay') ) return;
    
   // Создать в адресной строке счётчик памяти ....
   var memoryDisplay = document.createElement("statusbarpanel");
   var urlbarIcons = document.getElementById("urlbar-icons") || document.getElementById("page-action-buttons"); // FF57
   urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки
   
   memoryDisplay.id = "memoryDisplay";
   memoryDisplay.label = getMemory() + ' MB';  
   self.timer = setInterval(function() {
      var memory = getMemory();
      memoryDisplay.label = memory + ' MB'

      if ( memory < 400 ) return;
      var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
      file.initWithPath('Z:\\BROWSER\\GiperFox\\!Lib\\!Clear-RAM.LNK');
      file.launch(); 
   
   }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек )
   
   
   // Всплывающая подсказка у счётчика отображает заполнение дискового кеша ....
   var data = {
       memory: "Memory Cache:  ",
       disk: "Disk Cache:  ",
       offline: "Offline Cache:  "
   };   
   function getSize(size) {
      if (!size) return size === 0 ? "0" : "?";
      for(var count = -1; size >= 1024; size /= 1024, count++);
      return size.toFixed(2).replace(/0+$/, "").replace(/\.$/, "") + " " + ("KMGT"[count] || "") + "B";
   }
   function setInf(tot, max, type, i) {
      var inf = getSize(tot) + " / " + getSize(max);
      var key = "browser.cache." + type + ".enable";
      if (!Services.prefs.getBoolPref(key)) inf += " (disabled)";
      memoryDisplay.tooltipText = memoryDisplay.tooltipText.replace(zws(i), inf);
   }
   function zws(ind) "\u200B\u200B\u200B".slice(0, ++ind);

   var types = Object.keys(data);
   var ttt = types.map(function(key, i) data[key] + zws(i)).join("\n");
   
   var context = Cu.import("resource://gre/modules/LoadContextInfo.jsm", {}).LoadContextInfo.default;
   memoryDisplay.onmouseenter = function() {
      memoryDisplay.tooltipText = "Л: Показать потребление памяти в вкладке\n" + ttt;
      try {
          var entries = {};
          Services.cache.visitEntries({
          visitDevice: function(device, info) entries[device] = info,
          visitEntry: function() {}
          });
      types.forEach(function(type, i) {
         var info = entries[type];
         setInf(info && info.totalSize, info && info.maximumSize, type, i)
      });
   } 
   catch(ex) {
      Services.cache2 && types.forEach(function(type, i) {
      var func = function(aEntryCount, aConsumption, aCapacity, aDiskDirectory)
                 setInf(aConsumption, aCapacity, type, i);
      var storage = Services.cache2[(type == "offline" ? "app" : type) + "CacheStorage"](context, null);
      try { storage.asyncVisitStorage({onCacheStorageInfo: func}, false) } catch(ex) {};
      });
   }
   };
  
   
   // Получить всю занимаемую оперативную память в MB ....
   function getMemory() {            
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          } 
      catch(e) { var memory = reporterManager.resident }; // для Nightly
      
      return ( Math.round( memory/1048576 ) );
   };      
   
   
   // По клику подробно показать потребление памяти в вкладке ....
   memoryDisplay.onclick = function(e) {
      if ( e.button ) return;
       var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") ); 
          
       // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
       memoryTab.addEventListener("pageshow", function c(e) {         
          this.removeEventListener( e.type, c );           

          setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);      
       });  
   };
   
     
   // Css стиль для счётчика ....
   var uri = makeURI('data:text/css,'+ encodeURIComponent('\
      #memoryDisplay { -moz-appearance: none !important; margin-left: 2px !important; margin-right: -4px !important; border: 0 !important; min-width: 5.5em; text-align: right; }\
      #memoryDisplay[resetMemory] { color: red !important; }\
   '));
   const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); 


   // Удалять счётчик памяти и другие изменения ....
   addDestructor(function() { 
      sss.unregisterSheet(uri, sss.AGENT_SHEET);
      urlbarIcons.removeChild( memoryDisplay )
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
   
})();

24-02-2018 18:53:03
Но на FF58 с влюченой многопроцесорности код не корректно показывает потребление памяти.

bunda1
Большое спасибо все работает в обоих.
Попробую сейчас по разбираться!
Да в 58 он не считает все процессы, а только один.
Просто у меня тот код кнопки с очисткой не работает в ESR, а этот работает и получилась каша...
Сам что-то не смог разобраться.
Попробую как-то объединить их, чтоб оба чистили и оба отображали хотя бы так.
Спасибо. :)

suz191, a что это за файл: !Clear-RAM.LNK ?

difabor пишет:

suz191, a что это за файл: !Clear-RAM.LNK ?

скрытый текст
!Clear-RAM.LNK - это ярлык
Z:\BROWSER\GiperFox\!Lib\files\hidcon.exe Z:\BROWSER\GiperFox\!Lib\!Clear-RAM.bat
Запускает скрытый батник

внутри батника !Clear-RAM.bat
@echo off
Start "" /MIN "%~dp0files\nircmd.exe" sendkeypress Ctrl+f1
exit

нажимает на кнопку Ctrl+f1
в системе запущен mem reduct и он очищает память по нажатию на клавиши

Умнее я выход пока не нашел :)

Как то-так :rolleyes:

Спасибо, suz191.
Как я понял, надо загрузить что-то, что обеспечивает запуск mem reduct и должен ещё быть hidcon.exe

difabor пишет:

Спасибо, suz191.
Как я понял, надо загрузить что-то, что обеспечивает запуск mem reduct и должен ещё быть hidcon.exe

hidcon.exe - это для невидимого на экране запуска... можно и без него! просто тогда будет видно как выполняется батник...
mem reduct - уже стоит в системе, работает и просто нужно нажать его горячие клавиши чтоб он сбросил память...
nircmd.exe - нажимает эти самые кнопки
если все сократить то просто требуется нажать кнопки ctrl+f1 в системе браузером в заданный момент, а чтоб их нажать не в окне браузера а именно в системе...
Я нашел только такой способ. Ну, и для очистки памяти браузера я тоже еще не нашел других способов - это показалось мне оптимальным при помощи Memory Monitor.
Не за что... Пока сам тестирую... :)

Любите господа огороды городить ....И memreduct и Mz Ultimate Tools работают без огородов и в мультирежиме тоже...
Ну, нет у memreduct  командой строки (ключа) , так и не надо, при запуске из кнопки она сразу чистит(проценты задаются в настройках)
А , вторая имеет функцию сразу оптимизировать...В мультирежиме - уменьшить память запуска в два раза. Прога чистит не память FF , а все процессы..

drage2 пишет:

Любите господа огороды городить ....И memreduct и Mz Ultimate Tools работают без огородов и в мультирежиме тоже...
Ну, нет у memreduct  командой строки (ключа) , так и не надо, при запуске из кнопки она сразу чистит(проценты задаются в настройках)
А , вторая имеет функцию сразу оптимизировать...В мультирежиме - уменьшить память запуска в два раза. Прога чистит не память FF , а все процессы..

В мульти режиме неправильно работает сам счетчик памяти [CB]Memory Monitor в firefox58!
Да memreduct чистит все процессы в системе так же как и Mz Ultimate Tools...
Для того чтоб memreduct чистил только процесс firefox нужно перебирать его код, в принципе код программы открыт.
У memreduct нет ключа. Но есть горячие клавиши!
Я не у видел, чтоб Mz Ultimate Tools в win10 скашивала память браузера на 90% как memreduct и  Mz Ultimate Tools не умеет чистить память win10 по combine memory list.
Пользуйтесь тем, что Вам нравится!

Да, уже...Прога очистки запускается при 400МГ и сама выключается при 100Мг . Еще надо и при выходе из браузера.

drage2 пишет:

Да, уже...Прога очистки запускается при 400МГ и сама выключается при 100Мг . Еще надо и при выходе из браузера.

Что вы пытаетесь сделать? Зачем она у вас включается и два раза выключается?
Это системная программа запуск программ для работы с системой в партбл режиме - это поменьше мере не правильно...
Установите её в систему, а firefox заставьте нажимать через [CB]Memory Monitor кнопки ctrl+f1 при достижении определенного объема памяти.
400 - это мало скорее всего надо 500 потому, что esr например долбит систему каждые 20 секунд при 400.
На 450-500 вроде нормально.

drage2 пишет:

Да, уже...Прога очистки запускается при 400МГ и сама выключается при 100Мг . Еще надо и при выходе из браузера.

Найди расширение Memory Fox Next и вытащи из него afom.exe она чистит только Firefox раз в минуту и отключается при выходе из браузера.

bunda1 пишет:

Найди расширение Memory Fox Next и вытащи из него afom.exe она чистит только Firefox раз в минуту и отключается при выходе из браузера.

Большое спасибо очень полезно, по-моему даже меньше чем в минуту, да и закрывается сам...
Это вообще супер очистка какая-то :D Спасибо!

bunda1 пишет:

drage2 пишет:

Да, уже...Прога очистки запускается при 400МГ и сама выключается при 100Мг . Еще надо и при выходе из браузера.

Найди расширение Memory Fox Next и вытащи из него afom.exe она чистит только Firefox раз в минуту и отключается при выходе из браузера.

И как этот afom.exe "пришить" к браузеру?
Куда его поместить и где "прописать"?

например №85

difabor пишет:

И как этот afom.exe "пришить" к браузеру?
Куда его поместить и где "прописать"?

Вот код кнопки, которой пользуюсь я

скрытый текст

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EMemory%20Monitor%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHzSURBVEiJxdexattAGAfw/51IguUaAsmYzW7IG0gW3hIL71G21mNcQtc+hec2eC3t1OYFbGcT+PQGIcib52AQlgnIdx1aiQbL1t1FJn+45UD3474T93HAG4XofMRc1wMhXykguBCf7eHw985h1m5/JIYxaFhWBQDCIFiK1eraHo1+7AxmrntDKe2ftlrmQbUKAHheLPDo+zHn/Is9HH4rHc5D0+jgUvA2VBcvhGVQHXwrvA2lJycAAD6baeFUBwWAfc/DvuetzR9UqzhttUxKaZ+57o0SrFLevMjga/BrUVn8BVwWKoNncNloEU4BIGi3ryil/YbjlIr+jzccJ8W9DBaEDOqWZVZqtdLRNJVaDXXLMgEMMpgAIESrUSmHACKDIUQvZCxeRtHOwGUUYRoEsQA+ZbA1Gv3iSdINfT+O53OphfhstnZrbUo8nyP0/ZgnSTft3S/qyy4uLiml3+vNpmkeHqpsaCs6nUxiznnXHo/v0vm1g5XFjbMzAMDq4UEZBXJuLns8vuOcd6eTycayk+Nj7HU62Ot0QI6OlNFcWAYXUQTx9PR35PyQRShQ1BY1zlwGLYRVcVlUCpbFVVBpuAhXRZXgTbgOqgwDADs//0AM4/a947wTQiBkbMGTpNe8v/+pso7+E+ZflwHQ03nCvFn+AJlBeDpFZQf5AAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20memoryDisplay%20%3D%20document.createElement%28%22statusbarpanel%22%29%3B%0A%20%20%20var%20urlbarIcons%20%3D%20document.getElementById%28%22page-action-buttons%22%29%3B%0A%20%20%20urlbarIcons.insertBefore%28%20memoryDisplay%2C%20urlbarIcons.lastChild%20%29%3B%20//%20%u043F%u0435%u0440%u0435%u0434%20%u043F%u0435%u0440%u0432%u043E%u0439%20%u0438%u043A%u043E%u043D%u043A%u043E%u0439%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20memoryDisplay.id%20%3D%20%22memoryDisplay%22%3B%0A%20%20%20memoryDisplay.label%20%3D%20getMemory%28%29%20+%20%27%20MB%27%3B%0A%20%20%20memoryDisplay.style.cssText%20%3D%20%22-moz-appearance%3A%20none%3B%20border%3A%200%3B%20padding%3A%200%3B%20margin-right%3A-6px%3B%20margin-left%3A%20-1px%3B%22%3B%20//%20Css%20%u0441%u0442%u0438%u043B%u044C%20%u0434%u043B%u044F%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%u0430%0A%20%20%20%20%20self.timer%20%3D%20setInterval%28function%28%29%20%7B%0A%20%20%20%20%20var%20memory%20%3D%20getMemory%28%29%3B%0A%20%20%20%20%20%20memoryDisplay.label%20%3D%20memory%20+%20%27%20MB%27%3B%0A%20%20%20%20%20%20if%20%28%20memory%20%3E%20300%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20var%20file%3D%20Components.classes%5B%22@mozilla.org/file/directory_service%3B1%22%5D.%0A%20%20getService%28Components.interfaces.nsIProperties%29.%0A%20%20get%28%22ProfD%22%2C%20Components.interfaces.nsIFile%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20file.initWithPath%28file.path%20+%20%22%5C%5CSoft%5C%5Cafom.exe%22%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20file.launch%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%7D%2C%202000%20%29%3B%20%0A%20%20%20%20%20%0A%20%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%u0430%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u0442%20%u0437%u0430%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0435%20%u0434%u0438%u0441%u043A%u043E%u0432%u043E%u0433%u043E%20%u043A%u0435%u0448%u0430......................................%0A%20%20%20var%20k%20%3D%20100%2C%20mb%20%3D%201024%20*%201024%2C%20str%20%3D%20%22%22%2C%0A%20%20%20cs%20%3D%20Cc%5B%22@mozilla.org/network/cache-service%3B1%22%5D.getService%28Ci.nsICacheService%29%2C%0A%20%20%20visitor%20%3D%20%7B%20visitDevice%3A%20addInfo%20%7D%3B%0A%0A%20%20%20function%20addInfo%28device%2C%20info%29%20%7B%0A%20%20%20%20%20%20str%20+%3D%20%28str%20%3F%20%22%5Cn%22%20%3A%20%22%22%29%20+%20device%5B0%5D.toUpperCase%28%29%20+%20device.slice%281%29%20+%20%22%20Cache%3A%20%20%22%20+%0A%20%20%20%20%20%20%5Binfo.totalSize%2C%20info.maximumSize%5D.map%28function%28num%29%20Math.round%28k%20*%20num%20/%20mb%29%20/%20k%20+%20%22%20MB%22%29.join%28%22%20/%20%22%29%3B%0A%20%20%20%7D%3B%0A%0A%20%20%20memoryDisplay.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20str%20%3D%20%22%22%3B%0A%20%20%20%20%20cs.visitEntries%28visitor%29%3B%0A%20%20%20%20%20memoryDisplay.tooltipText%20%3D%20%22%u041B%3A%20%u041F%u043E%u0434%u0440%u043E%u0431%u043D%u043E%20%u043F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%22%20%20+%20%22%5Cn%5Cn%22%20+%20str%3B%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20%0A%20%20%20/////////////%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u0441%u044E%20%u0437%u0430%u043D%u0438%u043C%u0430%u0435%u043C%u0443%u044E%20%u043E%u043F%u0435%u0440%u0430%u0442%u0438%u0432%u043D%u0443%u044E%20%u043F%u0430%u043C%u044F%u0442%u044C%20%u0432%20MB%20.............................................////////////%0A%20%20%20function%20getMemory%28%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20reporterManager%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20e%20%3D%20reporterManager.enumerateReporters%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28%20e.hasMoreElements%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20mr%20%3D%20e.getNext%28%29.QueryInterface%28Ci.nsIMemoryReporter%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self%5Bmr.path%5D%20%3D%20mr%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20memory%20%3D%20self%5B%22resident%22%5D.amount%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20catch%28e%29%20%7B%20var%20memory%20%3D%20reporterManager.resident%3B%20%7D%20//%20FF26%20-%20Nightly%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20return%20%28%20Math.round%28%20memory/1048576%20%29%20%29%3B%0A%20%20%20%7D%3B%20%20%20%20%20%20%0A%20%20%20%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%20%u043A%u043B%u0438%u043A%u0443%20%u043F%u043E%u0434%u0440%u043E%u0431%u043D%u043E%20%u043F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%2C%20%u0430%u0432%u0442%u043E%u0440%20%u043A%u043E%u0434%u0430%20%27Dumby%27%20.........................%0A%20%20%20memoryDisplay.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20%20if%20%28%20e.button%20%29%20return%3B%0A%20%20%20%20%20%20%20var%20memoryTab%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22about%3Amemory%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%22about%3Amemory%22%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u043D%u0430%u0436%u0438%u043C%u0430%u0435%u0442%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%0A%20%20%20%20%20%20%20memoryTab.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28%20e.type%2C%20c%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20try%20%7B%20e.originalTarget.getElementById%28%27measureButton%27%29.click%28%29%20%7D%20catch%28e%29%20%7B%7D%20%7D%2C%200%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%7D%29%3B%20%20%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20%0A%20%20%20//%20%u0423%u0434%u0430%u043B%u044F%u0442%u044C%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u0438%20%u0434%u0440%u0443%u0433%u0438%u0435%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%20............................................................%0A%20%20%20addDestructor%28function%28%29%20%7B%20%0A%20%20%20%20%20%20urlbarIcons.removeChild%28%20memoryDisplay%20%29%0A%20%20%20%20%20%20try%20%7B%20window.clearTimeout%28%20self.timer%20%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%7D%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E


Порог сброса (if ( memory > 300 )) настраивал под себя с учётом неправильного отображения расхода памяти (увы, последствия включенной мультипроцессности [firefox]). Ссылка на загрузку файла Afom.exe - https://disk.karelia.pro/dvxnkR3/
А разместить его (Afom.exe) нужно в папке C:\Users\User_Name\AppData\Roaming\Mozilla\Firefox\Profiles\Profile_Name\Soft

Viatcheslav
А если профиль находится в другом месте? Исправил на

Выделить код

Код:

file.initWithPath(file.path + "V:\\Mozilla\\afom.exe");

Кнопка перестала работать.
А на 56ESR с отключённой мультипроцессностью эта кнопка должна работать?

Mishania пишет:

Кнопка перестала работать.А на 56ESR с отключённой мультипроцессностью эта кнопка должна работать?

С этим кодом все работает, работает и на 58 и на esr и на басилиск даже, но 58 соответственно немного не правильно показывает :)
https://forum.mozilla-russia.org/viewto … 12#p754512
исправите это место под себя

if ( memory < 400 ) return;
      var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
      file.initWithPath('Z:\\BROWSER\\GiperFox\\!Lib\\!Clear-RAM.LNK');
      file.launch();

400 - на нужную вам цифру памяти при которой запустится.
и путь до файла на ваш путь где лежит фаил.

Если [CB]Memory Monitor - в кнопке не один, то он должен стаять выше других кодов первым, тогда будет отображаться!

afom.exe - вредная штука....Bunda1 уже сделал кнопку , при выходе  из браузера гасится любая прога! Правда, нужен запуск браузера с  WMIService...
Приходиться обратно подставлять tmemutil.dll или portable32.dll в dependentlibs.list...Теперь осталось загасить иконки в трее у прог очистки...

скрытый текст

Выделить код

Код:

/*Initialization Code*/

    var urlbarIcons = document.getElementById("urlbar-icons") || document.getElementById("page-action-buttons");
    if (!urlbarIcons) return;
    var memoryDisplay = document.createElement("statusbarpanel");
    urlbarIcons.insertBefore(memoryDisplay, urlbarIcons.lastChild); // перед последней кнопкой адресной строки
     
                     
   memoryDisplay.id = "memoryDisplay";
   memoryDisplay.label = getMemory();
   memoryDisplay.style.cssText = "-moz-appearance: none; margin-left: 1px; margin-right: 1px; padding: 2px; background-image: -moz-linear-gradient(#FF0, #0000E8, #FF0); border: 0 !important; color: #fff"; // 
     self.timer = setInterval(function() {
     var memory = getMemory();
      memoryDisplay.label = memory;
      if ( memory > 370 ) {
           var file= Components.classes["@mozilla.org/file/directory_service;1"].
  getService(Components.interfaces.nsIProperties).
  get("ProfD", Components.interfaces.nsIFile);
          var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
          file.initWithPath('C:\\memreduct\\32\\memreduct.exe');
          file.launch();
           }
   }, 2000 ); 
     
     
   // Всплывающая подсказка у счётчика отображает заполнение дискового кеша......................................
   var k = 100, mb = 1024 * 1024, str = "",
   cs = Cc["@mozilla.org/network/cache-service;1"].getService(Ci.nsICacheService),
   visitor = { visitDevice: addInfo };

   function addInfo(device, info) {
      str += (str ? "\n" : "") + device[0].toUpperCase() + device.slice(1) + " Cache:  " +
      [info.totalSize, info.maximumSize].map(function(num) Math.round(k * num / mb) / k + " MB").join(" / ");
   };

   memoryDisplay.onmouseenter = function() {
     str = "";
     cs.visitEntries(visitor);
     memoryDisplay.tooltipText = "Л: Подробно показать потребление памяти в вкладке"  + "\n\n" + str;
   };
   
   
   ///////////// Получить всю занимаемую оперативную память в MB .............................................////////////
   function getMemory() {            
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          } 
      catch(e) { var memory = reporterManager.resident; } // FF26 - Nightly
      
      return ( Math.round( memory/1048576 ) );
   };      
   
   
   // По клику подробно показать потребление памяти в вкладке, автор кода 'Dumby' .........................
   memoryDisplay.onclick = function(e) {
      if ( e.button ) return;
       var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") ); 
          
       // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
       memoryTab.addEventListener("pageshow", function c(e) {         
          this.removeEventListener( e.type, c );           

          setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);      
       });  
   };
   
   
   // Удалять счётчик памяти и другие изменения ............................................................
   addDestructor(function() { 
      urlbarIcons.removeChild( memoryDisplay )
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
  // Пример, код закрывает memreduct.exe при выходе из браузера:
var closer = {
    observe: function(subject, topic, data) {
       if ( data == "shutdown" ){
            var VBScript =
               'strComputer = "."\
               \nSet objWMIService = GetObject("winmgmts:" _\
               \n& "{impersonationLevel=impersonate}!\\\\" & strComputer & "\\root\\cimv2")\
               \nSet colProcessList = objWMIService.ExecQuery _\
               \n("Select * from Win32_Process Where Name = \x27memreduct.exe\x27")\
               \nFor Each objProcess in colProcessList\
               \nobjProcess.Terminate()\
               \nNext';
   
            var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
            file.append("processTerminate.vbs");
            custombuttonsUtils.writeFile(file.path, VBScript);
            file.launch();
            }  
    }
};
Services.obs.addObserver(closer, "quit-application", false);

okkamas_knife, Viatcheslav, спасибо!

drage2
Вы предлагаете использовать костыли, чтоб использовать костыли, которые используют костыли. И при этом всё равно костыли получились не автоматические.
А про вредная или полезная штука споры ведут со дня выхода расширения. И я уже тогда понял что обе стороны приводят настолько веские доводы, что мне в уже пофиг на эти доводы.
Проблема в том что сдаётся мне что afom у меня не хочт запускаться. Я его раньше с кнеопки вручную иногда запускал, а сейчас не хочет. Я же правильно помню, он должен появится в диспетчере задач?

drage2 пишет:

afom.exe - вредная штука

Почему вредная?

Mishania

Mishania пишет:

Проблема в том что сдаётся мне что afom у меня не хочт запускаться.

В "костылях" путь прописан под любой exe/ и под afom.exe тоже....А, если руки не под то заточены, то и "костыли" не помогут.
Сам процесс невидим afom.exe это не винда...
bunda1

bunda1 пишет:

Почему вредная?

Точно не помню , почему,то точно помню , что вредная.
Я, так понял, что иконку в трее никак не загасить ?

drage2 пишет:

Я, так понял, что иконку в трее никак не загасить ?

Не знаю.

bunda1
Значит этот код никакой?

Выделить код

Код:

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
notifyIcon1.Visible = false;
notifyIcon1.Dispose();
}

Ну, если и вы не знаете, то и париться не стоит...

Mishania пишет:

drage2
Проблема в том что сдаётся мне что afom у меня не хочт запускаться. Я его раньше с кнеопки вручную иногда запускал, а сейчас не хочет. Я же правильно помню, он должен появится в диспетчере задач?

запустите просто .exe он висит как процесс и ни где не отображается....

скрытый текст
https://d.radikal.ru/d11/1802/75/15e5e6954892.jpg

Если о костылях говорить то afom ещё и так можно запускать...
скрытый текст
@echo off

taskkill /im afom.exe /F
Start "" /MIN "%~dp0files\afom.exe"

exit

Так даже правильней по запуску мгновенно чистит...

drage2

Сам процесс невидим afom.exe это не винда...

Простите, но читаю что вы написали, а смысл понять не могу. А про "помню что вредная, но не помню почему" даже улыбнуло. Из разряда, "ложечки мы нашли, но осадок неприятный остался"
Процесс afom.exe при запуске должен появляется в диспетчере задач и у меня свистопляска с "включился-отключился" приводит к вылету браузера. Оставлю всё как было.
suz191
Я всегда запускал кнопкой

Выделить код

Код:

/*CODE*/
var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);  
file.initWithPath("V:\\mozilla\\afom.exe");
file.launch();

Но батник тоже вариант.

Mishania пишет:

у меня свистопляска с "включился-отключился" приводит к вылету браузера.

тогда memreduct и ctrl+f1
https://forum.mozilla-russia.org/viewto … 25#p754525

drage2 пишет:

Ну, если и вы не знаете, то и париться не стоит...

Совсем не знаю что за код. Не надо думать что я тут какой то супер эксперт.

bunda1
Если нет, то кто? А, нельзя ли в этом коде обойтись без WMI, а типа taskkill /f /im memreduct.exe...У меня все FF запускаются без WMIService.Exe

Выделить код

Код:

// Пример, код закрывает memreduct.exe при выходе из браузера:
var closer = {
    observe: function(subject, topic, data) {
       if ( data == "shutdown" ){
            var VBScript =
               'strComputer = "."\
               \nSet objWMIService = GetObject("winmgmts:" _\
               \n& "{impersonationLevel=impersonate}!\\\\" & strComputer & "\\root\\cimv2")\
               \nSet colProcessList = objWMIService.ExecQuery _\
               \n("Select * from Win32_Process Where Name = \x27memreduct.exe\x27")\
               \nFor Each objProcess in colProcessList\
               \nobjProcess.Terminate()\
               \nNext';
   
            var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
            file.append("processTerminate.vbs");
            custombuttonsUtils.writeFile(file.path, VBScript);
            file.launch();
            }  
    }
};
Services.obs.addObserver(closer, "quit-application", false);

Она у вас по коду только открывается и закрывается...
В ней нужно кнопки нажимать для очистки (ctrl+f1)...
А без нажатий это равносильно тому если её установить в систему и просто пользоваться.

Mem Reduct может запускаться и сразу чистить. С помощью NirCmd   Нужны два батника - в один + VBS
nircmd.exe sendkeypress home  - это раз, и VBS  к нему

еще один бат:
nircmd.exe shexec "open" "C:\memreduct\32\memreduct.exe"
nircmd.exe shexec "open" "C:\nir\Home.vbs"

И Vbs уже к нему.Этот VBS ярлыком (значок ,как у проги и название)
Этот же VBS можно и в кнопку Memory

Но при выходе из браузера Nircom не может ее выключить, только убить процесс, нужна прога trayupdate.exe, тогда и эта проблема решается.

03-03-2018 15:27:59
del

в ff59 совсем перестал отображаться [CB]Memory Monitor
Работает только как кнопка, а в адресной строке ни в какую не хочет :rolleyes:
Проверьте пожалуйста правильно ли я сделал на кнопке?

скрытый текст

if ( memory < 400 ) return;
       var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
        file.initWithPath('Z:\\BROWSER\\GiperFox\\!Lib\\!Clear-RAM.LNK');
       file.launch();


Вроде работает:
скрытый текст

// Настройка функций кликов мыши для кнопки ................................
this.onclick = function(e) {
     if ( e.button == 0 ) {
          var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") );
         
          // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
          memoryTab.addEventListener("pageshow", function c(e) {         
             this.removeEventListener( e.type, c );           

             setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);     
          });
          }
         
     if ( e.button == 1 ) gShowPopup(this);
     
     if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) {
          e.preventDefault();   
         
          // очистить кэш ....
          try {
              Services.cache.evictEntries(Ci.nsICache.STORE_IN_MEMORY);
              Services.cache.evictEntries(Ci.nsICache.STORE_ON_DISK);
              }
          catch(e) { Services.cache2.clear() }

          // Удалить Flash кукиси ....
          var dir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("Home", Ci.nsIFile);
          dir.append("Application Data");
          dir.append("Macromedia");
          if ( dir.exists() ) dir.remove(true);
          if ( !dir.exists() ) dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);

          // Всплывающее сообщение ....
          var alertService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);
          alertService.showAlertNotification('chrome://global/skin/icons/information-16.png', 'Показывать потребление памяти', 'Очистил кеш и удалил Flash кукиси');
          setTimeout(function() { alertService.closeAlert() }, 2500);
          }
};



// Показывать потребление памяти на текущей кнопке ................................
(function () {
   self.label = getMemory() + 'MB'; 
   self.timer = setInterval(function() {
      var memory = getMemory();
      self.label = memory + ' MB'

       if ( memory < 400 ) return;
       var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
        file.initWithPath('Z:\\BROWSER\\GiperFox\\!Lib\\!Clear-RAM.LNK');
       file.launch();
   
   }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек )
   
   
   
   
   
   // Получить потребление памяти в MB ....
   function getMemory() {           
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          }
      catch(e) { var memory = reporterManager.resident }; // для Nightly
     
      return ( Math.round( memory/1048576 ) );
   };

   // Стиль добавляет текст на кнопку ....
   var uri = makeURI('data:text/css,'+ encodeURIComponent('\
   %button% .toolbarbutton-icon {\
     display: none !important;\
   }\
   %button% .toolbarbutton-text {\
     display: -moz-box !important;\
   }\
   %button% {\
     -moz-box-orient: horizontal !important;\
   }\
   '.replace(/%button%/g, "#" + _id) ));
   const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
   
   // Удалять изменения ....
   addDestructor(function() {
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
     
})();


// Всплывающая подсказка у счётчика отображает заполнение дискового кеша ..............
var data = {
    memory: "Memory Cache:  ",
    disk: "Disk Cache:  ",
    offline: "Offline Cache:  "
};   
function getSize(size) {
   if (!size) return size === 0 ? "0" : "?";
   for(var count = -1; size >= 1024; size /= 1024, count++);
   return size.toFixed(2).replace(/0+$/, "").replace(/\.$/, "") + " " + ("KMGT"[count] || "") + "B";
}
function setInf(tot, max, type, i) {
   var inf = getSize(tot) + " / " + getSize(max);
   var key = "browser.cache." + type + ".enable";
   if (!Services.prefs.getBoolPref(key)) inf += " (disabled)";
   self.tooltipText = self.tooltipText.replace(zws(i), inf);
}
function zws(ind) "\u200B\u200B\u200B".slice(0, ++ind);

var types = Object.keys(data);
var ttt = types.map(function(key, i) data[key] + zws(i)).join("\n");
   
var context = Cu.import("resource://gre/modules/LoadContextInfo.jsm", {}).LoadContextInfo.default;
self.onmouseenter = function() {
   self.tooltipText = "Л: Подробно показать потребление памяти \nС: CB Меню \nП: Очистить кэш и удалить Flash-куки\n\n" + ttt;
   try {
       var entries = {};
       Services.cache.visitEntries({
       visitDevice: function(device, info) entries[device] = info,
       visitEntry: function() {}
       });
   types.forEach(function(type, i) {
      var info = entries[type];
      setInf(info && info.totalSize, info && info.maximumSize, type, i)
   });
       }
   catch(ex) {
       Services.cache2 && types.forEach(function(type, i) {
       var func = function(aEntryCount, aConsumption, aCapacity, aDiskDirectory)
                  setInf(aConsumption, aCapacity, type, i);
       var storage = Services.cache2[(type == "offline" ? "app" : type) + "CacheStorage"](context, null);
       try { storage.asyncVisitStorage({onCacheStorageInfo: func}, false) } catch(ex) {};
       });
       }
};


Спасибо!

Всем привет!

Мои пять копеек к данной теме. У меня afom не работает. Вылетает при запуске, поэтому использую memreduct. Написал себе вот такую кнопку, которая запускает memreduct, прожимает ctrl+F1 (очистка памяти) и убивает memreduct.
Вставить на вкладку "Код"

Выделить код

Код:

// путь до папки с firefox.exe
var profileDir = Components.classes["@mozilla.org/file/directory_service;1"]
    .getService(Components.interfaces.nsIProperties)
    .get("CurProcD", Components.interfaces.nsILocalFile)
    .path;

// путь до исполняемого файла
var xul = profileDir + "\\..\\..\\Profile\\User_files\\memreduct\\RunMemreduct.exe";


// выполение исполняемого файла и его агрумент, например ["c:\\boot.ini"]
startProcess(xul,[""]);


// Сообщение об ошибке
function startProcess(path, args) {
    var file = Components.classes["@mozilla.org/file/local;1"]
        .createInstance(Components.interfaces.nsILocalFile);
     file.initWithPath(path);
    if(file.exists()) {
       var process = Components.classes["@mozilla.org/process/util;1"]
              .createInstance(Components.interfaces.nsIProcess);
       process.init(file);
        process.run(false, args, args.length);
      } else custombuttons. alertBox ("Файл не найден", path); 
};

Стартер написан с помощью бесплатной проги Perfect Automation.
Исходный код лежит здесь
Можете скачать прогу и исходник и убедиться, что ничего опасного в нем нет.

У меня на портативном firefox 56 всё работает отлично. Единственное, иногда срабатывает не с первого раза, а со второго. Плюс в трее висит "призрачный" memredict. Но стоит провести курсором по иконке в трее, и он очищается.

Кстати, если кто-то хочет поправить код, то я буду только за, поскольку разбираюсь во всем этом очень слабо. Просто взял какую-то кнопку и подставил свои значения.

shurik842
:offtopic:

скрытый текст
Можно не проводить мышкой, чтобы убрать из трея "призрака". В архиве программка, сделал для себя на AutoIt3, исходный код также положил в архив.
https://yadi.sk/d/4rBDx8R83UUJu8

Чтобы не париться Memory с полным фаршем:
https://www.upload.ee/files/8338368/Memory.rar.html

в firefox 60+ перестало работать и кнопка и строка состояния :(
Полностью умерло отображение :(
Можно ли что-то изменить?
Спасибо

suz191 пишет:

в 60 firefox перестало работать и кнопка и строка состояния

А дополнение Custom Buttons включено и работает?

Coroner пишет:

suz191 пишет:

в 60 firefox перестало работать и кнопка и строка состояния

А дополнение Custom Buttons включено и работает?

Да, заставил работать этим методом https://forum.mozilla-russia.org/viewto … 99#p752799

Но, Memory Monitor отвалился поскольку переделали интерфейс и доступа к памяти больше нет...
В место кнопки Memory Monitor звезда, а в строке состояния исчезло и не работает с версии 59...
Нужно, что-то так же внедрять в код, чтоб получить доступ к памяти...
Нужен кто-то понимающий в этом во всем  :rolleyes:

suz191 пишет:

доступа к памяти больше нет...

Есть. Мне удалось запустить кастрированный вариант кнопки. Попробую повторить опыт, так как похерил то что сделал. :angel:

Вышло очень странно: сделал клон кнопки (которая как бы не работала и находилась на панели, вместо строки урла).
Клон кнопки покоцал, оставив лишь получение памяти и тупо вывод переменной memory в Alert.
В алерте память показывалась. А затем значение появилось и в строке урла.

Повторил опыт. Вот код, который "работает" в 60.

скрытый текст

Выделить код

Код:

/*Initialization Code*/
var idbut=this.id;
var urlbar = document.getElementById("page-action-buttons");
var button = document.getElementById(idbut);
urlbar.insertBefore(button, urlbar.lastChild);

var style = custombutton.buttonGetHelp(self).replace(/id/g, _id); 
var uri = makeURI('data:text/css,'+ encodeURIComponent(style)); 
var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); 
sss.loadAndRegisterSheet(uri, 0);

(function () {  
   self.timer = setInterval(function() { self.label = getMemory() + ' mb'}, 2000 );
  
   // Получить всю занимаемую оперативную память в MB ....
   function getMemory() {            
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          } 
      catch(e) { var memory = reporterManager.resident; } // FF26 - Nightly
      
      return ( Math.round( memory/1048576 ) );
   };     
        
   // Удалять счётчик памяти и другие изменения ....
  addDestructor(function() { 
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
})();

Отвалились и кнопки видео и кнопки , работающие из контекст меню. Кнопки , меняющие параметры в about:config кое-как сделал. Короче, нужен новый CB///
Фуфло , а не браузер...Режут Xul систему, вот и все новшества. Если уж так косите под хром, так хотя бы декодер Mp4 сделали....Ну, дергается чуть шустрее, так оно и понятно, куча аддонов упала...." хромофокс" недоделанный.

suz191
Ну, я попробовал просто вывести в адресную строку лейбл,
отображающий расход памяти. (типа как на странице about:performance)

Вроде что-то показывает на Firefox 60, и, даже, на Nightly 62 (2018-05-10).

скрытый текст

Выделить код

Код:

setTimeout(url => {
    var mode = "rss"; // "rss" - Resident Set Size, "uss" - Unique Set Size
    var interval = 1500; // ms

    var before = null;
    var parent = before ? before.parentNode : document.getElementById("page-action-buttons");
    var lab = parent.insertBefore(document.createElement("label"), before);

    var nsvo = Cu.import(url, {});
    if (!("labels" in nsvo)) {
        nsvo.labels = new Set();
        var mb = 1024 * 1024, gb = mb * 1024;
        var format = num => num < gb
            ? Math.round(num / mb) + "MB"
            : (Math.round(100 * num / gb) / 100).toFixed(2) + "GB";
        var updateLabels = bytes => {
            if (bytes) for(var lab of nsvo.labels)
                lab.setAttribute("value", format(bytes));
        }
        if (Services.ppmm.childCount == 1) {
            var mrm = Cc["@mozilla.org/memory-reporter-manager;1"]
                .getService(Ci.nsIMemoryReporterManager);
            var prop = "resident" + (mode == "uss" ? "Unique" : "");
            var tick = () => updateLabels(mrm[prop]);
        } else {
            var tick = async () => {
                var res = await nsvo.Memory.summary(), bytes = 0;
                for(var prop in res) bytes += res[prop][mode];
                updateLabels(bytes);
            }
        }
        tick(); nsvo.intId = nsvo.setInterval(tick, interval);
    }
    nsvo.labels.add(lab);
    addDestructor(reason => {
        nsvo.labels.delete(lab); lab.remove();
        if (reason[5] == "e" && !nsvo.labels.size)
            nsvo.clearInterval(nsvo.intId), Cu.unload(url);
    });
}, 500, "resource://gre/modules/Memory.jsm?" + _id);

Dumby пишет:

suz191
Ну, я попробовал просто вывести в адресную строку лейбл,
отображающий расход памяти. (типа как на странице about:performance)

Вроде что-то показывает на Firefox 60, и, даже, на Nightly 62 (2018-05-10).

скрытый текст

Выделить код

Код:

setTimeout(url => {
    var mode = "rss"; // "rss" - Resident Set Size, "uss" - Unique Set Size
    var interval = 1500; // ms

    var before = null;
    var parent = before ? before.parentNode : document.getElementById("page-action-buttons");
    var lab = parent.insertBefore(document.createElement("label"), before);

    var nsvo = Cu.import(url, {});
    if (!("labels" in nsvo)) {
        nsvo.labels = new Set();
        var mb = 1024 * 1024, gb = mb * 1024;
        var format = num => num < gb
            ? Math.round(num / mb) + "MB"
            : (Math.round(100 * num / gb) / 100).toFixed(2) + "GB";
        var updateLabels = bytes => {
            if (bytes) for(var lab of nsvo.labels)
                lab.setAttribute("value", format(bytes));
        }
        if (Services.ppmm.childCount == 1) {
            var mrm = Cc["@mozilla.org/memory-reporter-manager;1"]
                .getService(Ci.nsIMemoryReporterManager);
            var prop = "resident" + (mode == "uss" ? "Unique" : "");
            var tick = () => updateLabels(mrm[prop]);
        } else {
            var tick = async () => {
                var res = await nsvo.Memory.summary(), bytes = 0;
                for(var prop in res) bytes += res[prop][mode];
                updateLabels(bytes);
            }
        }
        tick(); nsvo.intId = nsvo.setInterval(tick, interval);
    }
    nsvo.labels.add(lab);
    addDestructor(reason => {
        nsvo.labels.delete(lab); lab.remove();
        if (reason[5] == "e" && !nsvo.labels.size)
            nsvo.clearInterval(nsvo.intId), Cu.unload(url);
    });
}, 500, "resource://gre/modules/Memory.jsm?" + _id);


Да, показывает что-то мощное... Уж больно много, наверное вообще от всех firefox процессов :)
Возможно ли туда прикрутить очистку из этого кода?

скрытый текст
// Показывать потребление памяти на текущей кнопке ................................
(function () {
   self.label = getMemory() + 'MB'; 
   self.timer = setInterval(function() {
      var memory = getMemory();
      self.label = memory + ' MB'

       if ( memory < 400 ) return;
       var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
        file.initWithPath('Z:\\BROWSER\\GiperFox\\!Lib\\!Clear-RAM.LNK');
       file.launch();

   
   }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек )

Картинка эллюстрация:
скрытый текст
https://d.radikal.ru/d16/1805/cb/d24dba225c65.jpg

1. Coroner https://forum.mozilla-russia.org/viewto … 39#p757739 У меня не получилось
2. Dumby https://forum.mozilla-russia.org/viewto … 42#p757742 Работает
3  Старый код который перестал работать с версии 60
скрытый текст
/*Initialization Code*/

// Настройка функций кликов мыши для кнопки ................................
this.onclick = function(e) {
     if ( e.button == 0 ) {
          var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") );
         
          // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
          memoryTab.addEventListener("pageshow", function c(e) {         
             this.removeEventListener( e.type, c );           

             setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);     
          });
          }
         
     if ( e.button == 1 ) gShowPopup(this);
     
     if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) {
          e.preventDefault();   
         
          // очистить кэш ....
          try {
              Services.cache.evictEntries(Ci.nsICache.STORE_IN_MEMORY);
              Services.cache.evictEntries(Ci.nsICache.STORE_ON_DISK);
              }
          catch(e) { Services.cache2.clear() }

          // Удалить Flash кукиси ....
          var dir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("Home", Ci.nsIFile);
          dir.append("Application Data");
          dir.append("Macromedia");
          if ( dir.exists() ) dir.remove(true);
          if ( !dir.exists() ) dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);

          // Всплывающее сообщение ....
          var alertService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);
          alertService.showAlertNotification('chrome://global/skin/icons/information-16.png', 'Показывать потребление памяти', 'Очистил кеш и удалил Flash кукиси');
          setTimeout(function() { alertService.closeAlert() }, 2500);
          }
};



// Показывать потребление памяти на текущей кнопке ................................
(function () {
   self.label = getMemory() + 'MB'; 
   self.timer = setInterval(function() {
      var memory = getMemory();
      self.label = memory + ' MB'

       if ( memory < 400 ) return;
       var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
        file.initWithPath('Z:\\BROWSER\\GiperFox\\!Lib\\!Clear-RAM.LNK');
       file.launch();
   
   }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек )
   
   
   
   
   
   // Получить потребление памяти в MB ....
   function getMemory() {           
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          }
      catch(e) { var memory = reporterManager.resident }; // для Nightly
     
      return ( Math.round( memory/1048576 ) );
   };

   // Стиль добавляет текст на кнопку ....
   var uri = makeURI('data:text/css,'+ encodeURIComponent('\
   %button% .toolbarbutton-icon {\
     display: none !important;\
   }\
   %button% .toolbarbutton-text {\
     display: -moz-box !important;\
   }\
   %button% {\
     -moz-box-orient: horizontal !important;\
   }\
   '.replace(/%button%/g, "#" + _id) ));
   const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
   
   // Удалять изменения ....
   addDestructor(function() {
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
     
})();


// Всплывающая подсказка у счётчика отображает заполнение дискового кеша ..............
var data = {
    memory: "Memory Cache:  ",
    disk: "Disk Cache:  ",
    offline: "Offline Cache:  "
};   
function getSize(size) {
   if (!size) return size === 0 ? "0" : "?";
   for(var count = -1; size >= 1024; size /= 1024, count++);
   return size.toFixed(2).replace(/0+$/, "").replace(/\.$/, "") + " " + ("KMGT"[count] || "") + "B";
}
function setInf(tot, max, type, i) {
   var inf = getSize(tot) + " / " + getSize(max);
   var key = "browser.cache." + type + ".enable";
   if (!Services.prefs.getBoolPref(key)) inf += " (disabled)";
   self.tooltipText = self.tooltipText.replace(zws(i), inf);
}
function zws(ind) "\u200B\u200B\u200B".slice(0, ++ind);

var types = Object.keys(data);
var ttt = types.map(function(key, i) data[key] + zws(i)).join("\n");
   
var context = Cu.import("resource://gre/modules/LoadContextInfo.jsm", {}).LoadContextInfo.default;
self.onmouseenter = function() {
   self.tooltipText = "Л: Подробно показать потребление памяти \nС: CB Меню \nП: Очистить кэш и удалить Flash-куки\n\n" + ttt;
   try {
       var entries = {};
       Services.cache.visitEntries({
       visitDevice: function(device, info) entries[device] = info,
       visitEntry: function() {}
       });
   types.forEach(function(type, i) {
      var info = entries[type];
      setInf(info && info.totalSize, info && info.maximumSize, type, i)
   });
       }
   catch(ex) {
       Services.cache2 && types.forEach(function(type, i) {
       var func = function(aEntryCount, aConsumption, aCapacity, aDiskDirectory)
                  setInf(aConsumption, aCapacity, type, i);
       var storage = Services.cache2[(type == "offline" ? "app" : type) + "CacheStorage"](context, null);
       try { storage.asyncVisitStorage({onCacheStorageInfo: func}, false) } catch(ex) {};
       });
       }
};

тут полностью готовый код для 60+ https://forum.mozilla-russia.org/viewto … 39#p758039
Изменено дабы не вносить путаницу...
Спасибо

Dumby
перепробовал сейчас методом тыка прикрутить сброс памяти при определенной цифре не получается!

скрытый текст
if ( memory < 400 ) return;
       var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
        file.initWithPath('путь до файла');
       file.launch();

Помогите пожалуйста если это возможно...
Я так полагаю отображение url  в строке завязано на этом:
скрытый текст
}, 500, "resource://gre/modules/Memory.jsm?" + _id);

нужно как-то задать
      var memory = "resource://gre/modules/Memory.jsm?" ;

Но так оно не работает :)
Белиберда конечно но я просто попытался объяснить смысл...

var memory = "resource://gre/modules/Memory.jsm?" ;
}, 500, memory + _id);
if ( memory < 400 ) return;
       var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
        file.initWithPath('путь до файла');
       file.launch();

Спасибо

suz191 пишет:

1. Coroner https://forum.mozilla-russia.org/viewto … 39#p757739 У меня не получилось

Ну тут уже выше моего понимания. :) У меня этот огрызок работает. Осталось лишь нажатия прикрутить...

скрытый текст
https://habrastorage.org/webt/mc/gz/3l/mcgz3lk2j7jhzqfw6ct3z42kngm.png

Про стиль в "справке" не забыли? Без него не прокатит.
скрытый текст

Выделить код

Код:

#id .toolbarbutton-text {
  color: #00FF00 !important;
  font-weight: bold !important; 
  font-size: 10px !important;
  Min-height: 23px !important;
  display: block !important; 
}


#id .toolbarbutton-icon {
  display: none !important;
}

Coroner пишет:

Про стиль в "справке" не забыли? Без него не прокатит.

скрытый текст

Выделить код

Код:

#id .toolbarbutton-text {
  color: #00FF00 !important;
  font-weight: bold !important; 
  font-size: 10px !important;
  Min-height: 23px !important;
  display: block !important; 
}


#id .toolbarbutton-icon {
  display: none !important;
}


в firefox 60+ Всё прописал сейчас работает!
А без стиля можно?
Получается все назад собирать постепенно?
С ней проще разобраться...
Сброс вставил
тут полностью готовый https://forum.mozilla-russia.org/viewto … 39#p758039
Изменено дабы не вносить путаницу...
картинка

скрытый текст
https://a.radikal.ru/a15/1805/4a/69d395e27b29.jpg

работает как старая на один процесс, а вторая на все процессы. :)

suz191 пишет:

А без стиля можно?

Вообще без стиля — нет. Он как раз цифры и буквы вместо значка и выводит.
В принципе его вроде в сам код вставить можно, кажется такие кнопки были тут, но я не подскажу сейчас как именно...

Coroner пишет:

Вообще без стиля — нет. Он как раз цифры и буквы вместо значка и выводит.
В принципе его вроде в сам код вставить можно, кажется такие кнопки были тут, но я не подскажу сейчас как именно...

Я думаю примерно так как-то.
https://forum.mozilla-russia.org/viewto … 39#p758039
Спасибо, получилось все работает:D

suz191
А где разместить этот код
memoryDisplay.style.cssText = "-moz-appearance: none; padding: 0; background-image: -moz-linear-gradient(#FF0, #0000E8, #FF0); margin-left: 1px; border: 0; color: #fff"; //
в коде кнопки?
Что-то с ним у меня кнопка не работает(

Garalf пишет:

suz191
А где разместить этот код
memoryDisplay.style.cssText = "-moz-appearance: none; padding: 0; background-image: -moz-linear-gradient(#FF0, #0000E8, #FF0); margin-left: 1px; border: 0; color: #fff"; //
в коде кнопки?
Что-то с ним у меня кнопка не работает(

Это было предположение, её просто нужно сейчас собрать потихоньку обратно отключая места которые её ломают и доработать...
Вот со стилем сразу в коде... вроде работает!
Черным запуск программы и стиль...
Если запуск какой либы программы не нужен выкинте его (первый черный отрезок)
Но этот счетчик, память показывает не правильно и он собственно на данный момент подходит именно для очистки т.к. это прикручено...
Счетчик просто для показа памяти ... На мой взгляд более правильной тут https://forum.mozilla-russia.org/viewto … 42#p757742
Второй черный отрезок это стиль :)
в firefox 60+ https://forum.mozilla-russia.org/viewto … 39#p758039
Спасибо Coroner и Dumby ещё бы всё это собрать в единое целое то цены бы не было :rolleyes:

suz191
Спасибо, так работает.

Еще бы Autocopy+3 оживить...

suz191 пишет:

её просто нужно сейчас собрать потихоньку обратно отключая места которые её ломают и доработать...

Её у меня ломал код, отвечающий за показ дискового кэша в подсказке. Код убрал, подсказку оставил.
У меня там было ещё очистка кэша, но я её давно уже выключил.
Все мои "нажатия", в том числе и по "Long Click" работают. Но это у меня, а как в оригинале было — я не помню. Может там и про кэш ничего и небыло... :angel:

Coroner пишет:

Все мои "нажатия", в том числе и по "Long Click" работают. Но это у меня, а как в оригинале было — я не помню. Может там и про кэш ничего и небыло... :angel:

Да и пусть так остается... Показывает чистит и хорошо... Все равно не правильно показывает :D Самое главное память сбрасывает :)
По-моему это был оригинал и он тоже работает, с вашим заголовком вставленным сверху и подсказки нету, она и не нужна:
в firefox 60+ https://forum.mozilla-russia.org/viewto … 39#p758039

suz191, без подсказки можно запутаться, если нажатий всяких много определено. :)
А вляпать её несложно. Вставляем после

Выделить код

Код:

sss.loadAndRegisterSheet(uri, 0);

и описываем по вкусу.

скрытый текст

Выделить код

Код:

self.onmouseenter = function() {
     self.tooltipText = "Left               => Настройки Mozilla FireFox\n" +
                   "Middle         => Дополнения\n" +
                   "Ctrl+Right   => Информация для решения проблем и плагины\n" +
                   "Alt+Right    => Vacuum очистка баз places.sqlite и Brief,\n" +
                   "                            удаление Flash-кукисов и запуск Afom.exe или Firemin\n" +
                   "Right            => About:About\n\n" +
                   "Long Left    => Производительность\n" +
                   "Long Right  => Открыть значение (выделенное или из буфера) в About:Config\n\n" +
                   "Shift+Right  => Меню кнопки\n\n";
                   };

Народ, так готовый хэппи энд будет, для "особо одаренных", вроде меня :)? Чтоб код копирнул и всё.
А то "вставь сюда","вляпай туда"...
Вообще мёртвая кнопка. Код взял с предпоследнего поста от suz191
Пробовал вставлять описание кликов с предыдущего от Coroner - результат тот-же.
W7x64  FF_ESR-52.7.4 (x32)

JKT пишет:

W7x64  FF_ESR-52.7.4 (x32)

Так и берите готовую кнопку. Вы же берёте всё после сообщения

suz191 пишет:

в 60 firefox перестало работать и кнопка и строка состояния

Чего бы ему работать на 52?

Вам в самое начало темы, на страницу номер 1. https://forum.mozilla-russia.org/viewto … 30#p528430
Остальные переделки рассматривать не стоит.

Coroner
Спасибо. Всё работает.

Memory Monitor Firefox 60+

1. Старый Код с не правильно отображающейся памятью и использованием запуска внешней программы для очистки памяти
     Л: Открыть about:memory
     П: Очистка Кеш и удаление Flash-кукисов
(подсказка есть, очистка выделена черным и если не используете можете удалить эти строки):

скрытый текст

/*Initialization Code*/

// ====================================================================================
// Memory Monitor ................................
// https://forum.mozilla-russia.org/viewtopic.php?id=52237
// ====================================================================================
var idbut=this.id;
var urlbar = document.getElementById("page-action-buttons");
var button = document.getElementById(idbut);
urlbar.insertBefore(button, urlbar.lastChild);

var style = custombutton.buttonGetHelp(self).replace(/id/g, _id);
var uri = makeURI('data:text/css,'+ encodeURIComponent(style));
var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
sss.loadAndRegisterSheet(uri, 0);

// Подсказка кнопки ................................
this.tooltipText = "Л:  Открыть about:memory\nП: Очистка Кеш и удаление Flash-кукисов";       

                   
// Настройка функций кликов мыши для кнопки ................................
this.onclick = function(e) {
     if ( e.button == 0 ) {
          var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") );
         
          // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
          memoryTab.addEventListener("pageshow", function c(e) {         
             this.removeEventListener( e.type, c );           

             setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);     
          });
          }
         
     if ( e.button == 1 ) gShowPopup(this);
     
     if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) {
          e.preventDefault();   
         
          // очистить кэш ....
          try {
              Services.cache.evictEntries(Ci.nsICache.STORE_IN_MEMORY);
              Services.cache.evictEntries(Ci.nsICache.STORE_ON_DISK);
              }
          catch(e) { Services.cache2.clear() }

          // Удалить Flash кукиси ....
          var dir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("Home", Ci.nsIFile);
          dir.append("Application Data");
          dir.append("Macromedia");
          if ( dir.exists() ) dir.remove(true);
          if ( !dir.exists() ) dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);

          // Всплывающее сообщение ....
          var alertService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);
          alertService.showAlertNotification('chrome://global/skin/icons/information-16.png', 'Показывать потребление памяти', 'Очистил кеш и удалил Flash кукиси');
          setTimeout(function() { alertService.closeAlert() }, 2500);
          }
};

// Показывать потребление памяти на текущей кнопке
(function () { 
   self.timer = setInterval(function() {
   var memory = getMemory();
   self.label = getMemory() + ' mb'
     
       if ( memory < 300 ) return;
       var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
        file.initWithPath('буква диска:\\путь\\до\\файла.расширение');
       file.launch();

      
   }, 2000 );
 
// Получить всю занимаемую оперативную память в MB ....
   function getMemory() {           
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          }
      catch(e) { var memory = reporterManager.resident; } // FF26 - Nightly
     
      return ( Math.round( memory/1048576 ) );
   };     

// Стиль добавляет текст на кнопку ....
   var uri = makeURI('data:text/css,'+ encodeURIComponent('\
   %button% .toolbarbutton-icon {\
     display: none !important;\
   }\
   %button% .toolbarbutton-text {\
     display: -moz-box !important;\
   }\
   %button% {\
     -moz-box-orient: horizontal !important;\
   }\
   '.replace(/%button%/g, "#" + _id) ));
   const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
   
// Удалять счётчик памяти и другие изменения ....
  addDestructor(function() {
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
})();


2. Код кнопки в строке с просто правильно отображающейся памятью и без прибабахов тут: https://forum.mozilla-russia.org/viewto … 42#p757742

suz191, парочка вопросов:
1. Стиль в код перенесён — даёт это какую пользу, или просто так удобнее?
2. Нажатие в about:memory можно переделать на "Garbage Collection", или сразу на "Minimize Memory Usage"?

Coroner пишет:

suz191, парочка вопросов:
1. Стиль в код перенесён — даёт это какую пользу, или просто так удобнее?
2. Нажатие в about:memory можно переделать на "Garbage Collection", или сразу на "Minimize Memory Usage"?

Добрый день...
1. Удобнее в плане лени :)  (скопировал и вставил) :)
2. Я не знаю! Но, попробовать наверное можно... Я просто собрал её из старой, по вашим исходникам :)
И сделал одно сообщение тут, а старые сообщения с кодом поправил ссылкой на это сообщение, чтоб не создавалось в теме хаоса, а то было в каждом сообщении по кусочку кода... :)

del

Coroner пишет:

suz191, парочка вопросов:
Нажатие в about:memory можно переделать на "Garbage Collection", или сразу на "Minimize Memory Usage"?

Идея понравилась...
Можно попробовать совместить с этим! http://custombuttons.sourceforge.net/fo … amp;t=3556
Тогда по сути наверное и сброс памяти не нужен будет никакой внешней программой...
Как вам такой Вариант?

suz191 пишет:

Как вам такой Вариант?

Хороший вариант. :) Главное что реализуется легко. :D

скрытый текст

Выделить код

Код:

if ( e.button == ... { // по вкусу

doMMU();
function doMMU() {
    let gMgr = Cc["@mozilla.org/memory-reporter-manager;1"]
        .getService(Ci.nsIMemoryReporterManager);
    Services.obs.notifyObservers(null, "child-mmu-request", null);
    gMgr.minimizeMemoryUsage(null, false, false);
}

};

Добрый день! В новом Firefox
Перестал работать правильный монитор от Dumby
из поста https://forum.mozilla-russia.org/viewto … 42#p757742
Они что-то сделали с адресной стройкой и больше он там не отображается!
Не мог ли бы кто-нибудь помочь заставить его отображаться? У меня не получается.
Спасибо! :)

Dumby пишет:

suz191
Ну, я попробовал просто вывести в адресную строку лейбл,
отображающий расход памяти. (типа как на странице about:performance)

Вроде что-то показывает на Firefox 60, и, даже, на Nightly 62 (2018-05-10).

скрытый текст

Выделить код

Код:

setTimeout(url => {
    var mode = "rss"; // "rss" - Resident Set Size, "uss" - Unique Set Size
    var interval = 1500; // ms

    var before = null;
    var parent = before ? before.parentNode : document.getElementById("page-action-buttons");
    var lab = parent.insertBefore(document.createElement("label"), before);

    var nsvo = Cu.import(url, {});
    if (!("labels" in nsvo)) {
        nsvo.labels = new Set();
        var mb = 1024 * 1024, gb = mb * 1024;
        var format = num => num < gb
            ? Math.round(num / mb) + "MB"
            : (Math.round(100 * num / gb) / 100).toFixed(2) + "GB";
        var updateLabels = bytes => {
            if (bytes) for(var lab of nsvo.labels)
                lab.setAttribute("value", format(bytes));
        }
        if (Services.ppmm.childCount == 1) {
            var mrm = Cc["@mozilla.org/memory-reporter-manager;1"]
                .getService(Ci.nsIMemoryReporterManager);
            var prop = "resident" + (mode == "uss" ? "Unique" : "");
            var tick = () => updateLabels(mrm[prop]);
        } else {
            var tick = async () => {
                var res = await nsvo.Memory.summary(), bytes = 0;
                for(var prop in res) bytes += res[prop][mode];
                updateLabels(bytes);
            }
        }
        tick(); nsvo.intId = nsvo.setInterval(tick, interval);
    }
    nsvo.labels.add(lab);
    addDestructor(reason => {
        nsvo.labels.delete(lab); lab.remove();
        if (reason[5] == "e" && !nsvo.labels.size)
            nsvo.clearInterval(nsvo.intId), Cu.unload(url);
    });
}, 500, "resource://gre/modules/Memory.jsm?" + _id);


suz191 пишет:

Добрый день! В новом Firefox
Перестал работать правильный монитор от Dumby
из поста https://forum.mozilla-russia.org/viewto … 42#p757742

Разобрался вроде! отсуцтвует вот это resource://gre/modules/Memory.jsm

А где он теперь лежит? :|

Подскажите пожалуйста как впендюрить resource://gre/modules/Memory.jsm
Обратно? :D
Спасибо :)

suz191 пишет:

как впендюрить resource://gre/modules/Memory.jsm
Обратно?

Например, посмотри как вырезали и сделай наоборот.
Или сначала напиши что-нибудь простенькое, вдруг сойдёт. Ну типа

скрытый текст

Выделить код

Код:

((g, id) => {
    // Resident Set Size: "resident"
    // Unique Set Size:   "residentUnique"
    var mode = "resident";

    var mm = g[id] || (g[id] = ({
        init() {
            var mb = 1024 * 1024, gb = mb * 1024;
            this.format = num => num < gb
                ? Math.round(num / mb) + "MB"
                : (Math.round(100 * num / gb) / 100).toFixed(2) + "GB";
            this.ppmm.addMessageListener(id, this);
            this.timer.initWithCallback(
                this, 1500, this.timer.TYPE_REPEATING_SLACK
            );
            this.notify();
            return this;
        },
        destroy() {
            delete g[id];
            this.timer.cancel();
            this.ppmm.removeMessageListener(id, this);
        },
        url: `data:,
            sendAsyncMessage(
                "${id}",
                Cc["@mozilla.org/memory-reporter-manager;1"]
                    .getService(Ci.nsIMemoryReporterManager)
                    .${mode}
            )
        `.replace(/\s/g, ""),
        ppmm: Services.ppmm,
        timer: Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer),
        notify() {
            this.total = this.count = 0;
            this.childCount = this.ppmm.childCount;
            this.ppmm.loadProcessScript(this.url, false);
        },
        receiveMessage(msg) {
            this.total += msg.data;
            if (++this.count != this.childCount) return;
            var val = this.format(this.total);
            for(var lab of this.labels)
                lab.setAttribute("value", val);
        },
        labels: new Set(),
        register(doc, before) {
            var parent = before ? before.parentNode
                : doc.getElementById("page-action-buttons");
                var lab = doc.createElement("label");
                this.labels.add(lab);
                lab.id = id;
                doc.defaultView.setTimeout(() =>
                    this.labels.has(lab) && parent.insertBefore(lab, before)
                , 500);
                return lab;
        },
        unregister(lab) {
            lab.remove();
            this.labels.delete(lab);
            this.labels.size || this.destroy();
        }
    }).init());
    var lab = mm.register(document);
    addDestructor(() => mm.unregister(lab));
})(ChromeUtils.import("resource://gre/modules/Services.jsm", null), "CBMemoryMonitorIndicator");


Вобще, nsIMemoryReporterManager.getReports() показывал бы
и подробнее и точнее (как минимум, плюс GPU процесс), но
метод тормозной и сильно напрягает браузер, так что не подходит.

Dumby пишет:

Или сначала напиши что-нибудь простенькое, вдруг сойдёт.

Огромное спасибо! :) Работает!
По поводу nsIMemoryReporterManager.getReports() не очень понял! Но, в этом коде его нет значить тормозить не должен!
Ещераз огромное спасибо! :)