iOS内存堆不断增长

时间:2015-11-22 20:47:35

标签: ios core-data memory-management heap

我希望这只是一些我无法弄清楚的简单事情。

我有一个带有类扩展的核心数据模型。

+(CDvitalsPO2Data *) newVitalDataInContext:(NSManagedObjectContext *)context {
    NSEntityDescription *entity = [NSEntityDescription entityForName:po2EntityName inManagedObjectContext:context];
    CDvitalsPO2Data *newVitalsDataPoint = [[[CDvitalsPO2Data class] alloc] initWithEntity:entity insertIntoManagedObjectContext:context];    
    return newVitalsDataPoint;
}

因此,这将在上下文和po2实体名称中返回一个新项。大。

如果我从此代码中调用此类扩展名:

-(void) logPO2:(NSDictionary *)po2EntryDictionary forThisTime:(NSDate *)loggedTime inContext:(NSManagedObjectContext *)context {

if (context) {
        CDvitalsPO2Data *vitalsPO2Entry;
        vitalsPO2Entry  = [CDvitalsPO2Data newVitalDataInContext:context];
        vitalsPO2Entry.timeStamp  = [NSDate dateWithTimeIntervalSinceReferenceDate:[loggedTime timeIntervalSince1970]];

        vitalsPO2Entry.accelX = [po2EntryDictionary objectForKey:po2LogAccelX];
        vitalsPO2Entry.accelY = [po2EntryDictionary objectForKey:po2LogAccelY];
        vitalsPO2Entry.accelZ = [po2EntryDictionary objectForKey:po2LogAccelZ];
        vitalsPO2Entry.patchID = [po2EntryDictionary objectForKey:po2LogPatchID];
        vitalsPO2Entry.patchRSSI = [po2EntryDictionary objectForKey:po2LogPatchRSSI];
        vitalsPO2Entry.sequenceID = [po2EntryDictionary objectForKey:po2LogSequenceID];
        vitalsPO2Entry.sessionID = [po2EntryDictionary objectForKey:po2LogSessionID];
        vitalsPO2Entry.po2Value = [po2EntryDictionary objectForKey:po2LogValue];

        NSError *error;

        [[vitalsPO2Entry managedObjectContext] save:&error];
        if (error) {
            NSLog(@"save error:%@",error);
        }
}

我将对象插入上下文,它被保存,但堆只是增长和增长。如果此日志每秒运行一次或每分钟运行一次,我只看到内存增长。我把所有类型的弱指针放入调用中,尝试将事物设置为nil,将自动释放池放入到位;没有什么似乎减速,更不用说停止内存蔓延。我觉得我缺少一些基本的东西。在上下文保存后,这些对象一旦超出范围,是否应该被转储?当我查看仪器时,对象上似乎有一个保留,但它在系统级别,它不是来自我的一个常规调用。

1 个答案:

答案 0 :(得分:0)

我见过的所有问题都直接对Xcode Scheme负责。 产品展示反应路线 选择“运行选项” UNCHECK - >队列调试(启用回溯录制)

一旦完成,所有内存占用量的增长都会立即消失。