The problem may be that Clear is not doing what you think it is. Clear simply marks the List as being empty without resizing the internal array that it uses behind the scenes. It will, however, remove all references to the individual BasePopulation instances. So if no other data structure has a reference to them they will be eligible for garbage collection. But, it will not reduce the size of the List directly. I just verified this using ILSpy.
You have two options.
-
Set
Population = null. This will unroot the entire object instance making it eligible for garbage collection. -
Call
TrimExcesson thisList. This will resize the internal array.