我有一个内存密集型iOS应用程序,我正在努力确保内存使用量不会随着时间的推移而增加。我的应用程序有一个在应用程序的整个生命周期内都存在的“主”上下文,偶尔会为后台任务生成其他较小的上下文。我注意到的一件事是NSManagedObjects似乎长期在主上下文中保持注册状态,真正回收与从数据库中拉出对象相关的所有内存的唯一方法是调用[NSManagedObjectContextreset]。这当然会导致内存使用量大幅下降,因为最近关闭的ListView中的所有已注册对象都会从内存中正确弹出,但是这很烦人,因为您刚刚使在该上下文中注册的每个对象无效,您仍然有一个引用(即由仍然打开的View引
我有一个内存密集型iOS应用程序,我正在努力确保内存使用量不会随着时间的推移而增加。我的应用程序有一个在应用程序的整个生命周期内都存在的“主”上下文,偶尔会为后台任务生成其他较小的上下文。我注意到的一件事是NSManagedObjects似乎长期在主上下文中保持注册状态,真正回收与从数据库中拉出对象相关的所有内存的唯一方法是调用[NSManagedObjectContextreset]。这当然会导致内存使用量大幅下降,因为最近关闭的ListView中的所有已注册对象都会从内存中正确弹出,但是这很烦人,因为您刚刚使在该上下文中注册的每个对象无效,您仍然有一个引用(即由仍然打开的View引
我正在尝试查看导致内存泄漏的进程,并转储导致它的堆以查看问题所在。我在gdb中使用哪个命令来设置内存泄漏并检查堆?我试过:(gdb)check-leakscheckpoint:can'tfindforkfunctionininferior.(gdb)helpinfoheapUndefinedinfocommand:"heap".Try"helpinfo".(gdb)helpinfoleaksUndefinedinfocommand:"leaks".Try"helpinfo". 最佳答案 正如人们指出的那样,Valgrind是您的答案