• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Leak when "drawing too fast"
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • Follow-Ups:
    • Re: Leak when "drawing too fast"
      • From: Uli Kusterer <email@hidden>
  • Prev by Date: Re: The cost of using objects rather than plain C variables
  • Next by Date: Re: The cost of using objects rather than plain C variables
  • Previous by thread: Re: Another curiosity: IB warnings "misplaced view"
  • Next by thread: Re: Leak when "drawing too fast"
  • Index(es):
    • Date
    • Thread