Подтвердить что ты не робот

Google Chrome Heap Snapshots (закрытие), (массив), (система), (соблюденный код) под контролем программиста?

Я заметил, что свойства, о которых я упоминал в названии, значительно повышаются на моей странице (особенно "закрытие" ).

Поддерживается ли эта ОС и/или браузер? Могу ли я что-нибудь с этим сделать?

Что такое (закрытие), (массив), (скомпилированный код), (система) и т.д.?

Кроме того, в чем разница между (массивом) и "массивом"?

Спасибо заранее.

4b9b3361

Ответ 1

Относительно вашего вопроса:

Q: Что такое (закрытие), (массив), (скомпилированный код), (система) и т.д.

Этот фрагмент из статьи Адди Османи может помочь:

  • (глобальное свойство) - промежуточные объекты между глобальным объектом (например, "окно" ) и объектом, на который он ссылается. Если объект создается с использованием Person конструктора и удерживается глобальным объектом, путь сохранения будет выглядеть как [global] > (глобальное свойство) > Person. Это контрастирует с нормой, где объекты напрямую ссылаются друг на друга. По соображениям производительности у нас есть промежуточные объекты. Глобалы изменяются регулярно, и оптимизация доступа к ресурсам делает хорошую работу для неглобальных объектов, которые не применимы для глобальных переменных.

  • (корни). Корневые записи в представлении дерева сохранения являются объектами, которые имеют ссылки на выбранный объект. Это также могут быть ссылки, созданные движком для его собственных целей. У механизма есть кеши, которые ссылаются на объекты, но все такие ссылки слабы и не препятствуют собиранию объекта, учитывая, что нет действительно сильных ссылок.

  • (замыкание) - количество ссылок на группу объектов через закрытие функций

  • (array, string, number, regexp) - список типов объектов со свойствами, которые ссылаются на Array, String, Number или регулярное выражение

  • (скомпилированный код) - просто, все, что связано с скомпилированным кодом. Script похож на функцию, но соответствует телу. SharedFunctionInfos (SFI) - это объекты, стоящие между функциями и скомпилированным кодом. Обычно функции имеют контекст, а SFI - нет.

  • HTMLDivElement, HTMLAnchorElement, DocumentFragment и т.д. - ссылки на элементы или объекты документа определенного типа, на которые ссылается ваш код.

В полной статье есть много других ценных самородков информации о профилировании кучи: http://addyosmani.com/blog/taming-the-unicorn-easing-javascript-memory-profiling-in-devtools

И ваш другой вопрос:

Q:. Какая разница между (массивом) и "массивом"?

На основе описания Addy моя интерпретация такова: (массив) представляет собой совокупность объектов (любого типа), у которых есть свойство, которое ссылается на фактический массив. Напротив, Массив - это список фактических объектов Array.

Ответ 2

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

Вот пример:

var closure = (function() {
   var a = "some data";
   var b = "something else...";
   return function Closure() {
      // this function retains references to a and b.
   }
})();

Самый распространенный способ, с помощью которого вы закончите закрытие веб-разработки, - это подключить прослушиватели событий к dom-узлам.

Пример:

$.ready(function() {
   var $elems = $("selector");
   var tools = new Tools();
   $elems.mousedown(function() { // <-- this has created a closure
      // We can refer to $elems and tools in here
      // and so as long as this function is held on to so are those variables to which
      // it has access
   });
});

Вы проверяете это и фактически видите счетчик (закрытия), если вы

  • pop open chrome
  • взять кучу кучи
  • бежать: function DistinctName() {} function DistinctName2() {}

    в консоли javascript

  • возьмите еще один куча кучи

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

Вы увидите, что DistinctName и DistinctName2 отображаются в виде новых закрытий в категории (closure).

v8 имеет компилятор "JIT", поэтому я предполагаю (скомпилирован) ссылается на скомпилированный источник JIT.

Я могу только догадываться (массив) и (система).