Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
内存泄漏LibGDX-ANdroid_Android_Memory Leaks_Libgdx - Fatal编程技术网

内存泄漏LibGDX-ANdroid

内存泄漏LibGDX-ANdroid,android,memory-leaks,libgdx,Android,Memory Leaks,Libgdx,我正在用libgdx制作一个实时墙纸应用程序,在这个程序中,我会根据时间改变资产。对于e、 从早上6点到下午6点,我有“早上的图形”,然后我有“晚上的图形”,从下午6点到早上6点 我构建资产的方式如下 我有12个AtlasRegion类型的静态数组,1个静态纹理区域变量和1个静态纹理变量 我有两个静态函数loadMorning()和loadnight()用于加载资产 在函数中,我加载如下 对于所有数组,如果它们不为null,则执行array.clear() 然后加载区域。处理TextureReg

我正在用libgdx制作一个实时墙纸应用程序,在这个程序中,我会根据时间改变资产。对于e、 从早上6点到下午6点,我有“早上的图形”,然后我有“晚上的图形”,从下午6点到早上6点

我构建资产的方式如下

我有12个AtlasRegion类型的静态数组,1个静态纹理区域变量和1个静态纹理变量

我有两个静态函数loadMorning()和loadnight()用于加载资产

在函数中,我加载如下

对于所有数组,如果它们不为null,则执行array.clear() 然后加载区域。处理TextureRegion变量并在重置其值之前将texture变量设置为null

正在发生的事情是,在每次更换资产之后,内存似乎都在增加 作为一个用户,我使用这个应用程序来查看内存

当我第一次启动我的应用程序时。。在应用程序中显示为68MB

第1天早上统计数据

第一天

ID      Heap Size       Allocated       Free            %Used    #Objects
1       10.812 MB       3.186 MB        7.626 MB        29.47%    45,405    



                   Pss  Private  Private  Swapped     Heap     Heap     Heap
                 Total    Dirty    Clean    Dirty     Size    Alloc     Free
                ------   ------   ------   ------   ------   ------   ------
  Native Heap        0        0        0        0    16620     4285       38
  Dalvik Heap     8692     8604        0        0    11072     3293     7779
 Dalvik Other     1374     1216        0        0
        Stack       96       96        0        0
    Other dev    33016     4908        4        0
     .so mmap     1266      692      136        0
    .apk mmap      160        0      116        0
    .dex mmap      287       20        8        0
   Other mmap        5        4        0        0
      Unknown     1431     1412        0        0
        TOTAL    46327    16952      264        0    27692     7578     7817

 Objects
               Views:        1         ViewRootImpl:        0
         AppContexts:        3           Activities:        0
              Assets:        2        AssetManagers:        2
       Local Binders:       11        Proxy Binders:       19
    Death Recipients:        0
     OpenSSL Sockets:        0

 SQL
         MEMORY_USED:        0
  PAGECACHE_OVERFLOW:        0          MALLOC_SIZE:        0
第1天晚上统计数据

加载晚间资产后的adb日志

D/dalvikvm(2451):释放1619K的所有组件的GC,71%的释放3281K/11072K,暂停14ms,总计15ms

D/dalvikvm(2451):所有释放1517K的GC,71%释放3281K/11072K,暂停11ms,总计11ms

I/dalvikvm堆(2451):将堆(frag情况)增长到6.548MB,用于13311595字节分配

D/dalvikvm(2451):GC_并发释放1862K,67%释放4127K/12376K,暂停2ms+2ms,总计13ms

D/dalvikvm(2451):GC_显式释放2384K,74%释放3268K/12376K,暂停2ms+3ms,总计27ms

ID      Heap Size       Allocated       Free            %Used    #Objects
1        10.816 MB      3.191 MB        7.625 MB        29.50%    45,525    


This adb log right after change


                   Pss  Private  Private  Swapped     Heap     Heap     Heap
                 Total    Dirty    Clean    Dirty     Size    Alloc     Free
                ------   ------   ------   ------   ------   ------   ------
  Native Heap        0        0        0        0    16728     4346       29
  Dalvik Heap     1654     1576        0        0    11076     3348     7728
 Dalvik Other     1435     1296        0        0
        Stack      100      100        0        0
    Other dev    63332    32644        4        0
     .so mmap     1110      692      116        0
    .apk mmap        7        0        4        0
    .dex mmap      586       20      368        0
   Other mmap        5        4        0        0
      Unknown     1504     1488        0        0
        TOTAL    69733    37820      492        0    27804     7694     7757

 Objects
               Views:        1         ViewRootImpl:        0
         AppContexts:        3           Activities:        0
              Assets:        2        AssetManagers:        2
       Local Binders:       10        Proxy Binders:       17
    Death Recipients:        0
     OpenSSL Sockets:        0

 SQL
         MEMORY_USED:        0
  PAGECACHE_OVERFLOW:        0          MALLOC_SIZE:        0
应用程序中显示的内存现在是117MB 这会持续增加,第二天早上应用程序中显示的大小约为150MB


为了更好地理解这一点,我需要一些指南。

针对代码中无法控制的资源泄漏的一个补救措施是重新启动应用程序。您可以选择或执行System.exit()

但在这样做之前,你必须这样做


请注意,尽管不同的android版本应该都是兼容的,但它们在应用程序重启行为方面并不兼容。至少,v2.x和v4.0确实有所不同(在v2.x系统中,exit()导致应用程序在最顶层活动关闭的情况下重新启动),不确定最新版本。

注意到。。希望它不会被要求。谢谢现在的问题是如何重新启动壁纸:(