• 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
Re: Memory Leak with NSURLRequest?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Memory Leak with NSURLRequest?


  • Subject: Re: Memory Leak with NSURLRequest?
  • From: Jason McInnes <email@hidden>
  • Date: Sat, 15 Nov 2003 16:20:00 -0800 (PST)

Whoops. I think it might be that those NSURLRequests
are cached...

Sorry.

jason

--- Jason McInnes <email@hidden> wrote:
> I'm writing a batch application that makes repeated
> calls to the USPS website using the following method
> calls:
>
> ***snip***
> request = [NSMutableURLRequest
> requestWithURL:aURL
>
> cachePolicy:NSURLRequestUseProtocolCachePolicy
>
> timeoutInterval:60.0];
>
> ***snip***
>
> receivedData = [NSURLConnection
> sendSynchronousRequest:request
>
> returningResponse:&aResponse
>
> error:&aError];
>
>
> I was examining memory allocation in ObjectAlloc and
> discovered (to my dismay) that I had URLRequests
> that
> had not been deallocated. The requests corresponded
> to
> the requests that I had posted.
>
> Each had:
> AllocationEvent
> ObjectRetainedEvent
> ObjectReleasedEvent
> ObjectRetainedEvent
> ObjectReleasedEvent
>
> Other interesting observations:
>
> - I tested with just 5 requests. According to
> ObjectAlloc, there were 15 NSURLRequests total.
> - 10 of the NSURL Requests were freed.
> - 5 of the freed NSURLRequests had:
> AllocationEvent
> ObjectRetainedEvent
> ObjectReleasedEvent
> ObjectReleasedEvent
> FreeEvent
> - 5 of the freed NSURLRequests had:
> AllocationEvent
> ObjectReleasedEvent
> FreeEvent
> - the event inspector information for the remaining
> allocated Requests:
>
> Event: (#367979) AllocationEvent
> Time Index: 90628504.409750
> Category: NSURLRequest
> Pointer: 0x2e949d0 Size: 14
> Thread: 0x6d0b Extra Data: 0x0
> Backtrace:
> object_getIndexedIvars
> NSAllocateObject
> -[NSMutableURLRequest copyWithZone:]
> -[NSURLConnection initWithRequest:delegate:]
> -[NSSynchronousURLConnectionDelegate run:]
> forkThreadForFunction
> start
>
>
> Event: (#368572) ObjectRetainedEvent
> Time Index: 90628504.413922
> Category: NSURLRequest
> Pointer: 0x2e949d0 Size: 14
> Thread: 0x3c03 Extra Data: 0x2
> Backtrace:
> NSIncrementExtraRefCount
> -[NSObject retain]
> -[NSURLProtocol
> initWithRequest:cachedResponse:client:]
> -[NSHTTPURLProtocol
> initWithRequest:cachedResponse:client:]
> -[NSSimpleHTTPURLProtocol
> initWithRequest:cachedResponse:client:]
> -[NSURLConnection(NSURLConnectionInternal)
> _beginLoad]
> _loadBegin
> __CFRunLoopDoSources0
> __CFRunLoopRun
> CFRunLoopRunSpecific
> -[NSRunLoop runMode:beforeDate:]
> -[NSRunLoop run]
> +[NSURLConnection(NSURLConnectionInternal)
> _resourceLoadLoop:]
> forkThreadForFunction
> start
>
> Event: (#397120) ObjectReleasedEvent
> Time Index: 90628505.315979
> Category: NSURLRequest
> Pointer: 0x2e949d0 Size: 14
> Thread: 0x3c03 Extra Data: 0x2
> Backtrace:
> NSDecrementExtraRefCountWasZero
> -[NSObject release]
> -[NSURLProtocolInternal dealloc]
> -[NSURLProtocol dealloc]
> -[NSHTTPURLProtocol dealloc]
> -[NSSimpleHTTPURLProtocol dealloc]
> NSPopAutoreleasePool
> -[NSRunLoop runMode:beforeDate:]
> -[NSRunLoop run]
> +[NSURLConnection(NSURLConnectionInternal)
> _resourceLoadLoop:]
> forkThreadForFunction
> start
>
> Event: (#397216) ObjectRetainedEvent
> Time Index: 90628505.317249
> Category: NSURLRequest
> Pointer: 0x2e949d0 Size: 14
> Thread: 0x6d0b Extra Data: 0x2
> Backtrace:
> NSIncrementExtraRefCount
> -[NSObject retain]
> -[NSURLCacheNode
> initWithCachedResponse:request:key:]
> -[NSURLCache storeCachedResponse:forRequest:]
> -[NSURLConnection(NSURLConnectionInternal)
> _sendCallbacks]
> -[NSArray makeObjectsPerformSelector:withObject:]
> _sendCallbacks
> __CFRunLoopDoSources0
> __CFRunLoopRun
> CFRunLoopRunSpecific
> CFRunLoopRun
> -[NSSynchronousURLConnectionDelegate run:]
> forkThreadForFunction
> start
>
>
> Event: (#417824) ObjectReleasedEvent
> Time Index: 90628505.990522
> Category: NSURLRequest
> Pointer: 0x2e949d0 Size: 14
> Thread: 0x603 Extra Data: 0x2
> Backtrace:
> NSDecrementExtraRefCountWasZero
> -[NSObject release]
> -[NSURLConnectionInternal dealloc]
> -[NSURLConnection dealloc]
> -[NSSynchronousURLConnectionDelegate dealloc]
> NSPopAutoreleasePool
> +[PFConversionDBManager
> preprocessPFAddressesCount:]
> -[PFirstConversionWindowController
> dbPreprocessPFClinicAddresses:]
> -[NSApplication sendAction:to:from:]
> -[NSControl sendAction:to:]
> -[NSCell _sendActionFrom:]
> -[NSCell trackMouse:inRect:ofView:untilMouseUp:]
> -[NSButtonCell
> trackMouse:inRect:ofView:untilMouseUp:]
> -[NSControl mouseDown:]
> -[NSWindow sendEvent:]
> -[WebNSWindow sendEvent:]
> -[NSApplication sendEvent:]
> -[NSApplication run]
> NSApplicationMain
> main
> _start
> start
>
>
> I'm sure it has something to do with threads
> (YIKES!).
> I tried manually releasing the originally allocated
> NSURLRequest, but my app crashed. Then I tried
> autoreleasing it with the same result.
>
> The method that makes use of the NSURLRequest is in
> a
> while loop where each iteration through the loop has
> its own NSAutoreleasePool. The last Release event of
> the leaking NSURLRequests is due to the release of
> this NSAutoreleasePool.
>
> Is there something I am supposed to be doing here
> because of the threads that are spawned by
> sendSynchronousRequest? On the surface it looks like
> I
> am within my rights to expect the NSURLRequest to be
> properly autoreleased by the class method that gives
> it to me (although I also noticed that in the event
> list there is no autoreleased event...).
>
> What am I missing?
>
> jason
>
>
>
>
=== message truncated ===

=====
Jason McInnes
2 Degrees
Cell: 206.849.3680
Email: email@hidden

__________________________________
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
http://antispam.yahoo.com/whatsnewfree
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.

References: 
 >Memory Leak with NSURLRequest? (From: Jason McInnes <email@hidden>)

  • Prev by Date: Re: Search Hard Drive
  • Next by Date: Re: [newbie] Drawing a 2D graph
  • Previous by thread: Memory Leak with NSURLRequest?
  • Next by thread: [newbie] Drawing a 2D graph
  • Index(es):
    • Date
    • Thread