2015-05-19 15 views
14

Attualmente sto lavorando a un'applicazione ibrida che presenta un particolare utilizzo della memoria che sto cercando di eseguire il debug. Appena l'applicazione si avvia, sembra che stia usando immediatamente quasi 250MB di memoria, il che sembra eccessivo dato che tutto quello che abbiamo caricato a quel punto è la schermata di login. Ho esaminato alcuni strumenti di profiling della memoria per Android (il profiler Xamarin e il profilo Android fornito con l'SDK), ma tutti mostrano un utilizzo dell'heap relativamente basso (~ 10-15 MB, che sto cercando di ridurre). Ho corso "dumpsys adb shell MemInfo APPNAME -d' ed ha ottenuto la seguente traccia:Che cosa sono EGL e GL mtrack nel dump della memoria Android

** 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 

Ho cercato di capire che cosa questo significa utilizzando la documentazione fornita a: https://developer.android.com/tools/debugging/debugging-memory.html, ma la pagina non sembra avere qualsiasi informazioni più grandi colpevoli:. Gfx dev, EGL mtrack, GL mtrack, e sconosciuto c'è qualche documentazione su ciò che queste categorie sono o perché dovrebbero crescere per essere così grande

Grazie

risposta

7

EGL? e GL mostra qui la memoria consumata dal livello Graphics in sostanza. Sono sicuro che stai eseguendo il comando "adb shell dowsys meminfo" su Andr ool dispositivo lecca-lecca. In realtà il tool/comando meminfo di dumpsys è stato modificato in lollipop per calcolare e visualizzare la memoria grafica.

Nella vecchia versione (KitKat o precedente) non è possibile trovare informazioni EGL e GL anche se la grafica ha consumato memoria in KitKat o anche versioni precedenti.

Questo è possibile richiedere a Google di aggiornare la documentazione per spiegare anche i nuovi componenti di memoria. In breve si può dire che è un bug nella documentazione di Android. Dovrebbero aggiornarlo come da ultima implementazione di "dumpsys adb shell MemInfo"/comando dello strumento

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

4

GL mtrack è l'utilizzo della memoria GL conducente-segnalati. È principalmente la somma delle dimensioni della texture GL, dei buffer di comando GL, dei sovraccarichi della RAM del driver globale fissi, ecc.

EGL mtrack è l'utilizzo della memoria gralloc. È principalmente la somma di SurfaceView/TextureView.

Problemi correlati