PDA

Просмотр полной версии : [Вопрос] Выделение RAM для AMX / SAMP



punkochel
08.03.2023, 11:30
Есть какое-то ограничение SAMP на используемую память?
То есть будет ли АМХ использовать всю физически доступную оперативную память, или на каком-то значении она начнет перезапись или даже выход за пределы?
К примеру: На машине 8 Гб RAM, 2 из них использует ОС и другие программы, то сможет ли АМХ захватить все 6 Гб RAM под SAMP сервер, и сможет ли сам SAMP пользоваться всем этим диапазоном?

Nexius_Tailer
08.03.2023, 15:11
SA-MP сервер 32-битный, а потому более двух гигабайт уже на этом этапе он не займет.

punkochel
08.03.2023, 21:49
Интересненько, в силу того что адреса не могут быть отрицательными, я думал что 32-битное приложение сможет отхватить себе 4 Гб, но тут ты ответил что не более двух. Полез искать: Получается если ОС 32-х битная, то адресное пространство ограничено 4-мя Гб, при этом Win32 с ходу забирает себе примерно половину этого пространства (даже если оно и не задействовано полностью), так и получается что 2 Гб отведено приложению, а если ОС 64-х битная, то 32-х битное приложение может использовать все 4 Гб.
Но у нас же есть еще по сути эмулятор в виде 32-х битной АМХ-машины, которая вероятнее всего подготавливает память по аналогии Win32. Поэтому и получается что SA:MP сможет использовать только 2 Гб оперативной памяти.
Так же тестовым методом выяснил что максимальный размер статического массива, который может проглотить компилятор — 536_870_911.

Я могу конечно тут где-то ошибаться, но тема весьма интересная. Подскажите если где был не прав.

UPD:
Тогда если ОС 32-х битная и SAMP использует свои 2 Гб, 2 Гб использует ОС, то АМХ как работает? Или я просто не смогу запустить/скомпилировать на 32-битной ОС программу (мод самп) которая использует 2 Гб памяти?
Под AMX я понимаю виртуальную машину, программу в которой запускается SAMP.

Nexius_Tailer
11.03.2023, 01:07
Тогда если ОС 32-х битная и SAMP использует свои 2 Гб, 2 Гб использует ОС, то АМХ как работает? Или я просто не смогу запустить/скомпилировать на 32-битной ОС программу (мод самп) которая использует 2 Гб памяти?
Вылетит скорее всего просто в процессе работы/запуска. В любом случае нет никаких адекватных примеров, где ты бы мог до такого дойти на практике.