Рубрика «потребление памяти»

Содержание

  1. Общие сведения.

  2. Увеличиваем потребление памяти вдвое.

  3. Увеличиваем потребление памяти втрое.

  4. Ещё раз увеличиваем потребление памяти на ровном месте.

  5. Заключение.

Общие сведения

Известно, что PHP активно использует механизм copy-on-write. Это означает, что при попытке внутри функции что-то записать в переданные ей параметры вначале будет сделана копия этой переменной, а уж затем в неё что-то запишется. Такая же ситуация наблюдается с итерацией массива с помощью foreachЧитать полностью »

Строка на 1,5 гигабайта - 1

На своей предыдущей работе я занимался поддержкой Java-сервиса, обеспечивавшего удалённую функциональность UI подобно RDP или Citrix. Этот сервис был устроен на основе сессий, состоявших из взаимосвязанных объектов Java, которые должны были очищаться или после выхода пользователя, или после истечения заданного таймаута.

На этапе планирования нагрузок мы обнаружили существенные траты памяти, о причинах которых я бы хотел рассказать в этой статье.
Читать полностью »

Как уместить все приложения в 16 Гб ОЗУ на macOS - 1Заголовок может вам показаться странным, если вы не используете macOS, но если вы пользуетесь продуктами экосистемы Apple (особенно ноутбуками или iMac Retina 4K), то в процессе работы можете столкнуться с неприятной проблемой: все необходимые для работы инструменты никак не хотят помещаться в 16 Гб оперативной памяти, и система начинает периодически «тормозить» и использовать большое количество сжатой памяти и свопа.

В интернете есть много тривиальных статей, как можно уменьшить потребление памяти на macOS из серии «выключите ненужные программы, установите The Great Suspender для Google Chrome» и т.д. Если вы перепробовали эти советы и всё равно страдаете от недостатка памяти, то я бы хотел поделиться опытом, как лично я решаю эти проблемы.

Читать полностью »

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

КДПВ

В Python всё немного сложнее: парсеров два. Первый парсер руководствуется грамматикой, заданной в файле Grammar/Grammar в виде регулярных выражений (с не совсем обычным синтаксисом). По этой грамматике при помощи Parser/pgen во время компиляции python генерируется целый набор конечных автоматов, распознающих заданные регулярные выражения — по одному КА для каждого нетерминала. Формат получающегося набора КА описан в Include/grammar.h, а сами КА задаются в Python/graminit.c, в виде глобальной структуры _PyParser_Grammar. Терминальные символы определены в Include/token.h, и им соответствуют номера 0..56; номера нетерминалов начинаются с 256.

Проиллюстрировать работу первого парсера проще всего на примере.
Пусть у нас есть программа if 42: print("Hello world")Читать полностью »

  Пост навеян статьей Сколько памяти потребляют объекты в PHP..., размышлениями над самописной ORM и книгой Мэтта Зандстра «PHP. Объекты, шаблоны и методики программирования» (ISBN 978-5-8459-1689-1).
  Мэтт в главе «Шаблоны баз данных» пишет о том, что если нужно создать несколько тысяч объектов из базы, то для экономии памяти, нужно решать эту задачу не «в лоб», а генерировать объекты по требованию, используя интерфейс Iterator.
  Первая мысль была: «Если мы достали 5000 записей из базы, значит мы хотим все их как-то обработать, и какая разница. сразу будут созданы объекты или по требованию?», но потом понял — если вся работа с каждым объектом происходит внутри цикла foreach или while( next() ), то создание объекта по требованию и автоматическое его уничтожение на следующем витке цикла даст существенную экономию памяти. На деле оказалось — очень существенную.
Читать полностью »

Сколько памяти потребляют объекты в PHP и стоит ли использовать 64 битную версию?

На этот пост меня вдохновило исследование потребления памяти для моего текущего большого проекта на ZendFramework. Как обычно, по результатам исследования, я был шокирован нашей программистской самонадеянностью, которая нередко присутствует, когда мы пишем что-либо большое на PHP. Да и, наверное, не только на PHP.

Но обо всём по порядку.

Данная статья является логическим продолжением следующих статей:

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js