【问题标题】:External allocation too large for this process in AndroidAndroid中此进程的外部分配太大
【发布时间】:2011-05-10 18:49:45
【问题描述】:

我的应用中出现“external allocation too large for this process”错误。一次有很多这样的:

11-16 10:56:59.230: ERROR/dalvikvm-heap(2875): 1303680-byte external allocation too large for this process.
11-16 10:56:59.230: ERROR/GraphicsJNI(2875): VM won't let us allocate 1303680 bytes
11-16 10:56:59.230: ERROR/dalvikvm-heap(2875): 1536000-byte external allocation too large for this process.
11-16 10:56:59.230: ERROR/GraphicsJNI(2875): VM won't let us allocate 1536000 bytes

它们似乎是在渲染布局时生成的,在加载大位图之后。但是,在位图解码时不会产生错误。

如何调试这些错误?任何额外的指针?

【问题讨论】:

  • 该框架通常会将屏幕上的视图捕获到临时位图中以提高绘图性能。看起来你的应用程序已经在推动它的内存限制,这让它颠倒了。查看其他关于限制应用内存使用的建议。
  • @adamp 非常有趣。这种行为是否记录在某处?
  • 是的。查看与绘图缓存相关的 View 类的各种方法。它是应用程序也可以使用的公共 API。

标签: android memory-management


【解决方案1】:

如果您使用线程,那么调试器可能是问题的根源。如果您在调试器下运行应用程序,则创建的任何线程仍将由调试器保留,即使它们已完成运行。这会导致应用在没有调试器的情况下运行时不会发生的内存错误。

http://code.google.com/p/android/issues/detail?id=7979

【讨论】:

【解决方案2】:

adamp 的评论是我特定情况下的答案:

框架通常会捕获视图 屏幕上的临时位图 绘图性能。看起来像 你的应用程序正在推动 它的内存限制已经和这个 把它撞倒。看看 其他限制你的建议 应用程序的内存使用情况。

【讨论】:

    猜你喜欢
    • 2011-09-13
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    相关资源
    最近更新 更多