Максимальный объем памяти в x86 .NET app под x64 OS
От: ASolovey Россия  
Дата: 20.06.08 18:24
Оценка:
Коллеги,
хелпните plz.

Столкнулись с таким глюком.
Есть .NET 2.0 x86 приложение собранное с флагом "Large Address Aware".
Делает простую вещь (в данном случае для теста) — аллоцирует массивы byte[] по несколько Kb, и сует их в Dictionary.
Задача — использовать как можно больше памяти. (понятное дело — это не самоцель )

Под x86 OS с опцией boot.ini /3GB оно совершенно спокойно использует до 3Gb памяти. Т.е. все работает как заявлено в доке.

А вот под x64 OS (Т.е. в режиме совместимости) оно согласно документации должно уметь использовать до 4Gb.
Однако уже на 2Gb оно умирает. Начинается своп. Операции с Dictionary резко тормозятся до невозможности — любая операция занимает несколько минут или даже десятков минут. В общем — кирдык.

Проверялось и на WinXPx64 и на W2003SRVx64.
На машине с 3Gb RAM и на машине с 6Gb RAM.
Эффект одинаков. На 2Gb все заканчивается.

Возникает резонный вопрос — какого собственно?
Есть какие-нибудь идеи, или мысли — куда копать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.