Arrays that grow without limit are always bad, because your computer resources do have limits. 😄
Not only are you building an array in the main VI, you also, with each iteration (!), built multiple arrays from scratch to the final big size in the subVI. Every time the subVI executes. A memory allocation nightmare!
I don't fully uderstand your code. For example, why are you sending what seems to be [x,y] data to a waveform graph? Shouldn't that be an xy graph?
Also the way you are packaging your data "arrays of clusters containing arrays of clusters" seems a bit convoluted. Your subVI seems to reanayze the entire built-up array from scratch with each iteration, basically repeating the same analysis for the vast majority of the time. It would make more sense to only analyze the new data as it comes. In this particular case, you could eliminate the shift register in the main VI completely and only send the new data to the subVI ( and design the subVI similar to a LV2 style global). There are many other possibilities.
I would vote for a complete redesign of the code. 😉
What exactly are you trying to do? Do you have an image of how the graph is supposed to look like? What is the upper limit on the amount of data? Maybe you can stream it to disk and only keep the last few thousand points in memory?