linux疑难问题排查实战专栏,分享了作为公司专家,在解决内存、性能、各类死机等疑难问题的排查经验,认真学习可以让你在日后工作中大放光彩。
设备执行出现OOM,可能有很多原因导致的,堆内存泄漏、glibc缓存过大、业务消耗过多本身内存不足等,本文分享的是由于栈上局部变量定义过大导致oom的问题,以及这种问题的定位和解决办法。
看到这里,读者可能会疑问,栈是编译器自动分配和释放的,即便定义过大,接口执行完,内存也就释放了,并且栈上也不存在内存泄漏等问题,怎么会导致oom呢?这里我先介绍一下遇到的问题,读者可以思考一下,遇到下面这个问题导致的oom,目前自己现有的知识是否可以解决。
本文遇到的问题是:上层创建了一个线程池,包含20个线程,所有线程实体一样,都会调用接口funA()