Android утечка памяти приложения из-за sun.mis c .Cleaner? - PullRequest
0 голосов
/ 19 января 2020

Я использую команду adb shell dumpsys meminfo myAppPackageName, чтобы просмотреть счетчик операций (активность: 4). После нескольких повторений ввода и выхода из одной и той же активности я обнаружил, что счетчик операций продолжает работать.

$ adb shell dumpsys meminfo $(adb shell ps | grep "myPackageName$"  | awk  '{print $2}')
Applications Memory Usage (in Kilobytes):
Uptime: 1468561523 Realtime: 2516671206

** MEMINFO in pid 29345 [com.xxxxxx] **
                   Pss  Private  Private  SwapPss     Heap     Heap     Heap
                 Total    Dirty    Clean    Dirty     Size    Alloc     Free
                ------   ------   ------   ------   ------   ------   ------
  Native Heap   155895   155508      328    36610   233728   219817    13910
  Dalvik Heap    15674    15584       56      276    23242    11621    11621
 Dalvik Other     9645     9632       12       52                           
        Stack      136      136        0       16                           
       Ashmem      182        4        0        0                           
      Gfx dev    13168    13168        0        0                           
    Other dev       37        4       32        0                           
     .so mmap    34610      768    29120      279                           
    .jar mmap        4        0        4        0                           
    .apk mmap      861        0      204        0                           
    .ttf mmap      205        0      140        0                           
    .dex mmap    21891    16768     2416    17640                           
    .oat mmap      408        0       64        0                           
    .art mmap     5143     4288       24      853                           
   Other mmap     6798       16     6352        0                           
   EGL mtrack    43292    43292        0        0                           
    GL mtrack    24096    24096        0        0                           
      Unknown     4902     4900        0     1978                           
        TOTAL   394651   288164    38752    57704   256970   231438    25531

 App Summary
                       Pss(KB)
                        ------
           Java Heap:    19896
         Native Heap:   155508
                Code:    49484
               Stack:      136
            Graphics:    80556
       Private Other:    21336
              System:    67735

               TOTAL:   394651       TOTAL SWAP PSS:    57704

 Objects
               Views:     1222         ViewRootImpl:        1
         AppContexts:        9           Activities:        4
              Assets:        3        AssetManagers:        0
       Local Binders:       74        Proxy Binders:       46
       Parcel memory:       62         Parcel count:      234
    Death Recipients:        0      OpenSSL Sockets:        1

Кажется, что есть проблема утечки памяти. Поэтому я сбросил память hprof и использовал MAT для ее анализа. Результат показан ниже: Sun.mis c .Cleaner - это PhantomReference, я не думаю, что он должен блокировать мою деятельность повторно, но на самом деле это так. .. почему?

enter image description here

...