LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

All VIs in Memory returns lots of instances of same VI

Solved!
Go to solution

If your interested, try running the attached example.  Using this Express VI loads a clone of the Express VI into memory, but it is given the name of the caller VI.  Very odd. 

http://www.medicollector.com
0 Kudos
Message 11 of 17
(950 Views)

FWIW, here's my result with LV 2020 64-bit.  Mostly seems more "expected" than what you described, though unsure about the "Instance0" of the non-reentrant top-level vi...

 

Kevin_Price_0-1651240282289.png

 

 

-Kevin P

 

ALERT! LabVIEW's subscription-only policy came to an end (finally!). Unfortunately, pricing favors the captured and committed over new adopters -- so tread carefully.
0 Kudos
Message 12 of 17
(942 Views)

Thanks for confirming this behavior in LV2020.  

 

But I'd like to point out:  That "Instance0 of the non-reentrant top-level vi" is actually not an instance of the top-level VI.  It is an instance of the Express VI.   

 

To me, I find this odd.  Though not a concern, now that I know that it is not actually an instance of my top-level VI.  My concern was that the top-level VI of my QMH application is very large and consumes excess amount of memory (I didn't code it!), and I don't want lots of instances of it in memory.  And the results of "All VIs in Memory" seemed to indicated this was hapenning.  But now I know its just an odd effect of using this Express VI.

http://www.medicollector.com
0 Kudos
Message 13 of 17
(937 Views)

Had it been a subVI i'd assume it was set to Preallocate clones and was used in mutliple locations, but since it's the Main that's strange to say the least. I take it's not used recursively?

G# - Award winning reference based OOP for LV, for free! - Qestit VIPM GitHub

Qestit Systems
Certified-LabVIEW-Developer
0 Kudos
Message 14 of 17
(928 Views)
Solution
Accepted by josborne

Ah, for express VI's that might be normal.

 

Express VIs create an inlined VI that is used during execution, and I do recall those inlined VIs get the name of the caller...

Message 15 of 17
(918 Views)

Let's call this the solution.

 

Even though if I create my own subVI and make it re-entrant and inlined, it still doesn't give it the name of the caller (when getting a list of All VIs in Memory).

http://www.medicollector.com
0 Kudos
Message 16 of 17
(911 Views)

Express VIs are 'special'. 🙄

 

An express VI not only has inlined code, but also stubs to facilitate the user interaction. They are probably more like XNodes than inlined VIs.

 

So express VIs uses inlining as one peace of it's (incomprehensible) puzzle. But an inlined VI isn't an express VI.

 

Apparently express VIs use an additional layering (making them even more incomprehensible).

Message 17 of 17
(892 Views)