最近遇到一个线上问题,因为业务需求需要文件下载功能,因此接入了Github上一个比较流行的下载库FileDownloader。
https://github.com/lingochamp/FileDownloader
但是在线上却出现了oom的问题
[error:java.io.IOException: Cannot run program "logcat": error=24, Too many open files]
FileDownloader-Network44(702)
java.lang.OutOfMemoryError
Could not allocate JNI Env
java.lang.Thread.nativeCreate(Native Method)
java.lang.Thread.start(Thread.java:1063)
java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:921)
4 java.util.concurrent.ThreadPoolExecutor.processWorkerExit(ThreadPoolExecutor.java:989)
5 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
6 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
7 java.lang.Thread.run(Thread.java:818)
一般创建线程的时候出现OOM的问题,可以有以下的情况:
1)内存堆栈满了,没有多余的内存空间
2)进程创建的线程数量超过了进程的最大限制数量
3)进程的文件操作符数量超过了进程的最大限制数量