Der Inline-Compiler (also der innerhalb der
IDE) teilt sich mit der
IDE deren Speichermanager.
Ja, und zwar den "virtuellen" Speichermanager von Windows (VirtualAlloc). Der Compiler ruft gerade nicht den (FastMM) Speichermanager auf, sondern besorgt sich den Speicher über VirtualAlloc, den er nie mehr zurückgibt. Das kann man ganz gut beobachten, wenn man eine Projektgruppe mit mehreren Projekten hat und diese von oben ab kompilieren lässt. Der Speicherverbrauch (committed pages) steigt immens an. Und nach dem Kompilieren und sogar nach dem Schließen der Projektgruppe bleibt der Speicher verbraucht. Der Compiler nutzt den selbst-alloziierten Speicher intern wieder, aber die
IDE kann den nicht nutzen, da FastMM nichts von den reservierten Pages weiß.
Bei Delphi XE hat sich dahingehend was geändert, dass beim Schließen der Projektgruppe nun ein großer Teil des "Compiler-Speichers" freigegeben wird. Zumindest sieht es danach aus.