这是一个代码插入并检查一些数据(每分钟100条记录)。结果它增加了Activity Monitor中的内存。
另外问题是,经过几个小时的工作后,cache.sqlite达到了5 Mb,但在活动监视器中,我看到该应用程序需要超过100 Mb且不断增长
使用Xcode 7乐器我没有看到任何内存泄漏。
请帮我解决问题:
@property (nonatomic, strong) NSManagedObjectContext* moc;
...
- (BOOL)addCache:(NSData *)aHash
{
BOOL isAdded = NO;
@autoreleasepool {
DOMCItem* messageCacheItem = (DOMCItem *)[DOMCItem insertInManagedObjectContext:_moc];
messageCacheItem.contentkey = aHash;
NSArray *objArr = [[_moc registeredObjects] allObjects];
[_moc obtainPermanentIDsForObjects:objArr error:nil];
if([_moc save:nil]) {
isAdded = YES;
}
for (NSManagedObject *mo in [_moc registeredObjects]) {
[_moc refreshObject:mo mergeChanges:NO];
}
[_moc reset];
}
return isAdded;
}
- (BOOL)isCached:(NSData *)aHash
{
BOOL isCached = NO;
@autoreleasepool {
NSEntityDescription* ed = [DOMCItem entityInManagedObjectContext:_moc];
NSFetchRequest* fr = [[NSFetchRequest alloc] init];
[fr setEntity:ed];
NSPredicate* pr = [NSPredicate predicateWithFormat:@"key == %@", aHash];
[fr setPredicate:pr];
[fr setFetchLimit: 1];
NSArray* arr = [_moc executeFetchRequest:fr error:nil];
if ([arr count] > 0) {
isCached = YES;
}
}
return isCached;
}