【问题标题】:OutOfMemoryError in Image Loader, App getting crash in androidImage Loader 中的 OutOfMemoryError,应用程序在 android 中崩溃
【发布时间】:2014-11-29 06:01:35
【问题描述】:

我正在使用通用图像加载器类,有时应用程序崩溃并给出以下错误:

java.lang.java.lang.OutOfMemoryError: pthread_create (stack size 16384 bytes) failed: Try again in android: pthread_create (stack size 16384 bytes) failed: Try again 

非常感谢您的帮助。

【问题讨论】:

  • 请向我们展示发生错误的代码和完整的堆栈跟踪。它将帮助其他人理解问题的原因
  • @SergeyPekar private void queuePhoto(String url, ImageView imageView) { PhotoToLoad p=new PhotoToLoad(url, imageView);尝试 { executorService.submit(new PhotosLoader(p)); } catch (OutOfMemoryError e) { e.printStackTrace(); System.out.println("图像加载类错误");这是我的代码,我正在使用图像加载器。

标签: android memory out-of-memory


【解决方案1】:

感谢您的所有建议。 我犯了一个愚蠢的错误,我在 getView 中实例化 ImageLoader 对象。 所以因为发生了 outOfMemory。

【讨论】:

    【解决方案2】:

    这是因为您的该图像的文件大小太重。每次运行或加载时,它都会在堆栈中创建不同的空间。因此,如果可能,请尝试更改图像的大小。或者,如果您使用 3.x 以上的 android 版本,则可以使用以下命令

    android:largeheap="true"
    

    将此代码写入清单文件中的应用程序标记下。

    【讨论】:

      【解决方案3】:

      您的应用程序要么泄漏内存,要么分配了太多对象,最终耗尽内存来创建线程。也可能在 UIL 中使用。

      根据 Universal Image Loader 文档,如果它的 usage results in Out of Memory error you should try the below 引用...

      • 禁用内存中的缓存。如果 OOM 仍然发生,那么您的应用似乎存在内存泄漏。使用 MemoryAnalyzer 检测它。否则,请尝试以下步骤(全部或几个): 减少配置中的线程池大小 (.threadPoolSize(...))。建议使用 1 - 5。
      • 在显示选项中使用 .bitmapConfig(Bitmap.Config.RGB_565)。 RGB_565 中的位图消耗的内存是 ARGB_8888 中的 2 倍。
      • 使用 .imageScaleType(ImageScaleType.EXACTLY)
      • 在配置中使用 .diskCacheExtraOptions(480, 320, null)"

      【讨论】:

        猜你喜欢
        • 2014-01-26
        • 2016-01-27
        • 2018-02-07
        • 1970-01-01
        • 2017-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多