Flurry Analytics - NSAutoreleasePool allocWithZone:] - 升级到Objective-C ARC后的内存泄漏

时间:2011-11-06 22:11:59

标签: ios memory-leaks xcode4.2 automatic-ref-counting flurry

我最近刚用ARC(自动引用计数)将我的项目升级到iOS 5,现在,在我在后台暂停应用程序后,Instruments报告了NSAutoreleasePool的内存泄漏。

我怀疑漏洞是由Flurry Analytics引起的,基于具有这两个API调用的堆栈跟踪:

+[FlurrySession sendSessionsToServerForSessionPause]
+[FlurrySession sendSessionsToServerWithTimeout:useWebView:requestAppCircleAds:requestVideoAds:requestAppSpotAds:sendCurrentSession:]

我没有在挂起时进行任何Flurry API调用。唯一的呼吁是

[FlurryAnalytics startSession:<my id>];

应用首次启动时。

报告泄密

Leaked Object   #       Address     Size        Responsible     Library Responsible Frame

NSAutoreleasePool,1     0x7693f600  32 Bytes    Foundation      +[NSAutoreleasePool allocWithZone:]

堆栈跟踪

  10 libsystem_c.dylib thread_start
   9 libsystem_c.dylib _pthread_start
   8 Foundation __NSThread__main__
   7 Foundation -[NSThread main]
   6 iSURVEY +[FlurrySession sendSessionsToServerForSessionPause] /Developer/Applications/iPhoneAdAgent_modular/Classes/FlurrySession.m:931
   5 iSURVEY +[FlurrySession sendSessionsToServerWithTimeout:useWebView:requestAppCircleAds:requestVideoAds:requestAppSpotAds:sendCurrentSession:] /Developer/Applications/iPhoneAdAgent_modular/Classes/FlurrySession.m:962
   4 CoreFoundation +[NSObject(NSObject) alloc]
   3 Foundation +[NSAutoreleasePool allocWithZone:]
   2 CoreFoundation +[NSObject(NSObject) allocWithZone:]
   1 libobjc.A.dylib class_createInstance
   0 libsystem_c.dylib calloc

编辑:

我只是尝试关闭所有调试变量,比如僵尸,内存泄漏仍然完全一样。

编辑2:

好的,我已经确认它肯定是乱舞问题。取消通话后

[FlurryAnalytics startSession:<my id>];

我不再收到内存泄漏。

我将向Flurry团队提交一个错误。

1 个答案:

答案 0 :(得分:1)

我看到同样的32字节泄漏。我正在考虑以这种方式发布它,并观察更新。一次32字节泄漏似乎不是一个大问题。我只在应用程序向Flurry注册时才会看到它,而不是每次任务都在后台运行时。我使用Flurry版本3.0.2与iOS 5.0作为基本SDK,以及iOS 4.1的目标

查看Flurry文档,看起来您可以将其设置为仅报告应用程序启动。

在你之前

[FlurryAnalytics startSession:id];

添加以下两个电话:

[FlurryAnalytics setSessionReportsOnCloseEnabled:NO];
[FlurryAnalytics setSessionReportsOnPauseEnabled:NO];

文档说默认情况下“OnPause”处于关闭状态,但确定无误。

我还向Flurry提交了一份错误报告。