Czym jest Klass & KlassKlass
Co to jest Klass
& KlassKlass
w implementacji JVM Hotspot?
Z tego co zrozumiałem z artykułu prezentującego pokolenie Perm, Klass
jest wewnętrzną reprezentacją klasy Java (powiedzmy A
) i przechowuje ona podstawowe informacje o strukturze klasy łącznie z kodem bajtowym. Zostanie on zapisany jako sam obiekt. Każdy obiekt klasy A będzie miał wskaźnik do wewnętrznej reprezentacji Klass
obecnej w PermGen
KlassKlass jest wewnętrzna reprezentacja samej klasy Klass
. Dlaczego KlassKlass
jest potrzebne? Jakie dodatkowe informacje są przechowywane?
Również, a KlassKlass's
Klass
pointer wskazuje na siebie, ja też tego nie rozumiałem.
3 answers
Permanent Generation vel permgen to odniesienie do miejsca, w którym przechowywane są wszystkie informacje związane z klasą. Czasami nazywany jest method-area.
Weźmy przykład następującego kodu:
public class Parent
{
...
}
Tutaj:
-
new Parent()
jest obiektem klasyParent
. -
(new Parent()).getClass()
odnosi się doKlass
rodzica. Typ odniesienia dla tego obiektu tojava.lang.Class<Parent>
. Przechowywałoby to informacje o adnotacjachParent
, konstruktorach, polach, metodach, jej inheritance (superclass, interfaces) etc - KlassKlass będzie
(new Parent()).getClass().getClass()
. Typ odniesienia dla tego obiektu tojava.lang.Class<java.lang.Class>
. Definiuje to informacje o adnotacjachjava.lang.Class
, konstruktorach, polach, metodach, ich dziedziczeniu (klasach nadrzędnych, interfejsach) itp.
Teoretycznie ten łańcuch mógłby trwać, ale KlassKlassKlass byłby taki sam jak KlassKlass.
Inshort, KlassKlass oznacza, że masz jeden java.lang.Class
obiekt, który definiuje zachowanie java.lang.Class
siebie.
Hope this helps
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-11 20:22:27
Wydaje się, że masz dobrą ogólną wiedzę na temat zarządzania pamięcią masową w hotspocie. Aby uzyskać więcej szczegółów, dobrze jest udać się do paszczy konia - w tym przypadku twórcy HotSpot. Ta strona jest ich opisem systemu zarządzania pamięcią masową.
W sytuacjach, gdy chcę dowiedzieć się, co robi jakiś kod, staram się znaleźć kod i go przeczytać. W tym przypadku możemy znaleźć implementację klasy KlassKlass tutaj . To chyba nie dodaje dodatkowa informacja na górze Klass - która jest bardzo ciekawa. Zauważ, że KlassKlass
rozszerza Klass
.
Klass
hierarchię konkretnego programu jako drzewo, w którym jeden Klass
opisuje inny. Wszystko wymaga opisu, ale nie możemy tak ciągnąć w nieskończoność, musimy znaleźć punkt stały gdzie rzecz, której używamy do opisania czegoś, jest sama w sobie - więc możemy przestać!
Więc w podsumowaniu KlassKlass
nie robi nic bardziej użytecznego niż istniejące. Musi istnieć, ale jego istnienie jest dość nieciekawe.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-11 23:10:49
Klasa może być zdefiniowana jako szablon / Niebieski druk opisujący zachowania / Stany tego obiektu jego typu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-27 10:13:47