2013-03-18 1 views
0

, так что, в двух словах, мой вопрос в значительной степени в заголовке, у меня есть мой первый большой проект и теперь после 11k строк кода в одном большом файле I У меня проблемы с памятью через некоторое время, когда я опробовал свою вспышку, медленно она замедляется, пока я не могу ничего сделать, даже если я всегда очищаю контейнеры, когда могу, и удалять слушателей, когда это не нужно.Проблемы с памятью с as3 с использованием процедурной логики, любые советы, как предотвратить

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

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

какие-либо советы, как предотвратить память от работы вне дома?

ответ

2

Вам не нужно какое-либо объектно-ориентированное программирование, чтобы сломать его.

Просто примените немного логики, где вы можете группировать & отдельные вещи. Также очень много шансов на повторяющиеся строки кода.

Итак, сначала начните группировку строк. поместите их в разные функции & назовите их в главном.

После того, как вы принесете все это к кускам, вы можете начать думать о группировке функций в классы. Но, по крайней мере, первый шаг должен был привести к вашей проблеме.

+0

спасибо за ответ :) это я пытался делать каждый раз, когда могу, и теперь я отлаживал его, пока я ждал ответов, было немного слушателей, у которых не было надлежащего удаления, которое складывалось и потребляло память. Урок: всегда убирается трижды прослушиватель. плюс ваш ответ :) –

0

Ваша проблема трудно решить без использования объектно-ориентированного программирования. Кстати, стиль кодирования C обычно называют «императивным программированием» ... просто так вы знаете.

Плохая новость заключается в том, что 11k строк кода в одном файле означает, что весь код находится внутри одной единицы перевода, поэтому все, что вы закодировали, всегда находится в памяти.

Если вы разбиваете его на классы, то отдельные экземпляры (объекты) класса будут создаваться и уничтожаться по требованию, тем самым занимая столько же памяти, сколько необходимо (растет и сокращается, а не статично).

И, наконец, используя as3, как если бы это был C, вам повредит много других способов в долгосрочной перспективе. Поэтому, пожалуйста, изучите ООП и разделите свой монолитный код на объекты.

+0

рад, что он работает сейчас :), но ответ loxxy действителен - найдите возможности рефакторинга, где вы можете сэкономить на строках кода. –

+0

в порядке, и спасибо за ответ, я обязательно узнаю oop, когда придет время, но для этого приложения для настольных компьютеров я думаю, что я поеду таким образом, который будет для меня естественным :) также, случайно удалил комментарий, повторное добавление : так, я отладил его успешно, было немного слушателей, которые не имели надлежащего удаления. так, извлеченный урок; быть действительно строгим и уверенным, что вы удалите все, когда вам больше не понадобятся, иначе он будет стекать и есть память в мгновение ока. –

+0

Да, утечки памяти плохие джуджу! Избегайте их, насколько это возможно. –

0

Ну, после того, как вы назвали это плохой практикой, вы не можете дать виртуальной машине (виртуальной машине) возможность вздохнуть ... Я имею в виду, если ваши процедуры будут заняты каждый раз в циклах, как в состояниях опроса, то с большой вероятностью VM не находит возможность сбор мусора. Это катастрофа.

Так что не делайте опросов, если вы делаете. Попытайтесь избавиться от великой процедуры (провидец всего :)) и попробуйте другую архитектуру, в которой процедура центрального монитора вызывается обработчиками событий при необходимости.

Затем, когда вы соглашаетесь, продайте свой продукт и разбогатейте. Изучите oop a.s.a.p. :)

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