Rhino 5 is "hogging" memory. It appears that some commands such as Contour and Project do not release memory upon completion. The result is the the amount of memory used by Rhino keeps increasing. The result can be a computer which is has no available memory. I'm running Rhino 5 on PC with 16GB RAM and Windows 7 64 bit. The version of Rhino is 5.1.30129.1756 1/29/2013
The current file I'm working with contains 16 very large, textured meshes (up to 2 million faces and 1.3 million vertices) which were imported. File size is about 1.3 GB. The meshes are not being altered or moved. Rather I'm creating sections through them using the Contour, Section and Project commands.
The first time I use the Contour command to contour all the meshes together the amount of memory in use after the command finishes increases by about 2.5 GB from what it was before using the Contour command. Using the Contour command again does not result in a further increase in memory in use. The Project command command behaves in a similar manner but the increase of memory in use is about 3.5 GB.
The Section command temporarially uses abour 5 GB of memory but relinquishes it once the command finishes processing.
Clear UnDo has negligable effect on the amount of memory in use.
If I use Save or SaveAs, close Rhino, open Rhino and load the saved file the amount of memory in use is back to where it was when I previously started, except for small increases due to new geometry.
If I use Save or SaveAs, and then open the just saved file without closing the Rhino the amount of memory in use is back to about where it was when I started if I have not used Project. If I have used Project the amount of memory in use drops but is still more than when I started.
What can be done to free the hogged memory having to save the file, close and re-open Rhino, and load the just saved file?
Is this behaviour intentional? If so then an option needs to be added to stop it.
If it is a bug then when can it be fixed?
I am having the same problem when using any imported meshes from my 3D scanner. It maxes out my 16 gb of RAM when the file size is only 16 mb total. The program is unusable for me until this is fixed.
Scott, can you post the file- it sounds like this is a managable file size for us to test with- if you can, please zip and upload it here:
Stick my name in there someplace in the subject or in your note, and I'll find it.
I just uploaded the file. Unfortunately I could not get it to do the memory spike today. But, it is very laggy and it spontaneously crashed. I was trying to figure out if it was related to T-Splines, which I was using at the time, but it was very slow whether I was running Tsplines or not. Items in the scene are very slow to highlight when selected, and pan or rotate delays for a few seconds anytime I select a new object. When I posted the other day, the memory graph in task manager continually rose until it maxed out and gave a memory out message. One time it did it when I left the computer for an hour. I came back and the memory usage had continually climbed while doing nothing.
The same file runs perfectly in 4.0, but tsplines is not installed in that one.
I have a new workstation headed my way in a week, so if this is machine specific I guess I can deal with it, but it is setting me back right now because I need the T-splines.
What I described above is specific to the Contour and Project commands and is repeatable.
After saving the file as Rhino 4.0, and then doing a copy/paste of all the entities in the scene from 4.0 to and empty scene in 5.0, it is working fine. I even tested project and contour on the meshes with no problem. So my issue was not the same as David's and I am okay unless it happens again.
Response from McNeel?
If you're seeing a memory leak(that's the term for what you claim to be seeing though I don't really see it myself from what you describe, contouring million-poly meshes is going to make a gazillion entities and increase memory use a lot no doubt,) you need to send firstname.lastname@example.org a file and instructions on how to repeat it.
The memory leak is dependent on the size of the meshes used by Contour or Project, and independent of whether a "gazillion entities" are created or not.
The memory use increase due to a "gazillion entities" from contouring million-poly meshes is much smaller than the memory use increase I have found.
I did some more systematic testing today.
The first time the Contour command is used with a mesh or several meshes, the amount of memory in use after the Contour command finishes executing has increased significantly. The cumulative size of the increase is the same (within a fraction of a percent) whether the contour command is used with each mesh separately or with the meshes together.
The size of the memory use increase is directly related to the size of the mesh.
The memory use increase occurs even when no contours are created due to the choice of start point and spacing for the contours.
The memory in use does not increase (other than needed by any contours created) after the Contour command is used if the Contour command has been used previously with meshes.
After saving the file, restarting Rhino and opening the saved file the memory in use is the same as before using the Contour command other than that due to contours created.
My guess is when a mesh is first used with the Contour command, look-up tables or similar used by the Contour command and specific to that mesh are created in memory. When the Contour command completes these tables are retained in memory and therefore already exist the next time the Contour command is used with that mesh. However these tables are not saved in a .3dm file.
The file that I've been using has 16 meshes and when I open it about 2200 MB of memory use is shown by Rhino. Using Contour with all 16 meshes more than doubles the memory use to about 5000 MB even if no contours are created.
A similar memory increase occurs when the Project command is used with a large mesh (or meshes), even the lines being projected miss the mesh. The increase in memory use due to the Project command is additive with the increase due the Contour command.