2013-05-23 9 views
20

Che cos'è Klass & KlassKlass in Implementazione hotspot JVM?Che cos'è Klass & KlassKlass

Per quanto ho capito dall'articolo Presenting the Perm Generation, Klass è la rappresentazione interna di una classe Java (diciamo A) & che terrà le informazioni di base sulla struttura della classe tra cui il bytecode. Sarà memorizzato come un oggetto stesso. Ogni oggetto della classe A avrà un puntatore alla rappresentazione interna Klass presente in PermGen

KlassKlass è la rappresentazione interna della classe Klass stessa. Perché è necessario KlassKlass? Quali informazioni extra sta memorizzando?

Inoltre, un puntatore KlassKlass'sKlass punta a se stesso, non l'ho capito neanche io.

risposta

20

Generazione permanente a.k.a permgen è il riferimento al luogo in cui sono archiviate tutte le informazioni relative alla classe. Occasionalmente viene indicato come metodo-area.

consente di dare un esempio del codice seguente:

public class Parent 
{ 
    ... 
} 

Qui:

  • new Parent() è un oggetto di Parent di classe.
  • (new Parent()).getClass() fa riferimento a Klass di Parent. Il tipo di riferimento per questo oggetto sarebbe java.lang.Class<Parent>. Ciò memorizzerebbe le informazioni sulle annotazioni, sui costruttori, sui campi, sui metodi, sulla sua ereditarietà (superclasse, interfacce) Parent
  • KlassKlass sarebbe (new Parent()).getClass().getClass(). Il tipo di riferimento per questo oggetto sarebbe java.lang.Class<java.lang.Class>. Questo definisce le informazioni sulle annotazioni, costruttori, campi, metodi java.lang.Class s', il suo patrimonio (superclasse, interfacce), ecc

In teoria, questa catena potrebbe continuare ma KlassKlassKlass sarebbe uguale a KlassKlass.

Inschort, KlassKlass significa che si dispone di un oggetto java.lang.Class che definisce il comportamento di java.lang.Class stesso.

Spero che questo aiuti

-1

Un klass può essere definito come un modello/stampa blu che descrive i comportamenti/stati oggetto del supporto di tipo.

1

Lei sembra avere una buona conoscenza generale della gestione dello storage in HotSpot. Per ottenere dettagli più specifici è una buona idea andare alla bocca del cavallo - in questo caso gli sviluppatori di HotSpot. This page è la loro descrizione del sistema di gestione della memoria.

In situazioni in cui voglio scoprire che codice cerco, trovo il codice e lo leggo. In questo caso possiamo trovare un'implementazione della classe KlassKlass here. Questo non sembra aggiungere ulteriori informazioni sopra a Klass - che è molto interessante da guardare. Notare che KlassKlass si estende Klass.

Quindi perché ne abbiamo bisogno? Bene, possiamo tracciare la gerarchia Klass di un particolare programma come un albero in cui uno Klass ne descrive un altro. Tutto ha bisogno di una descrizione, ma non possiamo andare avanti così per sempre, dobbiamo trovare uno fixed point dove la cosa che usiamo per descrivere qualcosa è se stessa - quindi possiamo fermarci!

Quindi, in sintesi KlassKlass non fa nulla di più utile di quello esistente. Ha bisogno di esistere ma la sua esistenza è ragionevolmente non interessante.

Problemi correlati