首先,大家应该很清楚,android为每个应用程序(具体应该说是VM)分配的最大堆内存(heap)为16m(可能不同的手机品牌会有修改)。
超过这个最大值,会出现oom而导致虚拟机被关闭。
这是对于纯sdk开发来说,如果对于ndk开发,编译生成的so不会运行在虚拟机中,也就没有这个的限制。 但是linux不能让一个进程无限制的使用内存资源吧?
如果有限制,那谁能知道关于android的linux的内存管理机制是如何的?代码在什么地方?
请高手不吝赐教。
超过这个最大值,会出现oom而导致虚拟机被关闭。
这是对于纯sdk开发来说,如果对于ndk开发,编译生成的so不会运行在虚拟机中,也就没有这个的限制。 但是linux不能让一个进程无限制的使用内存资源吧?
如果有限制,那谁能知道关于android的linux的内存管理机制是如何的?代码在什么地方?
请高手不吝赐教。
解决方案 »
- android2.1因缺少libjnigraphics.so而无法加载.so库的问题
- an android virtual device that faile to load 求帮助,网上的一些解决办法也试了!
- android蓝牙问题
- android 2.3.3 2.3.4中mediaplayer缓冲时间过长是怎么回事?有什么方法能够解决呢?
- 本人要做个有声阅读器,不知道用到哪些技术,希望有经验的高手帮帮我
- 关于android WebService
- 怎样在android模拟器里打开并显示已存在的数据库,而不是重新创建
- 我在调试hello Ophone 时出错,谁来帮忙指导一下。谢谢。
- webview访问js不成功
- sipdroid真的能视频通话么
- 征集android 解析PDF方法
- 关于contentprovider中的openAssetFile(Uri uri, String mode)和openFile(Uri uri, String
我找了段代码你可以试试
int main()
{
int MB = 0;
while(malloc(1 << 20)) ++MB;
printf("Allocated %d MB total.n", MB);
}
至于linux内存管理机制,那真不是几句话能说清的