2015-05-19 6 views
14

Aktualnie pracuję nad aplikacją hybrydową, która wykazuje pewne szczególne użycie pamięci, którą próbuję debugować. Jak tylko aplikacja się uruchomi, wydaje się, że od razu zużywa blisko 250 MB pamięci, co wydaje się zbyt duże, biorąc pod uwagę, że wszystko, co wczytaliśmy w tym miejscu, to ekran logowania. Patrzyłem na kilka narzędzi do profilowania pamięci dla Androida (profiler Xamarin i profiler Androida dostarczany z SDK), ale wszystkie z nich wykazują stosunkowo niskie zużycie sterty (~ 10-15MB, które próbuję zrzucić)). Pobiegłem „ADB shell dumpsys meminfo APPNAME -d” i uzyskałem następujący Ślad:Co to jest plik EGL i GL w pamięci Android Dump

** MEMINFO in pid 24925 [APPNAME] ** 
        Pss Private Private Swapped  Heap  Heap  Heap 
       Total Dirty Clean Dirty  Size Alloc  Free 
       ------ ------ ------ ------ ------ ------ ------ 
    Native Heap 19439 19396  0  0 28672 22915  5756 
    Dalvik Heap 15441 14992  0  0 37319 36837  482 
Dalvik Other  542  368  0  0       
     Stack  432  432  0  0       
     Ashmem 17388 16508  880  0       
     Gfx dev 40538 34504  0  0       
    Other dev  4  0  4  0       
    .so mmap  6211  224  3080  0       
    .apk mmap 10531  0 10232  0       
    .ttf mmap  453  0  260  0       
    .dex mmap  1263  0  980  0       
    .oat mmap  635  0  152  0       
    .art mmap  707  516  24  0       
    Other mmap  452  4  52  0       
    EGL mtrack 63508 63508  0  0       
    GL mtrack 79116 79116  0  0       
     Unknown 21756 21756  0  0       
     TOTAL 278416 251324 15664  0 65991 59752  6238 

Próbowałem zrozumieć, co to znaczy za pomocą dokumentacji dostarczonej w: https://developer.android.com/tools/debugging/debugging-memory.html, ale ta strona nie wydaje mają żadnych informacji na temat największych winowajców. GFX dev, EGL mtrack GL mtrack, i nieznany jest jakaś dokumentacja na co te kategorie są albo dlaczego oni rosnąć, aby być tak duże

Dzięki

Odpowiedz

7

EGL? a GL pokazuje tutaj pamięć zużywaną przez warstwę Graphics, jestem pewien, że uruchamiasz polecenie "adb shell dumpsys meminfo" na Andr oid urządzenie Lollipop. Właściwie narzędzie/polecenie dumpsys meminfo zostało zmodyfikowane w lollipop, aby obliczyć i wyświetlić pamięć graficzną.

W starej wersji (KitKat lub starszej) nie można znaleźć informacji o EGL i GL, mimo że pamięć graficzna była używana również w KitKat lub w starszych wersjach.

Możemy poprosić Google o aktualizację dokumentacji, aby objaśnić również nowe składniki pamięci. W skrócie można powiedzieć, że to błąd w dokumentacji Androida. powinni zaktualizować go zgodnie z najnowszymi realizacji "adb shell dumpsys meminfo" Tool/command

Referencje: EGL - http://en.wikipedia.org/wiki/EGL_(API) GL - http://en.wikipedia.org/wiki/OpenGL

4

GL mtrack jest wykorzystanie pamięci sterownika zgłaszane GL. Jest to przede wszystkim suma rozmiarów tekstury GL, buforów poleceń GL, naprawionych globalnych obciążeń RAM sterownika itd.

Mglack EGL to użycie pamięci grumoc. Jest to przede wszystkim suma widoku SurfaceView/TextureView.