我想更多地了解什么是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内存模型的一些链接/信息也将受到赞赏!
谢谢!
答案 0 :(得分:0)
vspace代表“虚拟[地址]空间”。
在32位系统中,它限制为4GB,通常为操作系统保留1/4。 程序二进制和动态加载的库需要与其他mmapped文件一起放入地址空间,用于内存分配(堆)和线程堆栈的地址范围。
答案 1 :(得分:0)
VSpace的概念只是操作系统中的虚拟空间。
当您尝试在开始显示视图时加载共享库时遇到此问题?
系统提供VSpace管理。但在一些定制的Rom中, VSpace有时可能无法正确设置。我遇到了我的程序中的问题 当我尝试加载视图时加载共享库(系统或我的) 需要malloc同时为位图提供大量内存。我试着问 Rom系统工程师,如果他们改变了VSpace设置,但他们的 答案就是一无所获。但我终于解决了这个问题。
如果您的问题与我的问题类似。请按以下建议进行操作:
1)使用较小的png或jpg以减少内存使用
2)在加载视图之前加载所有共享库。
希望这有帮助。感谢