繁体   English   中英

iOS-FMDB使用和内存

[英]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”命令来调整它将分配多少内存。

请参阅以下相关问答:

sqlite + fmdb vacuum命令后出现内存泄漏(?)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM