Size: a a a

2020 May 05

SB

Sergey Bodrov in Delphi & Lazarus
Вспомнил, зачем я вообще GlobalAlloc() использовал вместо стандартного GetMem(). Это был 32-битный сервис для Винды, который работает круглосуточно месяцами. Стандартных 2Гб на процесс хватало на месяц работы (или 2-3 дня на предельной нагрузке), потом начинались проблемы с фрагментацией памяти. Поэтому вместо стандартного TMemoryStream использовался свой аналог, на базе GlobalAlloc(), который мог использовать память за пределами доступных приложению 2Гб. Потом для больших блоков стал использовать файлы с атрибутом "временный" (хранится в памяти и автоматом свопится на диск если памяти не хватает), самый оптимальный вариант.
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Vitaly Orz.
Скиньте если не сложно ссылку почитать
WebDAV'ом можно подключить диск как том винды и работать как с обычным диском. к слову. компоненты существуют, но с ними будет возни слегка
источник

DB

Dmitry Belkevich in Delphi & Lazarus
источник

DB

Dmitry Belkevich in Delphi & Lazarus
первый встречный линк, гугли еще
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Sergey Bodrov
Вспомнил, зачем я вообще GlobalAlloc() использовал вместо стандартного GetMem(). Это был 32-битный сервис для Винды, который работает круглосуточно месяцами. Стандартных 2Гб на процесс хватало на месяц работы (или 2-3 дня на предельной нагрузке), потом начинались проблемы с фрагментацией памяти. Поэтому вместо стандартного TMemoryStream использовался свой аналог, на базе GlobalAlloc(), который мог использовать память за пределами доступных приложению 2Гб. Потом для больших блоков стал использовать файлы с атрибутом "временный" (хранится в памяти и автоматом свопится на диск если памяти не хватает), самый оптимальный вариант.
fastmm в помощь. с ним фрагментация сильно меньше. а с пятым, пишут, и еще меньше. вообще, то я временные большие куски  файлами поделал (TFileStream против TMemoryStream), стало сразу сильно легче при почти минимальной просадке скорости - кэширование видимо спасает
источник

SB

Sergey Bodrov in Delphi & Lazarus
Dmitry Belkevich
fastmm в помощь. с ним фрагментация сильно меньше. а с пятым, пишут, и еще меньше. вообще, то я временные большие куски  файлами поделал (TFileStream против TMemoryStream), стало сразу сильно легче при почти минимальной просадке скорости - кэширование видимо спасает
По моим наблюдениям, в FastMM есть три вида блоков памяти - Small, Medium, Large. Блоки Small глубоко оптимизированы. Блоки Medium оптимизированы только для размещения в страницах памяти размером 4К. А блоки Large никак не оптимизированы.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Не, что-то путаю. Small и Medium работают похожим образом, там какой-то сложный непонятный механизм управления блоками и сегментами. А у Large все просто.
источник

SB

Sergey Bodrov in Delphi & Lazarus
У меня были проблемы именно с большими блоками, от сотни килобайт.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Немного разобрался. Блоки Large выделяются с помощью VirtualAlloc() из памяти процесса (которой для 32 битных программ всего 2Гб). Это видно в диспетчере задач в колонке "выделенная паять" или "виртуальный набор".
источник

SB

Sergey Bodrov in Delphi & Lazarus
Блоки Medium от 2.5К до 160К выделяются внутри блоков Large.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Блоки Small до 2.5К разделены на полсотни типов, до 160 байт с шагом 8 байт, потом до 320 с шагом 16 байт, итд...
источник

SB

Sergey Bodrov in Delphi & Lazarus
Плюс хитрый механизм резервирования памяти для динамических массивов и строк, чтобы при добавлении элементов не делать лишних перераспределений памяти.
источник

VO

Vitaly Orz. in Delphi & Lazarus
Ссорян ещё вопрос от дилетанта посоветуйте компоненты для работы с почтой
источник

VO

Vitaly Orz. in Delphi & Lazarus
Нужно читать и отправлять письма в автоматическом режиме
источник

VO

Vitaly Orz. in Delphi & Lazarus
Indy или что то другое
источник

DB

Dmitry Belkevich in Delphi & Lazarus
синапс/инди. синапс, пишут, лучше. я впрочем разницы не заметил
источник

VO

Vitaly Orz. in Delphi & Lazarus
🆗
источник

VO

Vitaly Orz. in Delphi & Lazarus
Буду погружатся
источник

VO

Vitaly Orz. in Delphi & Lazarus
Indy же по моему реализован в обьезьянах. Тоесть он кроспла форменный вррде
источник

VO

Vitaly Orz. in Delphi & Lazarus
Нужен будет потом андроид.
источник