【发布时间】:2015-03-26 15:35:42
【问题描述】:
这是我的第一次Java编码经验,所以我不得不搜索很多信息,但是我仍然有一个问题。
在我的应用程序中,我必须将一个 4.5 Mb 的数组读入内存。正如我从 Android Studio 的内存监视器中看到的那样,在按下并退出到桌面后它不会被删除。它不会被 GC 删除。我可以在第二次启动时使用相同的阵列吗?指向它的指针(它是 MainActivity 中的全局变量)每次都是空的,所以我必须得到一个新数组。但是前一个没有被删除。如果我没有将指向它的指针设置为 null 并且没有在 onPause() 中调用 System.gc(),则应用程序会因 OOM 而崩溃。我试过putCharArray和getCharArray,还是没用。有没有办法使用相同的数组?还是每次打开应用程序时都必须阅读它?即使在进入设置并从通知栏返回或打开/关闭物理键盘后也会发生这种情况。安卓 4.0.3 AVD。
更新 真可惜,我什至没有考虑过索引。 无论如何,据我所知,Android 有一个应用程序在使用后退按钮关闭后在缓存中。如果我只是创建一个数组,但不要在 onPause 中将其设为 null,则 GC 不会释放内存(正如我在内存监视器中看到的那样)。但在再次打开应用程序后,指针为空,即使我没有将其设为空。有没有办法保存指针并且这个结构不在文件中,并在再次打开应用程序后检查它是否仍在缓存中,以免重新加载文件?不仅在杀死进程之后,甚至只是在例如打开“设置”时将其从屏幕上移开。
【问题讨论】:
-
为什么要加载一个 4mb 的数组到内存中???
标签: java android arrays garbage-collection char