首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dalvik内存碎片处理

Dalvik内存碎片处理
EN

Stack Overflow用户
提问于 2012-11-16 03:46:40
回答 2查看 1.2K关注 0票数 2

你能告诉我Dalvik是如何处理内存碎片的吗?例如,如果我有一个应用程序分配了一些小内存。但是释放其中的一部分,然后尝试分配一大块。Dalvik如何处理这样的请求,堆中的所有“漏洞”?

我需要通过logcat来帮助理解这一点:

代码语言:javascript
复制
11-15 02:50:21.837 D/dalvikvm(  990): GC_BEFORE_OOM freed 16K, 40% free 9830K/16384K, paused 90ms, total 90ms
11-15 02:50:21.837 E/dalvikvm-heap(  990): Out of memory on a 5032864-byte allocation. 

它说我的应用程序使用了16384K中的9830K。我知道16M是最大的堆大小,它不能再增长了。

但这应该会留下6554K的空闲空间(16384k - 9830K)。为什么dalvik会说‘在一个5032864字节的分配中,内存不足。那是4914K,比我剩下的更小。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2012-11-16 03:53:18

看一下这个,它可能会帮助您理解如何处理dalvik内存碎片

Link1

票数 -1
EN

Stack Overflow用户

发布于 2012-11-16 03:58:37

像大多数垃圾收集器( GC )实现一样,Dalvik/Java的GC使用双重引用:内存中的引用变量不直接指向它们的对象,而是指向最终指向各个对象的第二个引用。因此,当应用程序需要较大的内存分配时,GC可以自由移动内存分配,并将空洞融合在一起,而不会以任何方式影响Java分配的各种参考变量。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13404979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档