我正在创建拥有超过4k图像的图像应用程序 . 我根本不加载图像而是在需要时加载,但是如果用户访问链接到不同图像的应用程序的不同部分,我的应用程序会变慢并等待GC运行,这会导致糟糕的用户体验 .

我看到了包含以下消息的logcat:

10-08 14:21:26.249:D / dalvikvm(31547):GC_FOR_ALLOC释放1677K,13%释放14097K / 16124K,暂停29ms,总计29ms 10-08 14:21:26.749:D / dalvikvm(31547):GC_FOR_ALLOC释放1711K,13%免费14092K / 16124K,暂停28ms,总计28ms 10-08 14:21:27.610:D / dalvikvm(31547):GC_FOR_ALLOC释放1694K,13%免费14103K / 16124K,暂停29ms,总计29ms 10-08 14 :21:29.592:D / dalvikvm(31547):GC_FOR_ALLOC释放1729K,13%免费14081K / 16124K,暂停32ms,总计32ms 10-08 14:21:30.874:D / dalvikvm(31547):GC_FOR_ALLOC释放1675K,13%免费14102K / 16124K,暂停30ms,总计30ms 10-08 14:21:32.435:D / dalvikvm(31547):GC_FOR_ALLOC释放1735K,13%免费14075K / 16124K,暂停33ms,总计33ms 10-08 14:21:34.017 :D / dalvikvm(31547):GC_FOR_ALLOC释放1629K,13%免费14145K / 16124K,暂停28ms,总计29ms 10-08 14:21:35.098:D / dalvikvm(31547):GC_FOR_ALLOC释放1774K,13%免费14093K / 16124K ,暂停29ms,总计29ms 10-08 14:21:36.290:D / dalvikvm(31547):GC_FOR_ALLOC释放1703K,13%免费14094K / 16124K,暂停29ms,总计29ms 10-08 14:21:37.991:D / dalvikvm(31547):GC_FOR_ALLOC释放1722K,13%免费14077K / 16124K,暂停27ms,总计28ms 10-08 14:21:39.213:D / dalvikvm(31547 ):GC_FOR_ALLOC释放1693K,13%释放14083K / 16124K,暂停28ms,总计28ms 10-08 14:21:41.175:D / dalvikvm(31547):GC_FOR_ALLOC释放1696K,13%释放14088K / 16124K,暂停28ms,总计28ms

我尝试通过以下更改来改进/优化我的代码:

  • 每次加载应用程序时我都会清除缓存的图像 .

  • 实现了ListViews的ViewHolder模式 .

  • 在Application标签级别的Manifest中使用了android:largeHeap = "true"属性 .

  • 制作经常用于执行单操作操作的类 .

但仍然无法实现我需要的性能 .

我使用了Universal Image Loader Library,它具有缓存机制,但仍然运行GC .

如何避免GC或其他优化技术 .