Android限制jni申请堆内存,native 内存和 dalvik内存

本文介绍了Android中进程的内存结构,包括逻辑内存与RAM的关系,以及Android的native进程和java进程的区别。重点讨论了dalvik虚拟机的堆内存限制,指出dalvik.vm.heapsize参数只限制java堆,而native堆没有限制。为了突破限制,可以创建子进程或使用JNI在native heap上申请空间。同时,文章提供了查看应用进程内存的方法。
摘要由CSDN通过智能技术生成

逻辑内存和RAM

进程的地址空间

32位操作系统中,进程的地址空间为0到4GB

示意图如下:

b9efda164765

image

进程内存空间和RAM之间的关系

进程的内存空间只是虚拟内存(也可以叫做逻辑内存),而程序运行需要实实在在的内存,也就是物理内存RAM。

在必要时,操作系统会将程序中申请的内存(虚拟内存)映射到RAM,让进程能够使用物理内存。

b9efda164765

image

Android 中的进程

Android 中包含 native 进程和 java进程。

1、nativie 进程:采用C/C++ 实现,不包含dalvik实例的进程。/system/bin/目录下面的程序文件运行后都是以native进程形式存在的。

2、java进程:Android中运行与dalvik 虚拟机之上的进程。

dalvik虚拟机的宿主进程由fork()系统调用创建,所以每一个java进程都是存在于一个native进程中,因此,java进程的内存分配比native进程复杂,因为进程中存在一个虚拟机实例。

Android 进程中的堆内存。

1、

android 内存结构如下所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值