2017-08-04 3 views
2

Unten ist eine Frage, die von einem meiner Freunde während einer Diskussion aufgeworfen wurde, aber wir beide wussten nicht, was die tatsächliche Antwort ist.Wo wird das Objekt in Java erstellt werden

public class Test { 
static int i = 5; 
static String str = "Welcome"; 
static Map<String, String> map = new HashMap<>(); 
} 

im Objektcode, wenn JVM-Instanz erstellt wird und es geht alle drei Objekte zu erstellen, wo kommt es es

- Inside memory/metadata area 
- Inside heap area 

schafft Wir wissen, dass memory area alle Daten in der Klasse im Zusammenhang hält (einschließlich statische Referenzen) und heap area enthält alle Instanzvariablen einer Klasse.

Aber für die Klasse über

- int variable is created(We assume that it will be created in method area 
- Not sure about the other two object(String and HashMap) 

uns korrigieren, wenn wir etwas falsch verstanden haben und uns helfen zu verstehen, wie diese Variable Speicher in java

+0

Alle Objekte werden wie angegeben auf dem Heap erstellt. –

+0

* 1 Fehler *: Die statischen Felder werden initialisiert, wenn die Klasse geladen wird. –

Antwort

1

Für die Oracle JVM sein wird, ist es ein besonderes Objekt für jede Klasse, um ihre statischen Felder zu halten. Sie können dieses spezielle Objekt anzeigen, wenn Sie einen Heapspeicherauszug ausführen.

HINWEIS: Es gibt keine Angabe, wo statische Elemente gespeichert sind. Daher kann es überall auf der JVM basieren.

Verwandte Themen