Полезная информация

На IRC-канале #mozilla-ru можно получить техническую консультацию онлайн и, конечно же, порцию общения.

№10111-03-2014 21:51:00

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4780
UA: Firefox 3.6

Re: [CB]Memory Monitor

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 я не знаю :(

Отсутствует

 

№10212-03-2014 02:10:33

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 524
UA: Firefox 27.0

Re: [CB]Memory Monitor

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

bunda1 пишет:

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

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

Отсутствует

 

№10312-03-2014 20:43:47

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4780
UA: Firefox 3.6

Re: [CB]Memory Monitor

xrun1 пишет:

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

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

Отсутствует

 

№10412-03-2014 22:23:01

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 524
UA: Firefox 27.0

Re: [CB]Memory Monitor

bunda1

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

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

Отсутствует

 

№10525-03-2014 02:06:16

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 523
UA: Firefox 28.0
Веб-сайт

Re: [CB]Memory Monitor

ЛКМ вызывает 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 (26-03-2014 01:25:29)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№10626-03-2014 22:40:21

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4780
UA: Firefox 3.6

Re: [CB]Memory Monitor

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 (26-03-2014 22:59:49)

Отсутствует

 

№10727-03-2014 00:18:43

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 523
UA: Firefox 28.0
Веб-сайт

Re: [CB]Memory Monitor

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 и что это такое?


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№10827-03-2014 00:56:03

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4780
UA: Firefox 3.6

Re: [CB]Memory Monitor

difabor пишет:

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

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

Отсутствует

 

№10901-04-2014 08:54:33

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 523
UA: Firefox 28.0
Веб-сайт

Re: [CB]Memory Monitor

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


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№11004-09-2014 12:23:17

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 524
UA: Firefox 32.0

Re: [CB]Memory Monitor

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) {};
   });
   
})();

Отсутствует

 

№11104-09-2014 22:52:47

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4780
UA: Firefox 24.0

Re: [CB]Memory Monitor

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 (04-09-2014 23:01:20)

Отсутствует

 

№11205-09-2014 00:24:32

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 524
UA: Firefox 32.0

Re: [CB]Memory Monitor

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.

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

Отредактировано xrun1 (05-09-2014 12:37:41)

Отсутствует

 

№11305-09-2014 02:19:07

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 32.0

Re: [CB]Memory Monitor

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


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№11405-09-2014 08:08:31

Mishania
Участник
 
Группа: Members
Зарегистрирован: 22-10-2011
Сообщений: 353
UA: Firefox 32.0

Re: [CB]Memory Monitor

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

Отредактировано Mishania (05-09-2014 09:18:22)

Отсутствует

 

№11506-09-2014 20:09:29

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4780
UA: Firefox 24.0

Re: [CB]Memory Monitor

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 (06-09-2014 20:12:38)

Отсутствует

 

№11606-09-2014 22:05:40

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 32.0

Re: [CB]Memory Monitor

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


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№11720-09-2014 12:36:00

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 524
UA: Firefox 32.0

Re: [CB]Memory Monitor

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

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

Отсутствует

 

№11823-09-2014 17:19:25

PEAKTOP
Участник
 
Группа: Members
Зарегистрирован: 07-10-2009
Сообщений: 111
UA: Firefox 24.0

Re: [CB]Memory Monitor

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) {};
   });
})();

Отредактировано PEAKTOP (23-09-2014 17:37:06)


1. Приму из добрых рук щедрый дар - инвайт на Хабр и Лепру
2. Бессмысленно осмысливать смысл неосмысленными мыслями!
3. Прежде чем подумать - подумай!

Отсутствует

 

№11922-11-2014 20:24:21

PEAKTOP
Участник
 
Группа: Members
Зарегистрирован: 07-10-2009
Сообщений: 111
UA: unknown 0.0

Re: [CB]Memory Monitor

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


1. Приму из добрых рук щедрый дар - инвайт на Хабр и Лепру
2. Бессмысленно осмысливать смысл неосмысленными мыслями!
3. Прежде чем подумать - подумай!

Отсутствует

 

№12025-11-2014 12:56:14

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4780
UA: Firefox 24.0

Re: [CB]Memory Monitor

PEAKTOP пишет:

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

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

Отсутствует

 

№12125-11-2014 14:14:42

PEAKTOP
Участник
 
Группа: Members
Зарегистрирован: 07-10-2009
Сообщений: 111
UA: unknown 0.0

Re: [CB]Memory Monitor

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

Отредактировано PEAKTOP (25-11-2014 18:36:25)


1. Приму из добрых рук щедрый дар - инвайт на Хабр и Лепру
2. Бессмысленно осмысливать смысл неосмысленными мыслями!
3. Прежде чем подумать - подумай!

Отсутствует

 

№12225-11-2014 14:32:45

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 956
UA: Firefox 31.0

Re: [CB]Memory Monitor

bunda1 пишет:

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

img

Отсутствует

 

№12325-11-2014 19:16:12

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4780
UA: Firefox 24.0

Re: [CB]Memory Monitor

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, печально. А если мне удасться выяснить у знатоков как это делается, добавишь в кнопку?

Хорошо.

Отредактировано bunda1 (25-11-2014 19:17:06)

Отсутствует

 

№12425-11-2014 19:31:51

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 956
UA: Firefox 31.0

Re: [CB]Memory Monitor

?

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

Выделить код

Код:

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

Отсутствует

 

№12525-11-2014 19:57:24

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4780
UA: Firefox 24.0

Re: [CB]Memory Monitor

Dumby
Спасибо :)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2011 Mozilla Russia
Язык отображения форума: [Русский] [English]