Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Ресурсы


Автор: archeg 20.4.2007, 01:06
Заметил что мое приложение (написаное с использованием XNA) хавает память.(где-то по 5кб в сек) При этом я не использую ансейф кода и не создаю бесконечные списки. 
Какие возможные причины такого? Я всегда думал что в .net GC все должен сделать за меня :(

Автор: mr.DUDA 20.4.2007, 09:36
Покажи код метода, выполняющего Draw. Подозреваю, что каждый кадр создаётся (и не диспозится) какой-нибудь VertexDeclaration или другой ресурс, ссылающийся на комовский объект D3D9 и поэтому не убиваемый GC.

Автор: archeg 20.4.2007, 23:26
А где-то можно почитать про то, что убиваеться а что не убиваеться GC? Похоже что проблема в Update - я его закоментил и утечка памяти исчезла
 smile 

Автор: mr.DUDA 21.4.2007, 11:14
Простое правило: если у объекта есть метод Dispose, значит его нужно вызвать когда объект уже не нужен. Совет номер два: не создавайте "тяжёлые объекты" каждый кадр, вместо этого поместите код по загрузке/созданию текстур, эффектов и буферов в отдельный метод, например в перекрытый Game.LoadGraphicsContent.

Автор: archeg 21.4.2007, 12:26
Спасибо. Бум пробовать.. Еще есть проблема:
Во-время движения мышки (поворота камеры) камера чуть трясеться. Довольно не приятно.  
Может быть Draw вызываеться неравномерно? 
И как правильно центрировать курсор мыши? Если просто считывать движения мыши, то курсор тоходит до края екрана и в игре дальше не идет ( Мы центрируем курсор все время и ставим флаг, чтобы вовремя перемещения курсора мыши в центр екрана не сработал апдейт. (чтобы камера не переместилась назад) - думаю это через задницу smile 

Занимаемся таким впервые....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)