Я изучаю использование памяти с помощью MAT в Eclipse. Хотя я столкнулся с какой-то странной проблемой. Оставьте в стороне тяжелые приложения, я начал с самого доброго приложения "Hello World". Это то, что я получаю как статистика кучи на Nexus 5, время исполнения ART, Lollipop 5.0.1.
ID: 1
Размер кучи: 25.429 МБ
Выделено: 15.257 MB
Бесплатно: 10.172 МБ
% Используется: 60%
# Объекты: 43487
Мой кучей кучи дает мне 3 подозреваемых в утечке памяти: Обзор
"Нельзя опубликовать круговую диаграмму из-за низкой репутации".
Проблема Подозреваемый 1
Класс "android.content.res.Resources", загруженный ", занимает 10 166 936 (38,00%) байтов. Память накопленный в одном экземпляре" android.util.LongSparseArray [] "загружен по" ".
Ключевые слова android.util.LongSparseArray [] android.content.res.Resources
Проблема Подозреваемый 2
209 экземпляров "android.graphics.NinePatch", загруженные ", занимают 5 679 088 (21,22%) байтов. Эти случаи ссылается на один экземпляр" java.lang.Object [] ", загруженный" " Ключевые слова java.lang.Object [] android.graphics.NinePatch
Проблема Подозреваемый 3
8 экземпляров "java.lang.reflect.ArtMethod []", загруженные "", занимают 3,630,376 (13,57%) байтов. Самые большие экземпляры: • java.lang.reflect.ArtMethod [62114] @0x70b19178 - 1,888,776 (7,06%) байт. • java.lang.reflect.ArtMethod [21798] @0x706f5a78 - 782 800 (2.93%). • java.lang.reflect.ArtMethod [24079] @0x70a9db88 - 546 976 (2.04%) байт. Ключевые слова java.lang.reflect.ArtMethod []
Это все простой код:
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Вопросы
- Почему числа кучи настолько большие.? Кроме того, в качестве примечания, приложение потребляло 52 МБ оперативной памяти в системе.
- Где находятся эти 209 экземпляров NinePatch? Я просто создал проект, выполнив "Создать новый проект" в Eclipse?
- Первая утечка подозреваемых в ресурсах, она появляется все время в моем анализе приложений. Это действительно подозреваемый?
- Что такое ArtMethod? Нужно ли что-то делать со временем выполнения ART?