goobimama said:
Well, take for example, a software "Adobe Acrobat Professional 8". Its a 700MB+ 'app'. And when launched it uses just 70MB of real memory (300MB of Virtual memory, but virtual memory is always used in excess on OS X)...
Now I don't know if it is because I m running hackintosh, but the apps start very slow here. Once I quit them & restart them they still start slow.
If I close them, & restart them, they open instantly cos they are already in memory.
Vista is doing the same, but the apps which I quit or close still stay in memory so that if I run them again they start instantly (superfetch).
IF some other app asks for memory, the old memory is released & given to the new app.
In your case goobi...the app is using 70 MB . Thats for what it is showing in your screen right now, more like the RAM taken by the stuff in frame buffer. But rest of the app is loaded in the memory too.
Just to tell u, I am running a fully functional Mac OS X 10.4.9 kernel. So the memory management is same as what u get on your iMac running Mac OS X 10.4.9.
On top of that I have 10.4.10 kext & update installed. Now, even if I say that there is memory leak, it is still Mac OS X 10.4.9 atleast
In Mac OS X, there are only 2 ways to make an application.app, either XCode or JAVA.
In case of XCode, when u make an application & package it, it saves as a single folder by the name.app format in which there are application resources, binaries & runtime files.
Suppose I have another application made, when packing it also bundles the resources, binaries & runtime files for that application.
This result in 2 two big applications. When you start them, they are loaded completely in RAM+Virtual Memory.
In Windows, things are different. You make an application using any programming language & IDE be with .net, C, Delphi or VB or JAVA.
When you package & compile an application, you package the resources, exe & dll files. If it is made in .net then there is only one shared runtime called “The .net 2.0/3.0 runtime”
When you start an application, only the exe & the helper dll is loaded in RAM with rest of the part staying untouched in HD. Why should the exe load it if it is not needed? If it is required the exe will load it.
A DLL can dynamically load any other dll, do its work & then remove it or keep the 2nd dll in memory.
Which method is more efficient? Its logical to understand.
I don’t know about Linux part so Linux user plz do not come here & say Mac OS X is based on Linux/UNIX so it is efficient. The package management of Mac OS X is not as same as Linux.