【发布时间】:2020-01-10 23:37:18
【问题描述】:
我已经在 Xcode 10.3 中测试过代码
- (void)loopObjectMalloc {
while (1) {
NSObject *obj = [[NSObject alloc] init];
}
}
我预计 OOM 发生了,但内存没有增加。 alloc函数不是memset到物理内存吗?
【问题讨论】:
-
obj 将在每个 while 循环结束时释放。当然,内存不会增加。
-
@trungduc 但是runloop一直在工作,那么释放功能是什么时候发生的?
-
正如@trungduc 所说,默认情况下自动引用计数(ARC)是打开的。关掉它来测试。更新:您最后的评论听起来像是在谈论自动释放功能。
-
@Kylin.Zhang 我觉得你对循环结束和函数结束有误解。
-
@trungduc 是的,我对此感到困惑,while循环中有autoreleasepool吗?
标签: objective-c malloc automatic-ref-counting memset