I'm trying to track down a memory leak in a java process, using jmap and jhat. Every time I do this I see those weird notation for specific object types, like [S for string arrays and [C for Character arrays. I never remember what means what, and it's very hard to google this stuff.
(EDIT: to prove my point, it turns out that [S is array of short and [C is array of char.)
Anyone care to make a table listing all the different class names and what they mean? Or point me to such table?
Specifically I'd like to know what [Ljava.lang.Object; means.
解决方案
You'll find the complete list documented under Class.getName():
If this class object represents a
reference type that is not an array
type then the binary name of the class
is returned, as specified by the Java™
Language Specification, Second
Edition.
If this class object represents a
primitive type or void, then the name
returned is a String equal to the Java
language keyword corresponding to the
primitive type or void.
If this class object represents a
class of arrays, then the internal
form of the name consists of the name
of the element type preceded by one or
more '[' characters representing the
depth of the array nesting. The
encoding of element type names is as
follows:
Element Type Encoding
boolean Z
byte B
char C
class or interface Lclassname;
double D
float F
int I
long J
short S