What I tested was if it matched the Xcode memory pie chart across several apps.
I can’t remember what results I got with terminal leaks or heap commands. Add it to one of your programs and give it a shot! Now I’m interested. Cheers, Alex Zavatone > On Apr 30, 2023, at 1:33 PM, Rob Petrovec <petr...@mac.com> wrote: > > 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