33 Stimmen

Wo werden die Methoden im Speicher abgelegt?

Ich habe gelernt, dass Klassenfelder im Heap gespeichert werden, aber wo werden Methoden gespeichert? Im Heap oder irgendwo anders? Sind sie inline?

47voto

Martin v. Löwis Punkte 120025

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.

6voto

sharptooth Punkte 162790

Klassenmethoden werden zusammen mit dem gesamten Code in einem eigenen Segment des Programmspeichers gespeichert, das speziell für die Speicherung von Code vorgesehen ist. Der Code einer jeden Methode wird nur einmal gespeichert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X