2017-03-02 53 views
0

的內存使用情況我有是在SDK /庫的形式實現的粘後臺服務。我正在儘量減少內存使用量。我曾嘗試使用單獨的進程,但Android似乎使用該庫加載了很多可能屬於主應用程序的額外內容。當我使用帶有空SDKtest應用程序的庫時,內存使用率降至合理水平。而這個額外的內存追溯到預加載的系統drawables,但只是無法弄清楚爲什麼這些在一種情況下歸類爲私人骯髒。因此,將該服務作爲外部apk解決問題,但您可以猜到這不切合實際。任何想法如何繼續這個?優化一個Android粘後臺服務

** MEMINFO in pid 14571 [org.abc.abc:Service] ** 
       Pss Private Private Swapped  Heap  Heap  Heap 
       Total Dirty Clean Dirty  Size Alloc  Free 
       ------ ------ ------ ------ ------ ------ ------ 
Native Heap  4481  4308  0  1008  7292  6353  938 
Dalvik Heap  5649  5532  0  0  7373  6980  393 
Dalvik Other  616  616  0  0       
     Stack  332  332  0  0       
    Other dev  5  0  4  0       
    .so mmap  2623  152  1472  2832       
    .apk mmap  204  0  128  0       
    .ttf mmap  56  0  48  0       
    .dex mmap  1576  0  1484  0       
    .oat mmap  3467  0  1588  0       
    .art mmap  2739  760  264  0       
Other mmap  6  4  0  0       
    GL mtrack  3380  3380  0  0       
    Unknown  166  164  0  144       
     TOTAL 25300 15248  4988  3984 14665 13333  1331 

Objects 
      Views:  0   ViewRootImpl:  0 
     AppContexts:  3   Activities:  0 
      Assets:  3  AssetManagers:  3 
    Local Binders:  8  Proxy Binders:  23 
    Parcel memory:  40   Parcel count:  54 
    Death Recipients:  0  OpenSSL Sockets:  0 

SQL 
     MEMORY_USED:  0 
PAGECACHE_OVERFLOW:  0   MALLOC_SIZE:  0 

** MEMINFO in pid 7908 [org.abc.sdktest:abcSDKTestService] ** 
       Pss Private Private Swapped  Heap  Heap  Heap 
       Total Dirty Clean Dirty  Size Alloc  Free 
       ------ ------ ------ ------ ------ ------ ------ 
Native Heap  1754  1576  0  1880  5320  4132  1187 
Dalvik Heap  1101  976  0  2680  7122  5390  1732 
Dalvik Other  244  244  0  0       
     Stack  176  176  0  0       
    Other dev  5  0  4  0       
    .so mmap  299  68  0  2868       
    .apk mmap  168  0  140  0       
    .dex mmap  1532  0  1448  0       
    .oat mmap  1275  0  0  0       
    .art mmap  2130  604  8  0       
Other mmap  4  4  0  0       
    Unknown  78  76  0  160       
     TOTAL  8766  3724  1600  7588 12442  9522  2919 

Objects 
      Views:  0   ViewRootImpl:  0 
     AppContexts:  3   Activities:  0 
      Assets:  3  AssetManagers:  3 
    Local Binders:  4  Proxy Binders:  19 
    Parcel memory:  32   Parcel count:  42 
    Death Recipients:  0  OpenSSL Sockets:  0 

SQL 
     MEMORY_USED:  0 
PAGECACHE_OVERFLOW:  0   MALLOC_SIZE:  0 
+0

安置自己的服務代碼,以便它可以優化花花公子 – Kushan

+0

服務代碼本身是無關的,它是千行。 – erenbz

回答

1

根本原因竟然是來自條件Toast顯示。刪除吐司解決了這個問題。雖然通知不會導致相同的現象。很顯然,Toast初始化viewroot和所有的行李,就像預裝drawables一樣。儘管理想情況下這些預加載的drawable不應該顯示爲私有髒內存,因爲它們屬於zygote,但我想如果它們不被任何其他應用程序使用,它將顯示爲我自己的內存佔用。因此,人們有權刪除UI元素在這種情況下...