MonoTouch Memory Use High - PullRequest
       25

MonoTouch Memory Use High

0 голосов
/ 02 ноября 2011

У меня есть monodevelop 2.8 поверх monotouch 5 против Xcode 4.2 SDK. У меня были проблемы с памятью в приложении для iPhone. Я изо всех сил пытался определить причину, поэтому я создал тестовое приложение с основным видом детализации. Я сделал небольшую модификацию корневого контроллера, чтобы он показывал 5 корневых элементов вместо значения по умолчанию 1. Каждый щелчок корневого элемента добавляет новый DetailViewController в контроллер навигации.

controller.NavigationController.PushViewController (DetailViewController, true);

В моем контроллере детального просмотра я добавил логику, которая просто принимает входной сигнал, который управляет количеством повторений цикла, а затем кнопку для запуска цикла и вызова службы на основе REST. Минимальные изменения кода по умолчанию.

Просто запустив пример и посмотрев его на инструментах, я получаю до 1,2 МБ живых байтов. Я думаю, что запустить подробный вид, коснувшись элементов в контроллере корневого представления, и я встаю более 2 МБ. Вращая дисплей или открывая клавиатуру, можно увеличить объем памяти до 3 МБ. Я возвращаюсь назад в контроллере и открываю другое представление от rootviewcontroller, и я вижу, как увеличивается память. Просто входя и выходя из представлений, даже не вызывая мой пользовательский код, я могу использовать память в инструментах более 3 МБ. Я видел, как мое приложение получало предупреждения о памяти, когда его объем превышал 3 МБ. Мой детальный вид теста очень прост с текстовым полем, надписью и кнопкой, на которых все есть. У меня сложилось впечатление, что мне не нужно делать ничего особенного, чтобы очистить их. Тем не менее, я не вижу живых байтов в инструментах.

В качестве дополнительного теста я добавил кнопку Готово. Когда кнопка «Готово» нажата, я иду и использую RemoveFromSuperview () в каждой розетке, Dispose (), а затем устанавливаю для него значение null. Я вижу падение живых байтов. Но это ничего не делает для меня, если вместо этого используется задняя навигация.

Мне любопытно, сможет ли кто-нибудь проверить мои ожидания, что я вижу падение памяти. Не уверен, что использование инструментов для просмотра живых байтов является действительным или нет. Я хотел бы определить, является ли мое тестирование действительным и есть ли советы по уменьшению отпечатка памяти. Любые ссылки на лучшие практики по уменьшению отпечатка памяти приветствуются, так как я, кажется, могу заставить память расти и мое приложение, чтобы начать получать предупреждения памяти, просто перемещаясь между экранами.

1 Ответ

0 голосов
/ 02 ноября 2011

Трудно комментировать, не увидев код для тестового приложения. Можно ли как-нибудь отправить отчет об ошибке на http://bugzilla.xamarin.com и прикрепить свой тестовый проект?

Разработчик MonoTouch усердно работает над добавлением дополнительных смарт-карт в GC для MonoTouch для версии 5.2, которые, я уверен, хотели бы иметь больше тестовых случаев.

Мне также было бы очень интересно посмотреть на ваш тестовый пример.

...