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的博客-CSDN博客

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

Android之资源限制ulimit | DD'Notes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`ulimit`是Linux/Unix系统下一个用于控制进程资源限制命令。使用`ulimit`命令可以查看或设置进程在运行时可以使用的各种资源限制,包括CPU时间,内存大小,文件打开数等等。 `ulimit -a`命令列出当前进程所能使用的所有资源限制,如下所示: ``` core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 63522 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 63522 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited ``` 上述输出显示了当前进程可以使用的所有资源限制,以及各个限制的具体值。 常用的`ulimit`命令参数包括: - `-c`:core文件的最大值(单位为blocks)。 - `-d`:进程数据的最大值(单位为KB)。 - `-f`:文件大小的最大值(单位为blocks)。 - `-n`:打开文件的最大数量。 - `-t`:进程CPU时间的最大值(单位为秒)。 - `-v`:进程虚拟内存的最大值(单位为KB)。 - `-m`:进程物理内存的最大值(单位为KB)。 例如,要将当前进程可以打开的最大文件数设置为2048,可以使用如下命令: ``` ulimit -n 2048 ``` 需要注意的是,`ulimit`命令所做的设置只对当前进程及其子进程有效,而对其他进程没有影响。如果需要全局修改系统的资源限制,需要修改系统配置文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值