2012-06-07 8 views
5

Mögliche Duplizieren:
static allocation in java - heap, stack and permanent generationwo der Speicher zugewiesen, wenn wir statisch deklarieren?

seine eine kleine Verwirrung ... definieren statische Klasse, Methoden und variables.In diese drei Fälle, in denen damit der Speicher zugewiesen. ? Mein Chef ist mit C vertraut, er sagt, dass nur Variablen im Heap-Speicher sind und Ruhe (statische Klassen und statische Methoden) bleiben im Hauptspeicher. Ist das die Natur? irgendeine Erklärung.?

eine weitere in android mit statischen Klasse und statischen Methoden ist eine bewährte Methode?

+0

Duplizieren: [http://stackoverflow.com/q/405364/1073063](http://stackoverflow.com/q/405364/1073063) und [http://stackoverflow.com/q/6569557/1073063 ] (http://stackoverflow.com/q/6569557/1073063). Moderator: Entschuldigung, ich habe mich mit der falschen Frage verbunden, als ich dies markiert habe. – Pablo

Antwort

5

die Sie interessieren, sind

static members are stored in Method Area. 

Klasseninstanzen und Arrays im Heap-Speicher gespeichert. Der Heap-Speicher wird auch als Shared Memory bezeichnet. Dies ist der Ort, an dem sich mehrere Threads die gleichen Daten teilen.

Non-heap Memory 

Es besteht aus ‘Method Area’ und anderen Speichern für die interne Verarbeitung erforderlich ist. Der Hauptspieler ist also "Methodenbereich".

Method Area 

Wie in der letzten Zeile gegeben ist Verfahren Bereich Teil des nicht-Heapspeicher (ein spezieller heap Bereich). Es speichert pro Klassenstrukturen, Code für Methoden und Konstruktoren. Per-Class-Struktur bedeutet Laufzeitkonstanten und static fields.

Die obigen drei (Heapspeicher, Nicht-Heap-Speicher und Methodenbereich) sind der Hauptjargon, wenn es um Speicher und JVM geht.

Klasseninstanzen und Arrays werden im Heapspeicher gespeichert. Der Heap-Speicher wird auch als Shared Memory bezeichnet. Dies ist der Ort, an dem sich mehrere Threads die gleichen Daten teilen.

+0

Nein. Statische Felder und Konstanten werden im Klassenobjekt im Heap gespeichert. – EJP

3

Statische Variablen werden an der gleichen Stelle wie die Klassendeklaration gespeichert (Methoden und Attribute usw.). 1). Klassen (die von den Klassenladeprogrammen geladen werden) werden in einem speziellen Bereich auf dem Heap mit der Bezeichnung "Permanente Generierung" gespeichert, und das statische Feld wird ebenfalls an den gleichen Ort verschoben, an dem sie für jede Instanz der Klasse gemeinsam sind. Für weitere Informationen:

see this answer

Verwandte Themen