Leak when "drawing too fast"
Leak when "drawing too fast"
- Subject: Leak when "drawing too fast"
- From: Andreas Mayer <email@hidden>
- Date: Mon, 08 Jul 2013 20:28:54 +0200
This is on OS X 10.8.4.
I'm trying to animate something and draw as smoothly as possible.
While trying to utilize a display link callback I noticed a memory leak in my application.
After some experimentation I found out that this is not directly linked to the callback but instead also happens when I use a timer with a high enough firing rate to send -setNeedsDisplay:YES. (i.e. 0.03 seconds interval works fine, 0.01 seconds interval leaks)
Here is an excerpt from Instruments:
# Event Type ∆ RefCt RefCt Timestamp Responsible Library Responsible Caller
Malloc/Autorelease (2) +1 00:00.760.561 Foundation -[NSCFTimer initWithFireDate:interval:target:selector:userInfo:repeats:]
0 Malloc +1 1 00:00.760.561 Foundation -[NSCFTimer initWithFireDate:interval:target:selector:userInfo:repeats:]
1 Autorelease 00:00.760.564 AppKit _handleWindowNeedsDisplayOrLayoutOrUpdateConstraints
2 CFRetain +1 2 00:00.760.571 AppKit __83-[NSWindow _postWindowNeedsDisplayOrLayoutOrUpdateConstraintsUnlessPostingDisabled]_block_invoke_01208
CFRetain/CFRelease (6) 00:00.760.573 AppKit __83-[NSWindow _postWindowNeedsDisplayOrLayoutOrUpdateConstraintsUnlessPostingDisabled]_block_invoke_01208
3 CFRetain +1 3 00:00.760.573 AppKit __83-[NSWindow _postWindowNeedsDisplayOrLayoutOrUpdateConstraintsUnlessPostingDisabled]_block_invoke_01208
4 CFRetain +1 4 00:00.760.576 AppKit __83-[NSWindow _postWindowNeedsDisplayOrLayoutOrUpdateConstraintsUnlessPostingDisabled]_block_invoke_01208
5 CFRetain +1 5 00:00.760.578 AppKit __83-[NSWindow _postWindowNeedsDisplayOrLayoutOrUpdateConstraintsUnlessPostingDisabled]_block_invoke_01208
11 CFRelease -1 7 00:00.775.686 AppKit _DPSNextEvent
12 CFRelease -1 6 00:00.775.691 AppKit _DPSNextEvent
13 CFRelease -1 5 00:00.775.693 AppKit _DPSNextEvent
6 CFRetain +1 6 00:00.768.177 AppKit _DPSNextEvent
7 CFRetain +1 7 00:00.768.179 AppKit _DPSNextEvent
Retain/Release (2) 00:00.768.184 Foundation __NSFireTimer
8 Retain +1 8 00:00.768.184 Foundation __NSFireTimer
9 Release -1 7 00:00.775.681 Foundation __NSFireTimer
10 CFRetain +1 8 00:00.775.682 AppKit _DPSNextEvent
14 CFRelease -1 4 00:00.775.701 AppKit _DPSNextEvent
15 CFRelease -1 3 00:00.775.709 AppKit _DPSNextEvent
16 CFRelease -1 2 00:00.775.711 AppKit _DPSNextEvent
17 CFRelease -1 1 00:00.775.713 AppKit _DPSNextEvent
It seems like when I call -setNeedsDisplay:YES the system is spawning a timer to do something later on and when those calls come in too fast, that timer is leaked.
Any idea what I could do about that?
(I tried calling -setNeedsDisplay:YES only if -needsDisplay is NO which didn't help.)
Is there a way I can draw as fast as possible without triggering this problem?
Andreas
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden