Java堆转储中的那些奇怪的类名是什么意思?

我正在尝试使用jmap和jhat跟踪Java进程中的内存泄漏。每次执行此操作时,都会看到针对特定对象类型的那些怪异的表示法,例如[S字符串数组和[CCharacter数组。我永远都不记得这意味着什么,而且很难用谷歌搜索这些东西。

( :证明我的观点,原来[S是short [C数组,是char数组。)

有人愿意制作一张列出所有不同类名及其含义的表吗?还是将我指向这样的桌子?

我特别想知道什么[Ljava.lang.Object;意思。

回答:

您会在Class.getName()下找到记录的完整列表:

如果该类对象表示的引用类型不是数组类型,则返回该类的二进制名称,如 Java™语言规范第二版 所指定。

如果此类对象表示原始类型或void,则返回的名称String等于与原始类型或void对应的Java语言关键字。

如果此类对象表示一类数组,则名称的内部形式由元素类型的名称组成,其后是一个或多个代表数组嵌套深度的’[‘字符。元素类型名称的编码如下:

Element type code

Boolean Z

Byte B

C character

Class or interface L_ Class name_ ;

Double D

Floating f

I

Long J

Short s

以上是 Java堆转储中的那些奇怪的类名是什么意思? 的全部内容, 来源链接: utcz.com/qa/410658.html

回到顶部