【发布时间】:2019-07-12 13:23:30
【问题描述】:
在我的 Android 应用程序中,我遇到了几个带有 Too many open files 错误的问题。
我确定我的应用程序中没有文件描述符泄漏,并且我当前的上限设置为 1024 个打开的文件:
adb shell ulimit -a
time(cpu-seconds) unlimited
file(blocks) unlimited
coredump(blocks) 0
data(KiB) unlimited
stack(KiB) 8192
lockedmem(KiB) 64
nofiles(descriptors) 1024
processes 12016
sigpending 12016
msgqueue(bytes) 819200
maxnice 40
maxrtprio 0
resident-set(KiB) unlimited
address-space(KiB) unlimited
我没有root权限,所以我尝试使用以下命令增加这个数字:
adb shell ulimit -n 2048
但限制没有改变。所以我更改了我的用户 ID 并重试:
adb shell run-as [package.name]
~ ulimit -n 2048
~ ulimit -a
limit -a
time(cpu-seconds) unlimited
file(blocks) unlimited
coredump(blocks) 0
data(KiB) unlimited
stack(KiB) 8192
lockedmem(KiB) 64
nofiles(descriptors) 2048
processes 12016
sigpending 12016
msgqueue(bytes) 819200
maxnice 40
maxrtprio 0
resident-set(KiB) unlimited
address-space(KiB) unlimited
而且我已经实现了仅为当前进程增加此限制。当我重新启动应用程序时,限制再次为 1024。
还有其他方法可以永久提高此限制吗?
P.S.我也搜索了/etc/security/limits.conf文件,但没有任何运气
【问题讨论】:
标签: android shell adb file-descriptor