Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Разделение памяти между модулями, ShareMM итп / 10 сообщений из 10, страница 1 из 1
19.07.2021, 15:54
    #40084678
hlopotun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение памяти между модулями, ShareMM итп
Всем доброго дня,

разбираюсь с темой увеличения памяти через {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} в x32 приложениях и мучает вопрос. Можно ли заставить Delphi в разных модулях (dll, ocx итп) совместно используемых в приложении использовать разные менеджеры памяти и применять опцию {$SETPEFLAGS $20} только в рамках одного из модулей?
Тут не совсем в тему но в нужную сторону кое что описано но конечного понимания пока не возникло.
Хорошо бы что то почитать на эту тему.

Спасибо
...
Рейтинг: 0 / 0
19.07.2021, 16:15
    #40084682
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение памяти между модулями, ShareMM итп
hlopotun
Можно ли заставить Delphi в разных модулях (dll, ocx итп) совместно используемых в приложении использовать разные менеджеры памяти и применять опцию {$SETPEFLAGS $20} только в рамках одного из модулей?


Посмотрите ShareMem.pas: он используети borlndmm.dll (или что там сейчас), если вы его поменяете (назовете MyMM.pas и измените названние длл, в проект включать первым), то может сработать, но взаимодействие между модулями с разными ММ придется делать с учетом ограничений.
...
Рейтинг: 0 / 0
19.07.2021, 16:17
    #40084683
hlopotun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение памяти между модулями, ShareMM итп
тот тут вроде понятно расписано
...
Рейтинг: 0 / 0
19.07.2021, 19:40
    #40084728
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение памяти между модулями, ShareMM итп
hlopotun
Можно ли заставить Delphi в разных модулях (dll, ocx итп) совместно используемых в приложении использовать разные менеджеры памяти
Именно так все и происходит, если не приложить дополнительных усилий и не заставить их использовать разные модули общий менеджер памяти

Другой вопрос, что я не уверен, что {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} можно использовать в dll
hlopotun
Хорошо бы что то почитать на эту тему.
Рихтер
...
Рейтинг: 0 / 0
19.07.2021, 20:25
    #40084737
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение памяти между модулями, ShareMM итп
"применять опцию {$SETPEFLAGS $20} только в рамках одного из модулей" нельзя конечно - это флаг для процесса.
Да, и как вы себе представляете передачу указателя между модулями, если бы то, чего вы хотите, было возможным??
...
Рейтинг: 0 / 0
20.07.2021, 09:32
    #40084784
hlopotun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение памяти между модулями, ShareMM итп
[quot _Vasilisk_#22348798]
hlopotun

............
Другой вопрос, что я не уверен, что {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} можно использовать в dll
............

В тесте, когда инструкция стоит в основной программе и в dll работает, по крайней мере в dll процедуре до 3Гб памяти выделяет, без этой инструкции провоцирует исключение OutOfMemory.
...
Рейтинг: 0 / 0
20.07.2021, 09:43
    #40084786
hlopotun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение памяти между модулями, ShareMM итп
Barlone
"применять опцию {$SETPEFLAGS $20} только в рамках одного из модулей" нельзя конечно - это флаг для процесса.
Да, и как вы себе представляете передачу указателя между модулями, если бы то, чего вы хотите, было возможным??

да, согласен. Нет никакой гарантии что за пределами 2Гб не будет выделена память мод функции или что либо другое используемое из других модулей. Другими словами или везде или нигде. А учитывая наличие модуля без исходников из D5 (генератор отчётов) идею можно похоронить. Потому как минимум этот модуль перевести на новую модель не получится, даже если везде перевести конвертацию из Pointer в Integer на Pointer в NativeUInt и выключить контроль переполнения.
...
Рейтинг: 0 / 0
20.07.2021, 10:14
    #40084790
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение памяти между модулями, ShareMM итп
hlopotun
А учитывая наличие модуля без исходников из D5 (генератор отчётов) идею можно похоронить.

Можно попробовать. В генераторе отчетов по идее не должно быть указательной магии.
...
Рейтинг: 0 / 0
20.07.2021, 11:20
    #40084797
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение памяти между модулями, ShareMM итп
"Угадай автора по названию темы".
...
Рейтинг: 0 / 0
20.07.2021, 11:53
    #40084812
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение памяти между модулями, ShareMM итп
hlopotun,

ОФФ

Я подумал, раз вы в теме менеджеров памяти так плотно закопались, то (чтобы расширить горизонты) посоветую ещё вот эту страничку
  • https://github.com/d-mozulyov/BrainMM . Там нет ответов на вопрос топика, просто инфа по менеджеру памяти BrainMM и всякие сравнения, надо листать вниз. Там в тексте есть дальнейшие ссылки.
  • Так же и эту https://github.com/andremussche/scalemm по менеджеру памяти ScaleMM .
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Разделение памяти между модулями, ShareMM итп / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]