Sounds like you are passing a 100MB array to your sub-vi. As soon as you do this, you make a copy of the data. That is, the input variable is not a reference to the array, it is a copy of the array. To understand this more clearly, think about wiring the same array to four or five different sub-vis, each doing something different with the data. In order to have each of the sub-vis work with the original array data, each one must make a copy of the array.
You can limit the number of copies of the array by using global variable (Shh, don't tell anyone that I suggested it.). You can also use control references, i.e. if the value is in a control in the calling vi, you can pass a reference to the control to the sub-vi and get the array values from a property node. Also, you can create your own memory chunk using the "extcode" library memory management functions and a CIN or a DLL. NI suggests using a "functional global" for this purpose. They are usually right. After all they wrote the stuff. Check out this link to the NI site: http://zone.ni.com/devzone/conceptd.nsf/webmain/6A56C174EABA7BBD86256E58005D9712?opendocument
