Curious, Alex, what does this memoryFootprint function show that running ‘footprint’ or ‘heap’ in Terminal doesn’t?
—Rob > On Apr 30, 2023, at 8:12 AM, Alex Zavatone via Cocoa-dev > <cocoa-dev@lists.apple.com> wrote: > > Memory used query method for iOS. > > https://stackoverflow.com/a/57315975/1058199 > > // Created by Alex Zavatone on 8/1/19. > // > > class Memory: NSObject { > > // From Quinn the Eskimo at Apple. > // https://forums.developer.apple.com/thread/105088#357415 > > class func memoryFootprint() -> Float? { > // The `TASK_VM_INFO_COUNT` and `TASK_VM_INFO_REV1_COUNT` macros are > too > // complex for the Swift C importer, so we have to define them > ourselves. > let TASK_VM_INFO_COUNT = > mach_msg_type_number_t(MemoryLayout<task_vm_info_data_t>.size / > MemoryLayout<integer_t>.size) > let TASK_VM_INFO_REV1_COUNT = > mach_msg_type_number_t(MemoryLayout.offset(of: > \task_vm_info_data_t.min_address)! / MemoryLayout<integer_t>.size) > var info = task_vm_info_data_t() > var count = TASK_VM_INFO_COUNT > let kr = withUnsafeMutablePointer(to: &info) { infoPtr in > infoPtr.withMemoryRebound(to: integer_t.self, capacity: > Int(count)) { intPtr in > task_info(mach_task_self_, task_flavor_t(TASK_VM_INFO), > intPtr, &count) > } > } > guard > kr == KERN_SUCCESS, > count >= TASK_VM_INFO_REV1_COUNT > else { return nil } > > let usedBytes = Float(info.phys_footprint) > return usedBytes > } > > class func formattedMemoryFootprint() -> String > { > let usedBytes: UInt64? = UInt64(self.memoryFootprint() ?? 0) > let usedMB = Double(usedBytes ?? 0) / 1024 / 1024 > let usedMBAsString: String = "\(usedMB)MB" > return usedMBAsString > } > } > Enjoy > > > >> On Apr 30, 2023, at 9:05 AM, Alex Zavatone <z...@mac.com> wrote: >> >> Use the memory graph debugger, not Instruments. >> >> I also have a method published on StackOverflow that lets you check on and >> print out the amount of memory used. It is for iOS. >> >> As for abandoned memory, that also could be the case. An object in memory >> with no pointer to it. >> >> If you want, we could do a video meeting and I could guide you through it. >> >> Will reply with the memory querying function. >> >> Cheers, >> Alex Zavatone >> >> Sent from my iPhone >> >>> On Apr 29, 2023, at 11:15 PM, Rob Petrovec via Cocoa-dev >>> <cocoa-dev@lists.apple.com> wrote: >>> >>> This sounds like Abandoned Memory, not a leak. Abandoned memory is a >>> retain cycle somewhere. Best/easiest way to find those is with a memgraph. >>> Click the little sideways V icon in Xcode’s debugger when the problem is >>> reproducing. >>> <PastedGraphic-1.png> >>> >>> >>> Or run ‘leaks MyApp --outputGraph ~’ in Terminal when the problem is >>> reproducing and open the resulting .memgraph file in your home directory. >>> Bonus points is enabling MallocStackLogging in the Xcode Project -> Edit >>> Scheme -> Run -> Diagnostics and check Malloc Stack Logging and switch to >>> All Allocations And Free History. This will show backtraces for where an >>> object is created in the memgraph and other useful info. >>> >>> Leaks show up as little yellow caution signs and abandoned memory sometimes >>> have purple caution signs. Either way, look for an abnormally high number >>> of objects and see if they point back to your image. Thats likely where >>> your memory is being consumed. >>> >>>> CGImageSourceCreateWithURL() for loading, CALayer for displaying. >>> Just a thought since you didn’t mention it: are you releasing the >>> CGImageSource object too? >>> >>> Good luck. >>> >>> —Rob >>> >>> >>>> On Apr 29, 2023, at 4:07 PM, Gabriel Zachmann via Cocoa-dev >>>> <cocoa-dev@lists.apple.com> wrote: >>>> >>>> I have an app that is basically a slide show. >>>> Basically, it loads one image after another, displays it, then frees up >>>> its memory. >>>> When I test it with my image collection of 100k+ images, everything is >>>> fine. >>>> >>>> However, one user sent me a photo (JPG) that makes my app use up more and >>>> more memory. >>>> I can see it in Activity Monitor and in Xcode's Memory Report View. >>>> After a minute, my app uses 5 GB of main memory, after that, the growth >>>> rate slows down a bit, >>>> but it keeps growing without bounds, until, eventually, it crashes, of >>>> course. >>>> >>>> However, when I try to check for memory leaks using >>>> XCode/Instruments/Leaks, it says there are none! >>>> >>>> Is it possible there is a memory leak in Apple's frameworks? >>>> >>>> If you are interested, you can find the image here: >>>> https://owncloud.informatik.uni-bremen.de/index.php/s/BbBJcjMSTm9enwW >>>> It's just 5 MB, and I can't see any issue with it. >>>> The uncompressed image in-memory maybe takes up 100MB. >>>> >>>> The frameworks/methods I use are the usual: >>>> CGImageSourceCreateWithURL() for loading, CALayer for displaying. >>>> >>>> I assign the image like this: >>>> >>>> CALayer * imgLayer = [CALayer layer]; >>>> imgLayer.contents = (__bridge id)(imageRef); >>>> >>>> where imageRef is of type CGImageRef. >>>> I also release my images later with CGImageRelease(). >>>> >>>> I am a stymied. >>>> Any hints/suggestions will be highly appreciated. >>>> >>>> Gab. >>>> >>>> >>>> >>>> _______________________________________________ >>>> >>>> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) >>>> >>>> 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: >>>> https://lists.apple.com/mailman/options/cocoa-dev/petrock%40mac.com >>>> >>>> This email sent to petr...@mac.com >>> >>> _______________________________________________ >>> >>> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) >>> >>> 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: >>> https://lists.apple.com/mailman/options/cocoa-dev/zav%40mac.com >>> >>> This email sent to z...@mac.com >> > > _______________________________________________ > > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) > > 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: > https://lists.apple.com/mailman/options/cocoa-dev/petrock%40mac.com > > This email sent to petr...@mac.com _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com