Ich habe gelernt, dass Klassenfelder im Heap gespeichert werden, aber wo werden Methoden gespeichert? Im Heap oder irgendwo anders? Sind sie inline?
Antworten
Zu viele Anzeigen?Die Methoden werden an anderer Stelle im Speicher abgelegt. Beachten Sie, dass Methoden pro Klasse und nicht pro Instanz gespeichert werden. Daher ändert sich die Anzahl der Methoden während der Laufzeit eines Programms normalerweise nicht (es gibt Ausnahmen). In traditionellen Modellen wird der Ort, an dem sich die Methoden befinden, als "Codesegment" bezeichnet. In .net ist es schwieriger: Die Methoden befinden sich ursprünglich in der Assembly und werden in den Prozessspeicher eingeblendet. Dort erstellt der Just-in-Time-Compiler eine zweite Kopie einiger Methoden im nativen Code; diese Kopie wird ausgeführt. Der JIT-Code kann während der Laufzeit mehrmals erstellt und gelöscht werden, so dass es praktisch ist, ihn auch als "im Heap" lebend zu betrachten.