Мой первый язык был C, C++. Оба этих языка не имеют сборщика мусора. В нем всякий раз, когда вы выделяете некоторую память динамически, вы должны ее освободить. Для обычных переменных, таких как int a, char str[10] и т. д., память автоматически выделяется и освобождается. Для динамически выделяемой памяти, такой как int *p = new int[10], программисты несут ответственность за освобождение памяти, когда она больше не нужна. Если программист не освобождает память, это вызывает утечку памяти (память не освобождается до завершения работы программы).

C использует функции malloc() и calloc() для динамического выделения памяти во время выполнения и использует функцию free() для освобождения динамически выделяемой памяти. C++ поддерживает эти функции, а также имеет два оператора new и delete, которые лучше и проще выполняют задачу выделения и освобождения памяти.

Давайте поговорим об этих языках более высокого порядка, в которых есть прекрасная концепция сборки мусора. Java, Javascript и т. д. Для памяти есть 3 фазы. Распределено, использовано и освобождено. Освобождение выполняется разработчиком на C, C++, в то время как об этом заботится сборщик мусора в CPP. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management для алгоритмов того, как происходит сборка мусора.

Прекрасным инструментом для мониторинга этой динамической памяти в Chrome является Profiler. Вы можете использовать это, чтобы увидеть, как распределение и освобождение происходит автоматически с графиками.

Моя проблема заключалась в том, что я звонил в хранилище Chrome, чтобы получить информацию о странице через разбивку на страницы и регистрировал ее. Таким образом, GC не смог освободить хранилище из-за ведения журнала, и после нескольких изменений страниц мой браузер стал очень медленным. Освобождения не происходило, и память постоянно увеличивалась. После долгих проб и ошибок я понял первопричину входа в консоль!

Вы можете связаться с автором по адресу [email protected]