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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№22628-02-2018 14:31:14

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

Re: [CB]Memory Monitor

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

Отсутствует

 

№22728-02-2018 14:46:20

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

Re: [CB]Memory Monitor

drage2 пишет:

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

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

Отсутствует

 

№22828-02-2018 16:51:36

drage2
Участник
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 173
UA: Firefox 56.0

Re: [CB]Memory Monitor

Mishania

Mishania пишет:

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

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

bunda1 пишет:

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

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

Отредактировано drage2 (28-02-2018 17:47:54)

Отсутствует

 

№22928-02-2018 17:46:39

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

Re: [CB]Memory Monitor

drage2 пишет:

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

Не знаю.

Отсутствует

 

№23028-02-2018 17:49:57

drage2
Участник
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 173
UA: Firefox 56.0

Re: [CB]Memory Monitor

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

Выделить код

Код:

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

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

Отредактировано drage2 (28-02-2018 17:51:21)

Отсутствует

 

№23128-02-2018 18:38:44

suz191
Участник
 
Группа: Members
Зарегистрирован: 03-01-2017
Сообщений: 48
UA: Firefox 58.0

Re: [CB]Memory Monitor

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

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

Отсутствует

 

№23228-02-2018 18:45:11

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

Re: [CB]Memory Monitor

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 (28-02-2018 18:47:35)

Отсутствует

 

№23328-02-2018 19:08:55

suz191
Участник
 
Группа: Members
Зарегистрирован: 03-01-2017
Сообщений: 48
UA: Firefox 58.0

Re: [CB]Memory Monitor

Mishania пишет:

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

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

Отредактировано suz191 (28-02-2018 19:11:24)

Отсутствует

 

№23428-02-2018 22:03:34

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

Re: [CB]Memory Monitor

drage2 пишет:

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

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

Отсутствует

 

№23501-03-2018 00:24:21

drage2
Участник
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 173
UA: Firefox 56.0

Re: [CB]Memory Monitor

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);

Отсутствует

 

№23601-03-2018 01:42:33

suz191
Участник
 
Группа: Members
Зарегистрирован: 03-01-2017
Сообщений: 48
UA: Firefox 58.0

Re: [CB]Memory Monitor

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

Отсутствует

 

№23703-03-2018 15:19:46

drage2
Участник
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 173
UA: Firefox 56.0

Re: [CB]Memory Monitor

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

Отредактировано drage2 (03-03-2018 15:27:59)

Отсутствует

 

№23813-03-2018 21:38:22

suz191
Участник
 
Группа: Members
Зарегистрирован: 03-01-2017
Сообщений: 48
UA: Firefox 57.0

Re: [CB]Memory Monitor

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


Спасибо!

Отредактировано suz191 (13-03-2018 22:47:23)

Отсутствует

 

№23915-04-2018 11:56:47

shurik842
Участник
 
Группа: Members
Зарегистрирован: 15-04-2018
Сообщений: 1
UA: unknown 0.0

Re: [CB]Memory Monitor

Всем привет!

Мои пять копеек к данной теме. У меня 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 (15-04-2018 11:59:19)

Отсутствует

 

№24017-04-2018 01:05:19

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

Re: [CB]Memory Monitor

shurik842
:offtopic:

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

Отредактировано xrun1 (17-04-2018 01:07:30)

Отсутствует

 

№24117-04-2018 18:22:34

drage2
Участник
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 173
UA: Firefox 57.0

Re: [CB]Memory Monitor

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

Отсутствует

 

№24210-05-2018 19:29:15

suz191
Участник
 
Группа: Members
Зарегистрирован: 03-01-2017
Сообщений: 48
UA: Firefox 59.0

Re: [CB]Memory Monitor

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

Отредактировано suz191 (17-05-2018 22:00:14)

Отсутствует

 

№24311-05-2018 09:27:20

Coroner
Участник
 
Группа: Members
Зарегистрирован: 29-10-2012
Сообщений: 3026
UA: Firefox 59.0

Re: [CB]Memory Monitor

suz191 пишет:

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

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

Отсутствует

 

№24411-05-2018 12:15:26

suz191
Участник
 
Группа: Members
Зарегистрирован: 03-01-2017
Сообщений: 48
UA: Firefox 59.0

Re: [CB]Memory Monitor

Coroner пишет:

suz191 пишет:

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

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

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

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

Отсутствует

 

№24511-05-2018 13:59:40

Coroner
Участник
 
Группа: Members
Зарегистрирован: 29-10-2012
Сообщений: 3026
UA: Firefox 60.0

Re: [CB]Memory Monitor

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

Отсутствует

 

№24611-05-2018 14:10:33

drage2
Участник
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 173
UA: Firefox 57.0

Re: [CB]Memory Monitor

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

Отсутствует

 

№24711-05-2018 14:16:58

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

Re: [CB]Memory Monitor

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);

Отсутствует

 

№24811-05-2018 15:16:45

suz191
Участник
 
Группа: Members
Зарегистрирован: 03-01-2017
Сообщений: 48
UA: Firefox 59.0

Re: [CB]Memory Monitor

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
Изменено дабы не вносить путаницу...
Спасибо

Отредактировано suz191 (17-05-2018 23:10:34)

Отсутствует

 

№24911-05-2018 20:50:31

suz191
Участник
 
Группа: Members
Зарегистрирован: 03-01-2017
Сообщений: 48
UA: Firefox 59.0

Re: [CB]Memory Monitor

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

Спасибо

Отсутствует

 

№25011-05-2018 21:10:37

Coroner
Участник
 
Группа: Members
Зарегистрирован: 29-10-2012
Сообщений: 3026
UA: Firefox 60.0

Re: [CB]Memory Monitor

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 (11-05-2018 21:12:02)

Отсутствует

 

Board footer

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