Cocos2D / iOS7: a constant increase in memory usage for the template

This is what looks like an iOS7 simulator when the application just works without any user interaction (I also don't run any code, only Cocos2D template):

enter image description here

There is no such problem with 5.0-> 6.1. The code creating this problem is Cocos2D boilerplate code, which I tried to minimize with comments, and this is the minimal code from the application delegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Create the main window window_ = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // CCGLView creation CCGLView *glView = [CCGLView viewWithFrame:[window_ bounds] pixelFormat:kEAGLColorFormatRGB565 depthFormat:0 preserveBackbuffer:NO sharegroup:nil multiSampling:NO numberOfSamples:0]; director_ = (CCDirectorIOS*) [CCDirector sharedDirector]; director_.wantsFullScreenLayout = YES; // Display FSP and SPF [director_ setDisplayStats:YES]; // set FPS at 60 [director_ setAnimationInterval:1.0/60]; // attach the openglView to the director [director_ setView:glView]; [glView setMultipleTouchEnabled:YES]; // 2D projection [director_ setProjection:kCCDirectorProjection2D]; // [director setProjection:kCCDirectorProjection3D]; // Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices if( ! [director_ enableRetinaDisplay:YES] ) CCLOG(@"Retina Display Not supported"); // Default texture format for PNG/BMP/TIFF/JPEG/GIF images // It can be RGBA8888, RGBA4444, RGB5_A1, RGB565 // You can change this setting at any time. [CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888]; // If the 1st suffix is not found and if fallback is enabled then fallback suffixes are going to searched. If none is found, it will try with the name without suffix. // On iPad HD : "-ipadhd", "-ipad", "-hd" // On iPad : "-ipad", "-hd" // On iPhone HD: "-hd" CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils]; [sharedFileUtils setEnableFallbackSuffixes:NO]; // Default: NO. No fallback suffixes are going to be used [sharedFileUtils setiPhoneRetinaDisplaySuffix:@"-hd"]; // Default on iPhone RetinaDisplay is "-hd" [sharedFileUtils setiPadSuffix:@"-ipad"]; // Default on iPad is "ipad" [sharedFileUtils setiPadRetinaDisplaySuffix:@"-ipadhd"]; // Default on iPad RetinaDisplay is "-ipadhd" // Assume that PVR images have premultiplied alpha [CCTexture2D PVRImagesHavePremultipliedAlpha:YES]; // Create a Navigation Controller with the Director navController_ = [[MyNavigationController alloc] initWithRootViewController:director_]; navController_.navigationBarHidden = YES; // for rotation and other messages [director_ setDelegate:navController_]; // set the Navigation Controller as the root view controller [window_ setRootViewController:navController_]; // make main window visible [window_ makeKeyAndVisible]; return YES; } 

I also commented on starting CCDirector from directorDidReshapeProjection to exclude my own code. Therefore, when the application starts now, I see only the frame rate on the black screen.

I see the same result from tools.

Unfortunately, I cannot test iOS 7 on the device, but I do not expect the simulator to act like this.

Update:

I made 2 Mark Generations with the following result.

enter image description here

All elements are 64 byte distributions. I have no idea what this type is. It is worth mentioning that I am using the latest stable Cocos2D 2.1.

Update # 2:

A stack call of 64 bytes.

enter image description here

+8
ios memory-leaks objective-c ios7 cocos2d-iphone
source share
3 answers

Not so much an answer as a confirmation: this is a problem specific to iOS 7.0 and cocos2d 2.1.

I observed the same behavior: cocos2d 2.1 on iOS 7.0 simulator increases memory usage over time. And a lot too, every few seconds at ~ 1 MB. But let it ignore it, the Simulator is not a real device.

On the device (iPod touch 5th generation with iOS 7), the memory barely rises. The use of the noted generations within 5 minutes indicates an increase of no more than 15 KB. Sometimes there is a block of 10-15 KB, but eventually released at least most of it. The amount of added memory and sticking for 5 minutes is about 5 KB. Not much, but more than nothing for a boilerplate application that does nothing or does not respond to anything.

The memory added and never released on the device is mainly marked as <non-object> , as in the simulator, with several CGPath inserted between them. Thus, this may indicate that the memory management issue in cocos2d 2.1 on iOS 7 may be a problem, although it is too small to have any negative impact on most applications (~ 100K "leak" per hour).

Sprite Kit and OpenGL applications, as well as work on the iOS 6 simulator (I could not test on the iOS 6 device) do not detect such a problem, live bytes remain unchanged, and the noted generations do not report growth.

+3
source share

Are you sure you have no zombie objects?

Click on your product → Change Scheme and on the diagnostics tab, if you have the checkbox "Enable zombie objects", clear the check box and try again.

0
source share

I know it's too late to answer this problem, but just leave it here. The guy is talking about nszoombie, so if you enable xcode debugging with this option, this will cause this problem. Turn off and check again

0
source share

All Articles