I have a question about how Rhino manages its memory. I am working on batch grid generation for CFD, generating many meshes sequentially.
To prevent having to keep everything in memory, I run the algorithm as follows.
I have a large set of 3dm files that each contain a different set of surfaces for which a grid must be generated. At every iteration of the algorithm a file is opened, its geometry is read, a grid is generated and written to the file, after which it is closed.
I do find, however, during profiling of this algorithm that the memory footprint of Rhino increases to levels above 2 Gb (by looking in Task Manager to Memory/Private Working Set). Sporadically, however, it suddenly drops to “normal” levels, of let’s say 150 Mb.
My question is: is this expected behavior? Especially the sudden drop? Is that some sort of intermittent memory free operation in Rhino?
Note that I do not refer to .NET memory management. No matter how often I call GC.Collect() the memory footprint is not affected by this. Also, using CLR profiler I find that the .NET part of the memory use is constantly in the order of 100 Mb.