javaoptimizationmemoryjhat

What does the class class [B represents in Java?


I am trying out a tool jhat here to test my java memory usage. It reads in a heap dump file and prints out information as html. However, the tables shows as follows:

Class Instance Count Total Size 
class [B  36585  49323821  
class [Lcom.sun.mail.imap.IMAPMessage;  790  16254336  
class [C  124512  12832896  
class [I  23080  11923504  
class [Ljava.lang.Object;  13614  6664528  
class java.lang.String  108982  2179640  
class java.lang.Integer  219502  878008  

What are those [B [C etc classes?


Solution

  • Those are arrays of primitives ([B == byte[], [C == char, [I == int). [Lx; is an array of class type x.

    For a full list:

    [Z = boolean
    [B = byte
    [S = short
    [I = int
    [J = long
    [F = float
    [D = double
    [C = char
    [L = any non-primitives(Object)
    

    Also see the Javadoc for Class.getName.