Я потратил 4 полных дня, пытаясь сделать все возможное, чтобы выяснить утечку памяти в приложении, которое я разрабатываю, но все давно перестало иметь смысл.
Приложение, которое я разрабатываю, носит социальный характер, поэтому подумайте о профиле «Действия» (P) и перечислите действия с данными — например, значки (B). Вы можете переходить от профиля к списку значков, к другим профилям, к другим спискам и т. д.
Представьте себе такой поток: P1 -> B1 -> P2 -> B2 -> P3 -> B3 и т. д. Для единообразия я загружаю профили и значки одного и того же пользователя, поэтому каждая страница P одинакова, как и каждая страница B.
Общая суть Проблема в том, что после небольшой навигации, в зависимости от размера каждой страницы, я получаю исключение нехватки памяти в случайных местах - растровые изображения, строки и т. д. - оно кажется непоследовательным.
Сделав все возможное, чтобы выяснить, почему мне не хватает памяти, я ничего не придумал. Чего я не понимаю, так это почему Android не убивает P1, B1 и т. д., если при загрузке у него заканчивается память и вместо этого происходит сбой. Я бы ожидал, что эти более ранние действия умрут и возродятся, если я когда-нибудь вернусь к ним через onCreate() и onRestoreInstanceState().
Не говоря уже об этом - даже если я выполню P1 -> B1 -> Назад -> B1 -> Назад -> B1, у меня все равно произойдет сбой. Это указывает на какую-то утечку памяти, но даже после дампа hprof и использования MAT и JProfiler я не могу ее точно определить.
Я отключил загрузку изображений из Интернета (и увеличил загружаемые тестовые данные, чтобы компенсировать это и сделать тест честным) и убедился, что кеш изображений использует SoftReferences. Android фактически пытается освободить несколько имеющихся у него SoftReferences, но прямо перед тем, как он выходит из памяти.
Страницы значков получают данные из Интернета, загружают их в массив EntityData из BaseAdapter и передают их в ListView (на самом деле я использую отличный MergeAdapter от CommonsWare, но в этом действии со значками в любом случае есть только один адаптер, но я хотел бы упомянуть об этом в любом случае факт).
Я просмотрел код и не смог найти ничего, что могло бы привести к утечке. Я очистил и обнулил все, что смог найти, и даже System.gc() слева и справа, но приложение все равно вылетает.
Я до сих пор не понимаю, почему неактивные действия, находящиеся в стеке, не извлекаются, и мне бы очень хотелось это выяснить.
На данный момент я ищу любые подсказки, советы, решения... все, что может Помогите.
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/753 ... -at-a-loss
Приложению Android не хватает памяти - все перепробовал, но все равно в растерянности ⇐ Android
Форум для тех, кто программирует под Android
1761013194
Anonymous
Я потратил 4 полных дня, пытаясь сделать все возможное, чтобы выяснить утечку памяти в приложении, которое я разрабатываю, но все давно перестало иметь смысл.
Приложение, которое я разрабатываю, носит социальный характер, поэтому подумайте о профиле «Действия» (P) и перечислите действия с данными — например, значки (B). Вы можете переходить от профиля к списку значков, к другим профилям, к другим спискам и т. д.
Представьте себе такой поток: P1 -> B1 -> P2 -> B2 -> P3 -> B3 и т. д. Для единообразия я загружаю профили и значки одного и того же пользователя, поэтому каждая страница P одинакова, как и каждая страница B.
Общая суть Проблема в том, что после небольшой навигации, в зависимости от размера каждой страницы, я получаю исключение нехватки памяти в случайных местах - растровые изображения, строки и т. д. - оно кажется непоследовательным.
Сделав все возможное, чтобы выяснить, почему мне не хватает памяти, я ничего не придумал. Чего я не понимаю, так это почему Android не убивает P1, B1 и т. д., если при загрузке у него заканчивается память и вместо этого происходит сбой. Я бы ожидал, что эти более ранние действия умрут и возродятся, если я когда-нибудь вернусь к ним через onCreate() и onRestoreInstanceState().
Не говоря уже об этом - даже если я выполню P1 -> B1 -> Назад -> B1 -> Назад -> B1, у меня все равно произойдет сбой. Это указывает на какую-то утечку памяти, но даже после дампа hprof и использования MAT и JProfiler я не могу ее точно определить.
Я отключил загрузку изображений из Интернета (и увеличил загружаемые тестовые данные, чтобы компенсировать это и сделать тест честным) и убедился, что кеш изображений использует SoftReferences. Android фактически пытается освободить несколько имеющихся у него SoftReferences, но прямо перед тем, как он выходит из памяти.
Страницы значков получают данные из Интернета, загружают их в массив EntityData из BaseAdapter и передают их в ListView (на самом деле я использую отличный MergeAdapter от CommonsWare, но в этом действии со значками в любом случае есть только один адаптер, но я хотел бы упомянуть об этом в любом случае факт).
Я просмотрел код и не смог найти ничего, что могло бы привести к утечке. Я очистил и обнулил все, что смог найти, и даже System.gc() слева и справа, но приложение все равно вылетает.
[b]Я до сих пор не понимаю, почему неактивные действия, находящиеся в стеке, не извлекаются, и мне бы очень хотелось это выяснить.[/b]
На данный момент я ищу любые подсказки, советы, решения... все, что может Помогите.
Спасибо.
Подробнее здесь: [url]https://stackoverflow.com/questions/7536988/android-app-out-of-memory-issues-tried-everything-and-still-at-a-loss[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия