Android“vspace”内存?

时间:2010-11-15 18:44:47

标签: android memory-management

我想更多地了解什么是vspace内存。在为我们的Android游戏加载lib时耗尽vspace内存通常会发生,因为我们倾向于在应用程序启动时尽可能多地使用ram。我无法找到任何有关它的信息。

这是我收到的错误消息:

11-11 16:00:57.057: ERROR/libEGL(946): load_driver(/system/lib/egl/libEGL_adreno200.so): Cannot load library: alloc_mem_region[847]: OOPS:    64 cannot map library 'libEGL_adreno200.so'. **no vspace available**.

vspace内存究竟是什么?

关于android / linux内存模型的一些链接/信息也将受到赞赏!

谢谢!

2 个答案:

答案 0 :(得分:0)

vspace代表“虚拟[地址]空间”。

在32位系统中,它限制为4GB,通常为操作系统保留1/4。 程序二进制和动态加载的库需要与其他mmapped文件一起放入地址空间,用于内存分配(堆)和线程堆栈的地址范围。

答案 1 :(得分:0)

VSpace的概念只是操作系统中的虚拟空间。

当您尝试在开始显示视图时加载共享库时遇到此问题?

系统提供VSpace管理。但在一些定制的Rom中, VSpace有时可能无法正确设置。我遇到了我的程序中的问题 当我尝试加载视图时加载共享库(系统或我的) 需要malloc同时为位图提供大量内存。我试着问 Rom系统工程师,如果他们改变了VSpace设置,但他们的 答案就是一无所获。但我终于解决了这个问题。

如果您的问题与我的问题类似。请按以下建议进行操作:

1)使用较小的png或jpg以减少内存使用

2)在加载视图之前加载所有共享库。

希望这有帮助。感谢