Обычно мы разрабатываем в VS 2005 Pro, но я хотел дать VS 2010 спин. У нас есть собственные инструменты сборки, основанные на GNU make, которые вызываются при создании исполняемого файла.

Это ошибка, которую я вижу всякий раз, когда я вызываю свой внешний инструмент:

...\gnu\make.exe): *** couldn't commit memory for cygwin heap, Win32 error 487

Предостережение заключается в том, что он все еще прекрасно работает в VS2005, а также вызывается прямо из командной строки. Кроме того, мой внешний инструмент настроен точно так же, как в VS 2005.

Есть ли где-нибудь настройки, которые могут вызвать эту ошибку?

2 ответа2

1

Из проблемы с кучей, win32 ошибка 487 :

Каждое приложение Cygwin получает специальную область кучи для хранения содержимого, которое наследуется дочерним процессам. Например. все структуры файловых дескрипторов хранятся в этой области кучи (называемой "cygheap"). В cygheap есть место как минимум для 4000 структур файловых дескрипторов. Но - это ключ - это фиксированный размер. Cygheap не может расти. Его размер зарезервирован в начале приложения, и его блоки передаются по требованию.

По какой-то причине вашему серверному приложению требуется все пространство cygheap при работе в описанных условиях.

Возможное решение может быть найдено в « Изменение максимальной памяти Cygwin»:

Куча Cygwin расширяемая. Тем не менее, он начинается с фиксированного размера, и попытки расширить его могут привести к памяти, которая была ранее выделена Windows. В некоторых случаях эту проблему можно решить, добавив запись в разделе реестра HKEY_LOCAL_MACHINE (чтобы изменить ограничение для всех пользователей) или в HKEY_CURRENT_USER (только для текущего пользователя).

Добавьте значение DWORD heap_chunk_in_mb и установите желаемый предел памяти в десятичных МБ. Это предпочтительно делать в Cygwin, используя программу regtool, включенную в пакет Cygwin. (Для получения дополнительной информации о regtool или других утилитах Cygwin см. Раздел «Утилиты Cygwin» или используйте параметр --help каждой утилиты.) Вы всегда должны быть осторожны при использовании regtool, так как повреждение системного реестра может привести к неработоспособности системы. В этом примере устанавливается ограничение памяти в 1024 МБ:

regtool -i set /HKLM/Software/Cygwin/heap_chunk_in_mb 1024
regtool -v list /HKLM/Software/Cygwin

Закройте все запущенные процессы Cygwin и перезапустите их. Память может быть выделена до размера подкачки системы минус любой размер любых запущенных процессов. Подкачка системы должна быть не меньше, чем физически установленная оперативная память, и ее можно изменить в категории «Система» на панели управления.

Не мешало бы убедиться, что максимальный размер вашего файла подкачки Windows достаточно велик.

И, кстати, сколько оперативной памяти у вас на компьютере?

0

Возможно, это проблема выразительности и профессионализма версии. Вы можете попробовать пробную версию Professional.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .