MartinW opened this issue on Oct 27, 2006 · 26 posts
kawecki posted Sat, 28 October 2006 at 12:12 AM
"Exception 2. The malloc() / free() stuff works well as long as it is mainly stack-based (ie, on a last-in, first-out basis). But Poser tends to hang onto stuff that is no longer needed (for faster re-use, should it be asked for). Also, I am fully aware that the free() function will combine adjascent free areas. But it doesn't take too many large textures to be loaded/removed to get memory fragmentation - the memory is still there, but scattered around. And textures need contiguuous space.... so Poser ends up with no single area large enough to hold the texture..."
The memory management is not done by Poser, Vue, Maya, Photoshop and whatever application.
Memory management is done by the Operational System (Windows, Linux, OSX, etc)
Nobody writes a memory management for a program, unless you are someone rare that wants to make your own accesing the root kit and CPU core, and better do it in Assembler and not in C.
When you need memory the program make a request to the Operational System by means of malloc() or Kernel variants and when you don't need more this memory you issue a free() request to the OS.
The OS is responsable for keeping the memory unfragmented and all memory tasks, and Windows is very bad in administrating the memory. Windows was bad in 3.11, continue bad in 95, the same in 98, is in XP and will be in Vista, nothing changed, the problems still are the same and never were resolved.
The only thing wrong that programmers do with memory is that they often forget the free the memory that is not needed anymore and when the program exit. If the program doesn't free the memory, when you exit this application your computer will have less available memory, starting again this program it will allocate more new memory and when you exit the program again you have even less memory for your computer.
Multiply this by the number of other programs that have the same errors, then multiply by the number of times you used this programs and you will have after some hours of work that your computer has no more memory, so it crash and you need to restart your computer.
A healthy practice is to restart the computer after some hours of work so it always will have all the memory available.
All this programmer error would be not so dramatic for a well written OS, every time a program ends the OS should release all the memory used by the program, but Windows don't do this, if the memory used is not freed by the program when it exits, the memory continue to be allocated to a program that doesn't exist anymore.
Poser 4 is not bad, is acceptable and only time to time let your computer without memory, but 3DSMax 2.5 was dramatic!!!!
The problem with Poser is that it use too much memory, who knows why, I cannot find any reason for this.
The second problem with Poser is that every texture you load Poser allocates memory for it, if you load a lot of textures, the textures are big or huge the result will be a lot of memory used.
Until now this is normal, if your scene uses a lot of big textures you will need a lot of memory.
The problen is when your scene has not too much textures, or maybe only few ones and you runout of memory.
The problem is, as I said before, that every time you load a texture memory is allocated for it, when you are creating a scene, even a simple scene with only one texture, you load many textures to see which one is better, you try different backgrounds, etc.
Your scene use only one texture, but you have experimented 50 textures until you found what you needed, now you have 50 textures in memory and not only one!
The only workaround for this, is once you found the texture, save your scene and close Poser.
Then open Poser again, load the scene and now you will have only one texture in memory and not 50!
The easy solution for this problem would be a simple buttom or menu in Poser "free unused textures", something simple to be done, but never was done.
Poser 7 will have??????......., maybe not..........
Stupidity also evolves!