Co oznaczają te dziwne nazwy klas w Java heap dump?
Próbuję namierzyć wyciek pamięci w procesie java, używając jmapi jhat. Za każdym razem, gdy to robię, widzę te dziwne zapisy dla konkretnych typów obiektów, jak {[0] } dla tablic łańcuchowych i [C
dla tablic znakowych. Nigdy nie pamiętam, co znaczy co, i bardzo trudno to wygooglować.
(EDIT : aby udowodnić moją rację, okazuje się, że [S
jest tablicą krótkich i [C
jest tablicą znaków.)
Ktoś chce zrobić tabelkę z listą wszystkich różne nazwy klas i co one oznaczają? Albo wskaż mi taki stół?
W szczególności chciałbym wiedzieć, co oznacza [Ljava.lang.Object;
.
4 answers
Pełną listę znajdziesz pod klasą .getName():
Jeśli obiekt tej klasy reprezentuje Typ odniesienia, który nie jest tablicą wpisz wtedy binarną nazwę klasy zwracana jest zgodnie z instrukcją Java™ Specyfikacja Języka, Drugi Wydanie .
Jeśli obiekt tej klasy reprezentuje Typ prymitywny lub pustka, wtedy nazwa zwracane jest
String
równe Java słowo kluczowe języka odpowiadające Typ prymitywny lub pustka.Jeśli obiekt tej klasy reprezentuje klasy tablic, następnie wewnętrzne forma nazwy składa się z imienia typu elementu poprzedzonego jednym lub więcej " ["znaki reprezentujące głębokość zagnieżdżenia tablicy. Na kodowanie nazw typów elementów jest jak follows:
Element Type Encoding boolean Z byte B char C class or interface Lclassname; double D float F int I long J short S
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
2011-10-27 09:10:34
Jest to tablica obiektów określona przez JVM Specifications do wewnętrznej reprezentacji nazw klas:
- a single [means an array of Java/Lang/Object) jest nazwą klasy zakończoną średnikiem ;
Więc [Ljava.lang.obiekt; oznacza obiekt[]
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
2009-07-06 14:10:48
Reguły są wymienione w dokumencie API klasy .getName () .
[Ljava.lang.Object;
będzie instancją Object[]
. Zauważ, że tablice wielowymiarowe
są wyświetlane z wieloma otwartymi szelkami.
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
2009-07-06 14:14:05
Oznacza Obiekt []
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
2009-07-06 14:12:13