Basically it's created in a loop like this
for i := 0 to 99000 do begin
Page = MakePage; // each page is about 200 bytes
SL.Add(Page);
end;
Rounding things up and presuming your estimate of 200 bytes is correct, that's 200 * 100,000 = 20,000,000. That's not even 20MB, barely a drop in the bucket.
As Thaddy above mentioned, it's likely that the problem is elsewhere in the code but shows up when executing that loop.
Here is something you can do to get some idea of what is happening, when you first start your program put a call to SuspendThread (assuming single threaded) to stop your program from executing and, put another call to SuspendThread just before the loop and another just after it, start process hacker (free download, nice utility) and use it to look at your process memory space every time the main thread suspends itself, particularly the heaps but, look at the entire address space (copy paste the process memory map, that will help when comparing), after that you can tell process hacker to resume the thread which will stop just before the loop, look at process memory map again, odds are good, it will already be messed up, for good measure look at the process memory map after executing the loop.
To find out where the problem is happening sprinkle calls to suspendthread in your program (it would be good for you to use a compiler directive to control the inclusion or exclusion of those calls). With judicious placement of calls to SuspendThread, it should only take you a few minutes to figure out the origin of the memory problem.
Once you know where the problem is being created then, a solution is possible.
HTH.