- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我在内存类型 nsmanagementobjectcontext 中使用时,我的应用程序(osx 10.8.3)的内存大小有所增加:
波纹管是仪器的前 2 个函数。
我确实清除了内存问题,但泄漏仍然存在。你能建议我必须寻找的任何方式吗?
这里是一个顶级负责调用者(全部针对 CoreData):
CoreData -[_NSFaultingMutableOrderedSet willRead]
CoreData _PFAllocateObject
CoreData [NSDictionaryStoreMap _nodeFromObject:objectIDMap:]
最佳答案
Bcs Marcus 没有写任何例子,我想尝试回答我自己的问题:正如我所见,内存泄漏消失了。但我更痛苦,让我们逐步描述。
在调查了互联网资源的经验后,我选择了方案:我有两个内存主 MOC,具有不同的持久存储坐标。
这是因为我对第一个 moc 的负载非常高,对第二个 moc 的负载不是太多(但有大量数据)
然后,所有创建的线程创建自己的 MOC(NSPrivateQueueConcurrencyType),根据类型创建父线程并做它们能做的事情。它是多线程服务器,因此我可以从另一个线程删除对象。
这是保存代码:
-(void) finalSaveMocInMemoryForDynamicInformation;
{
[_mocInMemoryForDynamicInformation performBlock:^{
@try {
if ([_mocInMemoryForDynamicInformation hasChanges]) {
NSError *error;
AppDelegate *delegateMain = (AppDelegate *)[[NSApplication sharedApplication] delegate];
if ([_mocInMemoryForDynamicInformation save:&error])
{
[delegateMain.managedObjectContextInMemoryForDynamicInformation performBlock:^{
@try {
if ([delegateMain.managedObjectContextInMemoryForDynamicInformation hasChanges]) {
NSError *error;
if (![delegateMain.managedObjectContextInMemoryForDynamicInformation save:&error])
{
[self logError:error forDelegate:delegateMain];
}
}
}
@catch (NSException *exception) {
NSLog(@"SIP CONTROLLER:ERROR:%@:%@ exception->%@ inside managedObjectContextInMemoryForDynamicInformation",[self class], NSStringFromSelector(_cmd),exception);
return ;
}
}];
} else [self logError:error forDelegate:delegateMain];
}
}
@catch (NSException *exception) {
NSLog(@"SIP CONTROLLER:ERROR:%@:%@ exception->%@ inside _mocInMemoryForDynamicInformation",[self class], NSStringFromSelector(_cmd),exception);
return ;
}
}];
}
模型之前在旧方案上工作正常。当我开始在生产中使用服务器时,我在保存时遇到了大量错误,在哪里谈论无法删除不存在的对象(三个子对象)。看来核心数据不理解对象具有临时 ID,并尝试以级联模式删除它们。
我认为保存时错误太多不是个好主意,我尝试使用 acquirePermanentID: 函数来修复它。错误消失,但我收到了崩溃报告,该报告不时启动,如下所述:
core data child/parent save exception
然后,我删除了所有 acquirePermanentID 并返回到清晰的代码。但现在,之前的崩溃发生了崩溃:
0 com.apple.CoreFoundation 0x00007fff867bcbd1 __CFBasicHashAddValue + 1297
1 com.apple.CoreFoundation 0x00007fff867c3268 CFBasicHashAddValue + 3176
2 com.apple.CoreFoundation 0x00007fff867d8ba9 CFSetAddValue + 121
3 com.apple.CoreData 0x00007fff89f15986 -[NSManagedObjectContext(_NSInternalAdditions) _insertObjectWithGlobalID:globalID:] + 182
4 com.apple.CoreData 0x00007fff89f15850 -[NSManagedObjectContext insertObject:] + 144
5 com.apple.CoreData 0x00007fff89eec056 -[NSManagedObject initWithEntity:insertIntoManagedObjectContext:] + 534
6 com.apple.CoreData 0x00007fff89f15722 +[NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:] + 178
7 com.yourcompany.callsfreecalls 0x000000010b3a87f9 -[SipController packetForData:forSocketData:isUDPsocket:forIncomingLeg:] + 23545
Crashed Thread: 15 Dispatch queue: socketIncomingLegQueue
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0xfffffffffffffff8
VM Regions Near 0xfffffffffffffff8:
--> shared memory 00007fffffffe000-00007ffffffff000 [ 4K] r-x/r-x SM=SHM
两次崩溃都发生在核心数据内部,这意味着我对此无能为力。它无法通过 CORE_DATA_DEBUG bcs 加载太高进行调试,并且我无法 @catch 异常 bcs 它位于苹果库内部,而它们确实执行请求)。苹果的错误报告几个月都没有得到答复。这里有两件事是可以的。首先 - 我不明白新模型中的某些内容(也许主 MOC 必须位于 NSPrivateQueueConcurrencyType 中,子 MOC 必须位于 NSMainQueueConcurrencyType 中,或者我需要保存或合并某些内容(但苹果告诉不行),或者我需要移动所有问题核心对象的数量,例如在相应 MOC 的 ^performBlock 内插入新对象获取请求等)。其次 - 新的核心数据模型有太多问题,我需要将其移出并使用对象创建自己的模型。
合理的建议和经验分享将不胜感激。我将添加更多信息,同时我将调查避免发现错误的所有方法。
更新
目前,对我来说是个好消息(但对苹果来说可能不是好消息)错误已因非常奇怪的原因得到修复。在我的模型中,我有这个方案:ActiveSession ----(对一) ---> ActiveSessionIncomingLeg --(对多)-> ActivePacket ----(对一) ---> ActiveSessionOutgoingLeg --(对多)-> ActivePacket使用一对一关系的原因是我只有一条腿传入和传出。它在子/父方案之前运行良好,让我可以轻松访问以下属性:
NSOrderedSet *set = incomingLeg.activeSession.activeSessionOutgoingLeg.activePacket;
只是为了检查一下,我将一对一关系更改为特定(对多)关系。哇——崩溃已经解决了。希望它可以对社区有所帮助。快乐编码。
关于macos - 在内存中 mergeChangesFromContextDidSaveNotification 并保存内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16892516/
IntentReceiver 正在泄漏 由于 onDetachedFromWindow 在某些情况下未被调用。 @Override protected void onDetachedFromWind
好吧,我很难追踪这个内存泄漏。运行此脚本时,我没有看到任何内存泄漏,但我的 objectalloc 正在攀升。 Instruments 指向 CGBitmapContextCreateImage >
我编写了一个测试代码来检查如何使用 Instrument(Leaks)。我创建了一个单一 View 应用程序,单击按钮后我加载了一个像这样的新 View ... - (IBAction)btn_clk
我正在使用这个简单的代码并观察单调增加的内存使用量。我正在使用这个小模块将内容转储到磁盘。我观察到它发生在 unicode 字符串上而不是整数上,我做错了什么吗? 当我这样做时: >>> from u
我有以下泄漏的代码。 Instruments 表示,泄漏的是 rssParser 对象。我“刷新”了 XML 提要,它运行了该 block 并且发生了泄漏...... 文件.h @interface
我在我编写的以下代码片段中发现了内存泄漏 NSFileManager *fileManager=[[NSFileManager alloc] init]; fileList=[[fileManager
因此,我正在开发HTML5 / javascript rts游戏。观察一直有几种声音在播放。因此,对我来说,是一段时间后声音听起来像是“崩溃”,并且此浏览器选项卡上的所有声音都停止了工作。我只能通过重
下面是我正在使用的一段代码及其输出。 my $handle; my $enterCount = Devel::Leak::NoteSV($handle); print "$date entry $en
在这篇关于 go-routines 泄漏的帖子之后,https://www.ardanlabs.com/blog/2018/11/goroutine-leaks-the-forgotten-sende
我想知道为什么在执行 ./a.out 后随机得到以下结果。有什么想法我做错了吗?谢谢 http://img710.imageshack.us/img710/8708/trasht.png 最佳答案 正
我正在 Swift 中开发一个应用程序,在呈现捕获我放在一起的二维码的自定义 ViewController 后,我注意到出现了巨大的内存跳跃。 该代码本质上基于以下示例:http://www.appc
下面是我的 javascript 代码片段。它没有按预期运行,请帮我解决这个问题。 function getCurrentLocation() { console.log("insi
我们在生产环境中部署了 3 个代理 Kafka 0.10.1.0。有些应用程序嵌入了 Kafka Producer,它们将应用程序日志发送到某个主题。该主题有 10 个分区,复制因子为 3。 我们观察
我正在使用仪器来检测一些泄漏,但有一些泄漏我无法解决; NSMutableString *textedetails = [[NSMutableString alloc] init];
如果我使用性能工具测试我的代码 - 泄漏,它没有检测到任何泄漏。这是否意味着代码没有泄漏任何内存? 我有一个越狱的 iPhone,我可以监控可用内存。如果有人知道,那就是 SBSettings。我测试
我在从 AddressBook 中获取图像时遇到了很大的问题,下面我粘贴了我的代码。此 imageData 从未被释放,在我的 Allocations Instruments 上它看起来总是在内存中它
- (NSMutableArray *)getArrayValue:(NSArray *)array{ NSMutableArray *valueArray = [NSMutableArra
Instruments 工具说这是一个泄漏,有什么想法吗? 我在 for 循环结束时释放变量对象 在上述方法的开头,这就是我设置变量对象的方式,即自动释放; NSMutableArray *varia
我正在跟踪我的 iOS 应用程序的内存泄漏,我有一个奇怪的泄漏导致我的应用程序崩溃......负责的框架是:CGImageMergeXMPPropsWhithLegacyProps。在某些时候,我的应
我正在尝试使用 NSOperationQueue 在后台线程中执行一个方法,如下所示: NSOperationQueue *queue = [NSOperationQueue new]; NS
我是一名优秀的程序员,十分优秀!