FreeMem

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Re: FreeMem

Сообщение скалогрыз » 08.12.2020 00:52:58

runewalsh писал(а):RESET'нутые страницы переиспользуют другие приложения без необходимости системе выгружать в своп их старое содержимое.

я смею предположить, что в этих страницах хранятся особые данные.
А точнее какие-нить битмапы, ну или структуры, которые никуда не ссылаются кроме, как на самих себя.

Например, если хранить в такой вот страничке ссылку на Паскаль объект, который создаётся run-time менеджером памяти; то после RESET_UNDO, совсем не факт, что ссылка на объект будет валидной. Ведь сам FreeMem обратного хода не имеет. (в отличии от того же VirtualAlloc)

runewalsh писал(а):Если RESET_UNDO сработал, мы можем не читать их из файла, тем самым экономя время и I/O.

а были ли такие тесты: сделали ли SSD диски эту оптимизацию бесполезной? (спрашиваю для расширения кругозора :) считают использвание фичи RESET_UNDO вполне себе адекватным решением)
скалогрыз
долгожитель
 
Сообщения: 1769
Зарегистрирован: 03.09.2008 02:36:48

Re: FreeMem

Сообщение runewalsh » 08.12.2020 07:38:17

Будет бесполезной, но это не только ради пропуска чтения с диска, ещё твой процесс будет занимать меньше памяти, а освобождаемые и выделяемые снова страницы система ЗАНУЛЯЕТ перед переиспользованием, как по контракту VirtualAlloc, так и потому, что они могли принадлежать другому процессу.

Нет ничего СЛИШКОМ УЖ ужасного в том, чтобы сохранить во (временный и актуальный в рамках 1 процесса) файл указатель, а потом прочитать его назад. Но да, проще сохранять туда только тяжёлые данные — собственно картинки и их части, тем более остальные структуры в сравнении с ними не занимают ничего и с ними можно работать по-нормальному. Это можно оформить как отдельный интерфейс для манипуляций с памятью под картинки.
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 514
Зарегистрирован: 27.04.2010 00:15:25

Re: FreeMem

Сообщение скалогрыз » 08.12.2020 07:54:36

runewalsh писал(а):Но да, проще сохранять туда только тяжёлые данные — собственно картинки и их части, тем более остальные структуры в сравнении с ними не занимают ничего и с ними можно работать по-нормальному. Это можно оформить как отдельный интерфейс для манипуляций с памятью под картинки.

вот в этот момент, следует выложить ссылку на редактор.
даже если он коммерческий, и написан на крестах! :)
скалогрыз
долгожитель
 
Сообщения: 1769
Зарегистрирован: 03.09.2008 02:36:48

Re: FreeMem

Сообщение runewalsh » 08.12.2020 08:06:36

Я этого не видел лично, так, примерно почувствовал.
Гуглится libsai — реверс-инжиниринг формата Paint Tool SAI, там структура выглядит оптимизированной как раз под эти все штуки, в частности, картинки бьются на блоки 32×32, потому что 32×32×RGBA8 = 4 Кб.
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 514
Зарегистрирован: 27.04.2010 00:15:25

Re: FreeMem

Сообщение Снег Север » 08.12.2020 10:11:47

Вообще-то такое в программировании называют "использование грязного хака". И эти грабли, почти неизбежно, однажды бьют по лбу...
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2732
Зарегистрирован: 27.11.2007 16:14:47

Re: FreeMem

Сообщение скалогрыз » 08.12.2020 10:20:21

Снег Север писал(а):Вообще-то такое в программировании называют "использование грязного хака".

если ты про RESET_UNDO, то это заявленный операционкой функционал.
Снег Север писал(а):"использование грязного хака" И эти грабли, почти неизбежно, однажды бьют по лбу...

Cheb очень любит эти дела )))
скалогрыз
долгожитель
 
Сообщения: 1769
Зарегистрирован: 03.09.2008 02:36:48

Пред.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru