Страница 1 из 1

Когда 32-битное Вынь-приложение упирается в 2Гб лимит

СообщениеДобавлено: 29.03.2015 15:11:50
Cheb
..то
Код: Выделить всё
      {$ifdef cpu32}
        {$setpeflags $20} //winnt.h:#define IMAGE_FILE_LARGE_ADDRESS_AWARE       0x0020  // App can handle >2gb addresses
      {$endif}

- это наше всё.

До:
Код: Выделить всё
[...]
    7EFE0000h..7EFE4FFFh (20K): выделена (база 7EFE0000h), общая, только чтение
    7EFE5000h..7F0DFFFFh (1004K): зарезервирована
    7F0E0000h..7FFDFFFFh (15360K): зарезервирована
    7FFE0000h..7FFE0FFFh (4K): выделена (база 7FFE0000h), только чтение
    7FFE1000h..7FFEFFFFh (60K): зарезервирована
    7FFF0000h..FFFFFFFFh (2097216K): неизвестно (отказано в доступе)
  4 Гб адресного пространства делятся следующим образом:
    Зарезервировано: 0,06 Гб
    Выделеннная память: 0,07 Гб
    Свободно: 1,81 Гб
    Нет данных, отказано в доступе: 2,00 Гб
    Память, общая с другими процессами: 0,06 Гб


После:
Код: Выделить всё
[...]
    7FFF0000h..FFFAFFFFh (2096896K): свободна
    FFFB0000h..FFFD2FFFh (140K): выделена (база FFFB0000h), общая, только чтение
    FFFD3000h..FFFDAFFFh (32K): свободна
    FFFDB000h..FFFDDFFFh (12K): выделена (база FFFDB000h), чтение/запись
    FFFDE000h..FFFDEFFFh (4K): выделена (база FFFDE000h), чтение/запись
    FFFDF000h..FFFDFFFFh (4K): выделена (база FFFDF000h), чтение/запись
    FFFE0000h..FFFEFFFFh (64K): зарезервирована
    FFFF0000h..FFFFFFFFh (64K): неизвестно (отказано в доступе)
  4 Гб адресного пространства делятся следующим образом:
    Зарезервировано: 0,06 Гб
    Выделеннная память: 0,07 Гб
    Свободно: 3,81 Гб
    Нет данных, отказано в доступе: 0,00 Гб
    Память, общая с другими процессами: 0,06 Гб


Екзешник и исходники

Re: Когда 32-битное Вынь-приложение упирается в 2Гб лимит

СообщениеДобавлено: 30.03.2015 12:18:29
stanilar
Еще можно датасеты на FileMapping перевести.

Re: Когда 32-битное Вынь-приложение упирается в 2Гб лимит

СообщениеДобавлено: 30.03.2015 17:20:05
скалогрыз
а в чём вопрос-то? это известная фича винды (в таблице Comparison of memory and CPU limits in the 32-bit and 64-bit versions of Windows приведена сравнительная характеристика).

При желании доступное пространство можно увеличить до 3 гигов, но не более.

Re: Когда 32-битное Вынь-приложение упирается в 2Гб лимит

СообщениеДобавлено: 30.03.2015 18:33:49
Cheb
Но это обнаружилось так неожиданно... Изображение

Re: Когда 32-битное Вынь-приложение упирается в 2Гб лимит

СообщениеДобавлено: 30.03.2015 18:53:50
скалогрыз
любопытства ради - это открытие это имеет отношение к игровому движку?

Re: Когда 32-битное Вынь-приложение упирается в 2Гб лимит

СообщениеДобавлено: 31.03.2015 12:37:39
Cheb
Йа, йа. Я часто привинчиваю к нему самые неожиданные (и, в общем, ненужные) фичи. Недавно вот вспомнил про замечательную функцию VirtualQuery :roll:

Начал тут портировать на win64, и обнаружил (тоже !внезапно!) что адресное пространство ограничено 8Тб. Буду модифицировать свою ф-ю PointerToStr, чтобы не мусорила лишними нулями. Максимальный валидный адрес - 000007FFFFFEFFFFh , и пять нулей лишние.