2023-11-18 Android Linux资源限制命令ulimit,比如ulimit -d 设置进程占用最大数据段大小,默认unlimited。android 会对单个app可以申请内存进行限制

一、通过ulimit -a 命令可以查看当前的各种资源限制,比如ulimit -d 是 进程占用的最大数据段大小。

# ulimit -a
-t: time(cpu-seconds)     unlimited
-f: file(blocks)          unlimited
-c: coredump(blocks)      0
-d: data(KiB)             unlimited
-s: stack(KiB)            8192
-l: lockedmem(KiB)        65536
-n: nofiles(descriptors)  32768
-p: processes             15543
-i: sigpending            15543
-q: msgqueue(bytes)       819200
-e: maxnice               40
-r: maxrtprio             0
-m: resident-set(KiB)     unlimited
-v: address-space(KiB)    unlimited

二、我这里使用ulimit -d 设置单个应用可以申请的内存,从运行的结果看如果设置的内存不够,程序不能运行,会提示Segmentation fault。

三、这篇文章介绍android 里面会对单个app可以申请的内存进行限制,通过build.prop里面参数可以修改,如果修改不对,系统是不能正常运行的。  Android 内存优化的总结方案

查看 Dalvik 堆信息
每一个手机厂商都可以设定设备中每一个进程能够使用的堆大小,有关进程堆大小的值有下面三个,假如我们 dalvik 堆相关的信息可以通过命令查看,比如下面这条命令。

adb shell getprop dalvik.vm.heapsize
1. 堆分配的初始值
dalvik.vm.heapstartsize 是堆分配的初始值大小,这个值越小,系统内存消耗越慢,但是当应用扩展这个堆,导致 GC 和堆调整时,应用会变慢。

这个值越大,应用越流畅,但是可运行的应用也会相对减少。

2. 单个应用可用最大内存
dalvik.vm.heapgrowthlimit 是单个应用可用最大内存,如果在清单文件中声明 largeHeap 为 true,则 App 使用的内存到 heapsize 才会 OOM,否则达到 heapgrowthlimit 就会 OOM。

3. 堆内存最大值
dalvik.vm.heapsize 是进程可用的堆内存最大值,一旦应用申请的内存超过这个值,就会 OOM。

四、参考文章:

Linux资源限制命令—ulimit_HHFQ的博客-优快云博客

Android 系统文件限制小探_fdsetsize 1024 限制修改-优快云博客

Android之资源限制ulimit | DD'Notes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值