Pass reference rather than copy of data between components

I need to optimize for performance and to edit a large volume of data per time step. This is possible within a single node quite easily. However, I think Grasshopper passes a copy of all data between nodes. I am looking for two things.

1] Work arounds to pass a data reference from another node rather than a copy

2] Documentation on how grasshopper manages memory. To be more explicit, I don’t know whether the output data is a copy to a new list or access to the internal variable. I think it is the former, and, if so, I am hoping there is some workaround.

Thank you.

sorry - should have clarified, I am writing in C# and visual studio.