thundering1 opened this issue on Jan 12, 2006 ยท 15 posts
thundering1 posted Thu, 12 January 2006 at 7:09 AM
I've heard this mentioned numerous time, and not being a programmer or tech-heavy guy (I'm just a photographer and filmmaker having fun with 3D here) I can't figure out what Memory Leaks are that folks are complaining about with Vue. I've got Vue5Inf and I don't notice any problems, really. I can't tell if there's any problem with my RAM in Vue's operation. Could someone please explain "memory leaks" to me? And I really don't want this to turn into a bashing session on Vue - I just wanna know what that term means. Thanks in advance- -Lew ;-)
wabe posted Thu, 12 January 2006 at 7:47 AM
"memory leak" Imagine your computer Ram of a specific size. Now each application plus the operating system takes a part of that. Any active application, in our case Vue, now use for specific operations (rendering for example, or importing Poser stuff etc) more Ram and takes it from the still free part of your computer Ram. If the operation is done, the needed extra Ram normally is given back to the "free part" again. If this is not the case and the application is not giving that back properly, slowly the free Ram is running out. When this is the case and there is no more free Ram left over but needed, you will get an "out of memory" error. Unfortunately this is depending on a lot of system specific items as well. I always say in this context, that my operating system Windows 2000 never showed such an out of memory (oom) error, even when the system has only 256 MB or Ram while a lot here with Windows XP have that problem heavily. This maybe has to do with the way the operating system deals with so called paging - a method to "save" actually not used application "parts" that block Ram to a slower medium, your hard disk for example, temporarily. BTW, you can see how the system deals with memory when you open the task monitor and select the memory use there. If you are clever, you maybe find some operations that cause the leak in Vue. That would be cool.
One day your ship comes in - but you're at the airport.
thundering1 posted Thu, 12 January 2006 at 8:21 AM
Thank you! That clears up a lot! I'll check the Task Manager while in Vue to see how it's going, see if I can find anything that causes a slowdown or aything. Thanks again- -Lew ;-)
wabe posted Thu, 12 January 2006 at 8:46 AM
The tricky thing is, that those things are incredible dependant what is going on on a system in parallel. What other applications are running - virus protection, Internet browser, chat messenger, etc etc ? What drivers are installed and active on a system? Wacom tablets, printers, and and and... What has happened before Vue is started. Have the other applications that run before freed the Ram properly again? Even what sort of Ram modules are used and/or what temperature has your processor when Vue is running. All COULD influence the behavior. Could but must not. So it is ultra difficult to find issues if there are some. A good method might be always to create "defined" situation first when you want to look for such a leak. For example a restart of the computer, always the same applications running in parallel - ideal would be no other is running. Then the chance to find a reproducable problem is biggest. Always keep in mind reporting a problem to any company (not only E-on) is like going to a doctor. If you tell the doctor only "ouch" the chance that they will find the problem is relatively small. If you can say, it is my left toe and there the region under the nail and when you press there it hurts here the chance to heal the problem is much bigger.
One day your ship comes in - but you're at the airport.
thundering1 posted Thu, 12 January 2006 at 10:12 AM
Well, I shut down all programs before running Vue - or XSI or C4D - sometimes I'll leave my mail open when in PS, but Bridge is such a memory-hog I am shutting mail down more and more because it slows things down so much. I know I can have several apps open at once, my wife does it all the time, but I just want to give my computer a chance to handle what I'm doing with the most resources I can give it. Right now, so far, I can't say I've had any problems with "memory leaks" in Vue - haven't gotten the "out of memory" except once when I wanted to render something obnoxiously big (I think I set it to 6,000x10,000ppi) just to see if it can do it - I only have 1GB of RAM, so I knew I was about to make it upset at me. So far, despite many complaints I've read about, my experience with Vue has been great - it does everything I expected of it. But given that I have XSI, C4D, and access to 3DS Max6, I don't expect that much from it. Just to put everything together in a scene that I create in the above mentioned, texture them (just basic textures - anything really custom I'd do in, again, above mentioned), light them, maybe the occasional ecosystem, and render. I just didn't think to check the Task Manager to see how everything's going. I also just had no idea what that particular compaint meant as it never seemed to happen to me - and yet they claim the software ALWAYS does it, and it's a nightmare to deal with. (confused look on face) Basically, I didn't get it... Thanks again- -Lew ;-)
bruno021 posted Thu, 12 January 2006 at 12:23 PM
I must say that I never had such problems before the 5.09 update. Now I'm getting the infamous OOM as soon as I move an object to another layer. I reported to e-on and they asked me to see how things work in compatibility mode. Will try that, and guys, do the same and report the results.
war2 posted Thu, 12 January 2006 at 12:47 PM
as for 5.09 that is a beta build and stuff will always happen when using a beta, unless being lucky :) Anyway, as bruno021 said, always report all your issues regardless of it being a beta build or official non beta, it always helps the developer and thus in the longrun yourself :)
Phantast posted Mon, 16 January 2006 at 4:47 AM
It's hard to know if one doesn't have the problem or whether the leak is just running so slowly it doesn't crash Vue before you exit. A good guide is the system resources figure in the options panel. Before I had crashes, I never looked at this. Maybe it was starting at 60% and leaching away so gradually I never saw that it was down to 30% by the time I was done. With some recent files I've been working on, it starts at 30% and loses 5% per operation, even if that's only shifting the camera.
dburdick posted Mon, 16 January 2006 at 10:52 AM
Memory Leaks are caused by programs not freeing up or cleaning up unused memory in its own program space. It is not dependent on other programs or tasks running (unless you have a virus or some sort of special memeory management tool running). After a while, the offending leak or leaks consume more memory than the progam address space of the operating system allows (in the case of windows this number is 2GB). The most common area where leaks occur are in graphics intensive programs such as Vue which employ GDI objects (graphics objects in memory). Not releasing GDI objects properly is the equivalent of cholesterol forming in one's arteries. With respect to Vue, the leak issue in general has subsided but still remains in certain use cases. I notice leaks in Vue in three cases: when populating and re-poupulating ecosystems, after doing a bunch of preview test renders and when moving objects around to different layers. In all three of these cases, I notice that the GDI handle count continues to grow unchecked which means that Vue is not releasing the GDI object memory of old GDI objects properly. As Bruno said, when you come across these leaks, it's best to report them to e-on. They've been pretty responsive on fixing these things from release to release but it's best to remain vigilant.
bruno021 posted Mon, 16 January 2006 at 12:57 PM
Dave, it's exactly what's happenning to me: When moving an object to another layer, or when hitting the undo button, the available memory falls down to zero. Tom Thir from Tech support suggested to clear ecosystems before doing such operations when you know memory is getting low, and repopulate afterwards. I'll check if it works on a particular scene that gives me problems, but it's not a very nice workaround, since you never know if your eco will look the same after repopulating.
thundering1 posted Mon, 16 January 2006 at 1:33 PM
So, given that this is such a headache for many folks, is there a workaround? Like, in XSI you can "Freeze" an object or scene - it dumps everything you've done up until that moment - you'd better REALLY be sure! Is there any manual way to "dump" your history - or whatever it is that's causing the holdup or leak? Dump your history (like all your test renders as an example) before you hit "render" to free up as much resources as possible?
dburdick posted Mon, 16 January 2006 at 3:10 PM
Bruno, as I suspected the leak during operations involving undo, ecosystems and moving objects around various layers are all probably inter-related with the primary culprit being the "undo" system. I suspect that e-on has implemented the undo system by keeping around multiple instances of the GDI objects (e.g. the graphical representation of the objects in the scene) so that it can quickly re-create the scene during an undo operation without having to rebuild the GDI object hierarchy. Which explains why Tom's idea would work since clearing ecosystems would clear all their representative GDI objects. So essentially, the leak isn't really a leak but more of a GDI overload in order to preserve faster display refresh following undo operations. The best workaround for this is to save your scene - quit Vue - resart and reload. This clears out the GDI stack and replaces it with a fresh one with no undo instances lying around. The ultimate solution for this would be for e-on to devise a new undo system which would rebuild the GDI object list rather than revert to old instances lying around. This would obviously be slower but would eliminate the GDI overloading situations.
Phantast posted Tue, 17 January 2006 at 5:02 AM
I have bad leaks without ecosystems or moving between layers (or even doing test renders). It may be the use of large imported Poser files in my case. I have the undo system set to the minimum (1). Quitting and restarting Vue is the way round it, but it is tedious in the extreme to have to do this very frequently (like every ten operations in some cases). There is definitely less of a leak when working in reduced wireframe, but the visualization is so sketchy it's hard to see what one is doing.
dueyftw posted Thu, 19 January 2006 at 2:28 AM
Memory leaks are caused by poor programming. In real simple terms, you ask for a variable to get as much memory as it needs. The operating system might step in if it is asking for more ram than the computer has. Then the OS will but some of it on the hard drive. When the function is done you tell the operating system that your are done and please clean up everything. Not done right you can leave a place holder for that variable. Every time the function or that part of the program runs it put aside a small amount of memory that no program can use. Programs that are poorly written in C or C++ can have them because they are compiled languages. Python on the other hand is interpreted . The language handles all of this work. Is it possible for a Python program to have a memory leak? Sure, as much as my pinto flying. But I could drive it off a cliff.
I have looked under the hood of Vue and find that some of the files use a C or C++ headers. Is Vue a mix of Python and C++? I don't know with out seeing the source code.
If GDI objects was causing the problem then they should go away when you restrict Vue to havening only one or two undoes.
Dale
Message edited on: 01/19/2006 02:29
Message edited on: 01/19/2006 02:35
bruno021 posted Fri, 20 January 2006 at 11:22 AM
Dave, I tried saving, exiting and reopening Vue with the problem scene, but it was just the same afterwards, I couldn't move objects to another layer. Btw, hitting "flush history" should erase the possible undos from the memory, and therefore should be enough to clear the undo instances you refer to? As I said, it's a a fairly complex scene, and I can't work in wireframes on it. On the other hand, I don't NEED to change layers, it's just that I like to keep my scenes tidy, so I know where things are when I look for them, instead of all objects dropped in layer 1, in ultimate chaos!