[英]iOS - FMDB usage and memory
我一直在追踪我的iOS应用程序中的内存泄漏,并使用泄漏工具继续返回以下代码:
NSMutableArray *resultSet = [[NSMutableArray alloc] initWithCapacity:3];
NSAutoreleasePool *innerPool = [[NSAutoreleasePool alloc] init];
FMResultSet *rs = [db executeQuery:query,equipmentID];
while ([rs next])
{
[resultSet addObject: [rs resultDict]];
}
[rs close];
[innerPool release];
return [resultSet autorelease];
这是正确的(就内存管理而言)FMDB的用法吗? 这是泄漏仪器的屏幕截图:
泄漏的详细屏幕截图:
是的,这是正确的内存管理。 [rs close];
从技术上讲,该行是不必要的,因为当FMResultSet
被释放时(作为池排放的一部分),它将发生(如果尚未发生)。 但是将其明确地放在那里是很好的。
您是否可能过度保留return数组?
SQLite分配并保留了一堆内存,只有在关闭数据库时才会释放该内存。 您还可以通过发出“ pragma cache_size = nnn”命令来调整它将分配多少内存。
请参阅以下相关问答:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.