Each time around the loop a NEW'myList' variable is created. The scope of myList is bounded by the loop. This list, the way you have it written, will only ever contain a single reference to a an already existing object of type List<
String>, it does not contain a copy of the returned list. As the iteration of the loop ends, just before incrementing 'i', the myList variable is marked as available for garbage collection. This has NO effect on the storage as accessed by getMyList(i,arg). If you have memory issues, myList itself is not the culprit, the storage as supplied by getMyList(i,arg) would be the place to start looking for excessive memory allocation.
P.S. You haven't told us what is inside getMyList(). If getMyList() creates a new list and returns that, well, in that case, when myList is garbage collected then all the storage used by the new list will also be collected as long as the content is not referenced anywhere else.