Jae*_*ger 13 java android android-service
我正在启动service =>后台服务,并开始检查"新线程"中的文件,在日志中我得到以下内容,服务/应用程序暂停.
记录: I/art: Explicit concurrent mark sweep GC freed 25935(1686KB) AllocSpace objects, 13(903KB) LOS objects, 39% free, 13MB/22MB, paused 649us total 43.569ms
它只是扫描SD卡中MyData中的文件,其中包含一堆图片(大约20个图片).
**扫描=获取图片名称并将其保存为字符串.
Tan*_*.7x 26
所有这些意味着垃圾收集器正在完成其工作并释放内存.
如果您经常(或一致地)看到这一点,那么您可能会分配太多对象.一个常见原因是在循环中分配许多(或几个大)对象,如下所示:
for (int i = 0; i < 100; i++) {
Bitmap bmp = Bitmap.create(100, 100, Bitmap.Config.ARGB_4444);
}
Run Code Online (Sandbox Code Playgroud)
每次我们点击这个循环,我们都会分配一百个新的Bitmap对象.
防止GC扫描的最佳方法是不分配对象.当然,您必须使用Java分配对象,因此您需要确保不必要地分配对象.
以下是 Google发布的众多YouTube视频之一,其中包含有关避免GC事件和正确管理内存的提示.
| 归档时间: |
|
| 查看次数: |
34002 次 |
| 最近记录: |