I have a standalone application (Labview version 12) that is processing very large chunks of data. Each batch run can take hours to complete. I am storing all intermediate data in files to avoid running out of memory but still I am having occasional issues of running out of memory. I never have an error on the first batch, only on the 2nd or 3rd. I am experimenting with using the request deallocation function at the end of each batch but I am not clear on how/when it takes affect.
There are 2 sub VIs that do all the work so I have placed the request deallocation in these with a boolean input to be true the last time it is called. After the last call, the main application is idle waiting for the user to request another batch so this seems like the logical time to deallocate. These subs are configured as shared clone reentrant. They also have subs 2-3 levels deep. How does the request for deallocation take effect for reentrant VIs? Are all clones deallocated or just one? What about VIs called within a deallocated sub? Are they included in the garbage collection or does each sub VI called have to be deallocated seperatly?