Jump to content

beefly

Members
  • Posts

    4
  • Joined

  • Last visited

Posts posted by beefly

  1. It's good news that NI paid attention to this problem. Waiting for the result.

     

    Running the VI 5 times (I am always referring to the VI in the mode when it produces an array of strings) just uses a good amount of memory that you will not get back - but just can reuse by further calls to these reentrant instances.  So you cannot run another 5 instances of this VI in LabVIEW 32-bit - or do any other very memory consuming task that would have fit into memory before executing these reentrant VIs. Oops!

     

    I'm completely agree with you and it's obvious, that if you open hundred different copies of reentrant VI, the allocated memory will be one hundred times greater than for a single call, and physical memory can easily finish. However, in a previous post I just wanted to say that one copy of reentrant VI also reuses its memory after closing. Sorry for my english...
  2. Glad that smb (guentermueller) agreed with me.

    But there is a note: it was verified that reentrant VIs use the same memory. Can run SubVI five times, then close the references of subVIs, then run another 5 times and you will see that more memory will not allocate...
    The problem is uncontrol of the process to free memory. In case of multi-tasking operating system the deallocation of unused memory is very important in any case. It's not just about how to live with it and how to get around this, but why there is such a difference in behavior in the case of one-dimensional and multi-dimensional arrays. I remind that memory will be never released. I understand that the lack of memory is easier to solve with it increases. But deallocation occurs in different ways, which should not be, I think. Deallocation should follow the same scenario.
  3. Hi everyone, thanks for the replies.

     

    It is worth to note that the problem is not incorrectly using the Request Deallocation, and generally is not in this function. Even the subVI is run through the reference (see attachment), and then stoped and the reference is being closed in the main program, the memory is not released for any, any multidimensional array (it may be a 1d array of strings or 2d array of numbers)! It should be said that LabVIEW reuses this memory, but the  resources are not returned to the system. By the way in LabVIEW 2013 this problem remained. If this "feature" are known from the earliest versions LabVIEW, then why it is not in the official list of bugs? I understand, to leave this problem out, it is necessary either to avoide using any complex arrays (above 1st order) or work with multidimensional arrays in a separate executable.

    main_reference.vi

    memoryusage_reference.vi

  4. Hello!
    It was found that the function Request Deallocation does not free memory after using an array of strings (or any other multi-dimensional array).
    Description of the experiment:
    There is a VI from which subVI is called by command. In the subVI only one-dimensional array (numbers or strings) generated. If the array element type is number (I32), then allocated memory is released (using the function Request Deallocation). If the array element type is string (or any other multi-dimensional array), the memory will not be released. Anyone faced this problem? If yes, what should we do?
    Excuse for bad english.

    main.vi

    memoryusage.vi

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.