日志里报oom错误了,如下图所示:
android app一个内存oom问题的定位之前就发现有个线程泄露的问题,检视代码发现被别人覆盖了。于是测试下现象,发现在华为p9p手机上,创建不到500个线程的时候就会报pcreate oom,此时内存只使用了40M左右。现象和日志一致。
再使用三星s8+手机测试,当内存使用在不到100M的时候,会报window cursor分配错误。
写个用力测试堆内存分配失败的现象,发现真的到了系统对进程内存限制的时候(三星s8+是256M),才会被系统杀掉。
由此可见,由对内存不足引起的oom,是真的内存使用过大导致;而线程分配过多引起的oom,则可能不是内存引起的,是其他系统资源不足导致。
网友评论