2012-02-28 4 views
2

У меня есть веб-приложение ASP.NET, и оно использует память 5 ГБ на 64-битной машине с Windows 7 с памятью 8 ГБ без каких-либо проблем.64-битное консольное приложение/ThreadPool из памяти

Однако, когда я создаю новое консольное приложение C# на одном компьютере и повторно использую те же компоненты, которые использует веб-приложение, в консольном приложении заканчивается память примерно на 1,6 ГБ (если посмотреть на System.Environment.WorkingSet и System .Diagnostics.Process.GetCurrentProcess(). WorkingSet64). Осталось еще много физической памяти. Он воспроизводится на двух разных машинах.

Как приложение для веб-приложений, так и консольное приложение используют ThreadPool.QueueUserWorkItem, чтобы запустить фоновый поток для загрузки большого количества данных. Исключение происходит в фоновом потоке.

Удивительно, если в приложении консоли или ThreadPool есть ограничение по умолчанию для ограничения по умолчанию. Какие переменные отладки я могу посмотреть, чтобы увидеть этот предел?

+5

Это просто. По умолчанию моя Visual Studio 2010 создает цель x86. Изменение этого параметра на x64 решает проблему. –

+0

Сделайте это ответом и согласитесь - отлично в этом случае, так как вы нашли его сами без какой-либо помощи. Сохраняет вопрос из списка «без ответа». –

ответ

2

Это просто. По умолчанию моя Visual Studio 2010 создает цель x86. Изменение этого параметра на x64 решает проблему.

Смежные вопросы