Statische Methode Memory Allocation
Wir haben zwei Klassifikationen heap und stack . Wenn ein Objekt erstellt wird, wird Speicher für das Objekt im heap gespeichert ist. Was ist, wenn die Klasse statische Methoden ,die aufgerufen werden kann, mit dem Klassennamen. Wenn das Objekt nicht erstellt, dann wie wird es im Speicher und wenn es funktioniert, wird es im Speicher?
- welche Sprache?
- Und was ist mit diesen zugewiesenen Speicher soll für?
- Es ist klar, aus seinem Kommentar unten, dass es ist Java, also ich habe ein Java-tag.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hängt es von der JVM, aber statische Felder sind in der Regel gespeichert, in ein spezielles Objekt auf dem heap. (Sie können sehen, es in einen heap dump), Wenn der Klassenlader, entladen, seine Klassen und deren statische "Objekte"/Felder sind abgeräumt.
Nur, was andere über die statische "Objekt" ist, können Sie nicht bekommen, einen Hinweis darauf. (Aber Sie können verwenden Sie reflektion, um auf die Felder)
Methoden (d.h., code) nicht in einem Objekt gespeichert; alle Objekte einer Klasse teilen sich den code für eine Methode. Unabhängig von der Sprache (Java, C++ oder irgendwas anderes) gibt es nur eine einzige Kopie der code für alle Methoden, statische oder nicht. In der Regel gibt es einen speziellen Bereich des Speichers, D. H., ein CODE-segment in einer nativen Sprache wie C++, oder eine spezielle heap-Bereich in Java-wo der code geladen wurde.
Random
Objekt. Statische Variablen einer Klasse gespeichert sind, in den Haufen, zusammen mit denClass
Objekt. (Lokale Variablen in Methoden sind in dem Stapel, unabhängig von static-ness der Methode.)Permanent Generation(PermGen) Raum-heap enthalten permanente Klasse
Metadaten und Deskriptoren, die Informationen.
PermGen space immer reserviert für Klassen und jene, die damit verbunden sind
die Klassen(Statische Elemente, statische Funktionen, etc...)
Statische Funktion gehört zu der Klasse, so dass Sie kann aufgerufen werden, ohne
erstellen des Objekts der Klasse.