Сообщения без ответов | Активные темы Текущее время: 28 мар 2024, 21:27



Ответить на тему  [ Сообщений: 8 ] 
 Ошибка reserve memory 
Автор Сообщение
Сообщение 21 мар 2015, 20:52
Эмулятор выдает ошибку "can't reserve 512 bytes of memory for the membase".
Ранее все работало отлично, но после какого-то глюка при запуске эмулятора вылетает ошибка. Перестановка дров, программ и даже системы не помогла(((
Как исправить, подскажите!


Сообщение 22 мар 2015, 01:17
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
22 июл 2007, 11:16
Сообщения: 787
выключить нового касперского лол

_________________
1. Модератор всегда прав.
2. Если модератор не прав, см. п. 1.


Сообщение 22 мар 2015, 12:11
Не помогает, с выключенным антивирусом проблема та же(((


Сообщение 22 мар 2015, 13:02
Профиль

Зарегистрирован:
14 ноя 2007, 11:19
Сообщения: 370
Видимо он все же не выключается или действительно очень мало памяти.


Сообщение 22 мар 2015, 13:46
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
22 июл 2007, 11:16
Сообщения: 787
Rayne писал(а):
Не помогает, с выключенным антивирусом проблема та же(((

подробности тут http://code.google.com/p/demul/issues/d ... colspec=ID Type Status Priority Reporter Owner Summary
и тут http://www.emu-land.net/forum/index.php ... msg1109061

_________________
1. Модератор всегда прав.
2. Если модератор не прав, см. п. 1.


Сообщение 24 мар 2015, 00:33
Спасибо!


Сообщение 25 мар 2015, 19:39
Профиль ICQ

Зарегистрирован:
23 июл 2007, 12:24
Сообщения: 195
Откуда: Vladivostok, Russia
Rayne, можешь попробовать скачать с сайта microsoft утилиту VMMap. Она позволяет исследовать виртуальное адресное пространство процессов. Натрави её на Demul во время воспроизведения ошибки. Обрати внимание на вот это число:

Вложение:
1.png
1.png [ 29.51 КБ | Просмотров: 8190 ]


Оно показыват самый большой непрерывный свободный блок в адресном пространтсве процесса. Если оно меньше 524 288, то значит адресное пространтсво процесса с Demul неудачным образом фрагментировано и выделить блок нужного размера невозможно. Не потому что мало памяти, а потому что блок размером 512 Mb просто некуда впихнуть в адресное пространство процесса.

На фрагментацию процесса влияют множество факторов: то, каким образом сам Demul запрашивает память, то как Windows решит её в данный момент выдать, то как Windows решит разместить DLL-ки в адресном пространстве процесса, и прочее другое. Также, очень часто антивирусы и файрволы инжектят свои DLL-ки в пользовательские процессы, что может вызывать дополнительную фрагментацию. Но это делают не только антивирусы и файрволы. Вот пример:

Вложение:
2.png
2.png [ 64.33 КБ | Просмотров: 8190 ]


Тут можно наблюдать как словарь Lingvo нагло вторгся в чужой процесс, причём сделал это самым нахальным способом, разделив диапазон свободных адресов размером 1.2 G почти пополам: на блок ~534M и ~781M. Совершенно непонятно, почему он решил влезть именно в середину самого большого блока, но совершенно очевидно, что ещё парочка вот таких Lingvo посреди блоков 534 и 781 M и о запуске Demul можно забыть.

Вот как вся эта прелесть выглядит в общем виде:

Вложение:
3.png
3.png [ 16.31 КБ | Просмотров: 8190 ]


Чёрная полоска посередине это и есть тот самый Lingvo. Вверху блок 534M, внизу - 781M. Можешь покопаться в своём процессе Demul и посмотреть, кто именно вызывает фрагментацию.

А вообще, вопрос к разработчикам Demula, зачем им понадобился непрерывный блок памяти размером в 512M. Это нужно для эмуляции, или вы просто сразу берёте памяти сколько нужно, потому что боитесь, что Винда вам потом её не даст лол? Для 32-х битных процессов 512M это довольно дохрена. Размер адресного пространства 32-х битных процессов в Винде по умолчанию равен двум гигабайтам: https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa366912(v=vs.85).aspx. Остальные 2 Гига это адреса ядра, как я понял . Это значит, что достаточно 4 аллокации в ненужных местах, и свободного блока размером в 512M уже нет. Можно попробовать включить фичу 4-Gigabyte Tuning, тогда адресов для процесса будет уже на 3 Гига. Возможно, это один из вариантов решения проблемы.

При таком раскладе, возможно, имеет-таки смысл поддерживать 64-битную версию, в которой по идее таких проблем быть не должно. Или таки не жадничать, и просить у Винды по чуть-чуть.

ЗЫ Если что, процесс на моих картинках это не Demul, а просто первый попавшийся 32-битный.


Сообщение 25 мар 2015, 23:28
AntZ, огромное спасибо!!! Теперь мне наконец понятно из-за чего данная проблема образовалась. На выходных буду решать)))


Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 8 ] 

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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF (mod by Zeru-j).
Русская поддержка phpBB