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

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

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

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

Сообщение Cheb » 29.03.2015 15:11:50

..то
Код: Выделить всё
      {$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 Гб


Екзешник и исходники
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

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

Сообщение stanilar » 30.03.2015 12:18:29

Еще можно датасеты на FileMapping перевести.
stanilar
постоялец
 
Сообщения: 289
Зарегистрирован: 09.03.2010 19:09:02

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 гигов, но не более.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение Cheb » 30.03.2015 18:33:49

Но это обнаружилось так неожиданно... Изображение
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

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

Сообщение скалогрыз » 30.03.2015 18:53:50

любопытства ради - это открытие это имеет отношение к игровому движку?
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение Cheb » 31.03.2015 12:37:39

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

Начал тут портировать на win64, и обнаружил (тоже !внезапно!) что адресное пространство ограничено 8Тб. Буду модифицировать свою ф-ю PointerToStr, чтобы не мусорила лишними нулями. Максимальный валидный адрес - 000007FFFFFEFFFFh , и пять нулей лишние.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34


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

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

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

Рейтинг@Mail.ru