2010-01-05 2 views

ответ

2

Если вы хотите лучшего инструмента, чем Taskmanager скачать The SysInternals Suite от MS и использовать Process Explorer Utility в контролируйте свое приложение во время его работы. Выберите «Вид» - «Выбрать столбцы» -> «Память процессов» и установите столбцы, которые вы хотите контролировать. Это дает вам гораздо лучшее представление о том, что происходит в памяти.

Это говорит о том, что моя ставка - это отсутствие непрерывной памяти, доступной в вашей куче, является проблемой.

0

Возможно ли, что IDE ограничивает объем памяти, который вы можете использовать? В этом случае вы можете указать параметры запуска для расширения объема доступной памяти. По крайней мере, так оно и есть в затмении.

1

Если у вас нет места подкачки, это может увеличить размер Virual Memory.

Кроме того, поймите, что при использовании .NET ограничения памяти процесса на 32-битном .NET-коде могут быть намного ниже теоретических. Очень часто начинают получать ошибки из памяти где-то между 1,2 ГБ и 1,6 ГБ использования памяти - значительно ниже теоретического предела 2 ГБ. (Это верно даже при распределении небольших фрагментов памяти.)

Переход на 64-битную платформу, скорее всего, устранит эту проблему. (Вполне возможно, что ваш 1GB не совсем точно, либо - Урочная делает очень плохую работу по оценке распределения памяти.)

+0

На самом деле ** более ** может произойти при более низком пороге, если вы выделяете небольшие объекты, но все же достаточно велики, чтобы быть на LOH. Особенно, когда срок службы объектов может значительно различаться. Фрагментация в GC может вызвать множество головных болей. – GrayWizardx

+0

Ну, я считаю, что любой объект достаточно большой, чтобы выделяться на кучу объектов LARGE, чтобы не быть маленьким объектом;) Но да, любые распределения LOH имеют тенденцию фрагментировать вашу систему, и чем больше у вас будет хуже, тем лучше. Это может произойти, хотя и с небольшими объектами, находящимися под порогами размера LOH. –

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