i think the problem is coming from Mac OS's memory manage rule.
as u can c in activity monitor, the phyical memory split to 4 parts: wired, active, inactive and free
wired is the base of kernel n applications that cannot be free unless the application quit, n free is unused memory
so, wt's active n inactive mean?
well, in my knowledge of ObjC(the standard programming language in Mac), applications can write memory by allocation
which mean when app excute "alloc 123 in to RAM" n the kernel will write 123 in to RAM(or VM) with it's own format
surely, when app finish all it's operation, 123 is a rubbish, u must delete it by delloc(or named release)
but sometimes the app call lots of libraries n frameworks out of its self
the app need to pass through a lot of value by telling the them where the value stored(the memory phyical address)
the problem is the original app dun know what is the time to delloc(delete) the value after finishing opreation
so developer always use auto release mode to alloc memory
its a memory management rule manage by kernel
when a app alloc a auto release object, developer dun need to delloc(release) it anymore
kernel will choose the best time to delloc it
so that u can c, "active" RAM is meaning amount of in-using auto-release values
oppsitely, "inactive" RAM are also auto-release values, but kernel believes that they can delloc now
n, when the system's phyical RAN is too low, kernel will sd a low memory warning to all running apps
so that it will try to delloc all inactive memory
but there's two problem cuming:
1.kernel always can define "the best time" to free up auto-release values
2.according to some reason, a small part of inactive memory wont be released until the app quit
so after a long time using, some app will eat huge of ram even u close all current file or tabs due to problem 1
n some memory cleaning software can clean a part of memory bcoz they a just simulate kernel's memory low waring
but it (feels) wont free lots of memory n u will c the app(such as safari)'s memory usage are large than it just launch
these problems a in iOS too due to they a using same mach kernel(but different arch)
but i think these problems arent just cause by the rule but the developers
developers(inculde Mac framework/kext developers) loves to use auto release
n it cause a special memory leak(maybe not leak,just waste memory)
so its not a good habit to use auto release if manual alloc n delloc can do same things