首先,大家应该很清楚,android为每个应用程序(具体应该说是VM)分配的最大堆内存(heap)为16m(可能不同的手机品牌会有修改)。
超过这个最大值,会出现oom而导致虚拟机被关闭。
这是对于纯sdk开发来说,如果对于ndk开发,编译生成的so不会运行在虚拟机中,也就没有这个的限制。 但是linux不能让一个进程无限制的使用内存资源吧?
如果有限制,那谁能知道关于android的linux的内存管理机制是如何的?代码在什么地方?
请高手不吝赐教。
超过这个最大值,会出现oom而导致虚拟机被关闭。
这是对于纯sdk开发来说,如果对于ndk开发,编译生成的so不会运行在虚拟机中,也就没有这个的限制。 但是linux不能让一个进程无限制的使用内存资源吧?
如果有限制,那谁能知道关于android的linux的内存管理机制是如何的?代码在什么地方?
请高手不吝赐教。
解决方案 »
- android部署到2.2报错和4.2不报错!
- 无焦点 popwindow中的EditText跳不出软键盘输入问题,高手速来
- 如何导出一个已安装的APK
- 取得Activity栈里的所有或某一Activity
- LED闪光灯无法打开
- Android老油条请进
- 长文 如何区分 是划选 还是 想让向下浏览动作 ?
- android Gridview下拉刷新和底部自动加载
- android studio导入github上的项目的问题?
- Google map 不能用~
- 征集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内存管理机制,那真不是几句话能说清的