我正在尝试使用jmap和jhat来追踪 Java 进程中的内存泄漏。每次我这样做时,我都会看到特定对象类型的那些奇怪的符号,例如[S
字符串数组和[C
字符数组。我不记得是什么意思,而且很难用谷歌搜索这些东西。
(编辑:为了证明我的观点,事实证明这[S
是一个短[C
数组并且是一个字符数组。)
有人愿意制作一张表格,列出所有不同的类名及其含义吗?或者把我指向这样的桌子?
具体我想知道是什么[Ljava.lang.Object;
意思。
我正在尝试使用jmap和jhat来追踪 Java 进程中的内存泄漏。每次我这样做时,我都会看到特定对象类型的那些奇怪的符号,例如[S
字符串数组和[C
字符数组。我不记得是什么意思,而且很难用谷歌搜索这些东西。
(编辑:为了证明我的观点,事实证明这[S
是一个短[C
数组并且是一个字符数组。)
有人愿意制作一张表格,列出所有不同的类名及其含义吗?或者把我指向这样的桌子?
具体我想知道是什么[Ljava.lang.Object;
意思。
您将在Class.getName()下找到完整列表:
如果此类对象表示非数组类型的引用类型,则返回该类的二进制名称,如Java™ Language Specification, Second Edition所指定。
如果此类对象表示原始类型或 void,则返回的名称
String
等于与原始类型或 void 对应的 Java 语言关键字。如果该类对象表示一类数组,则名称的内部形式由元素类型的名称组成,前面有一个或多个“[”字符,表示数组嵌套的深度。元素类型名称的编码如下:
元素类型编码 布尔 Z 字节 B 字符 C 类或接口 L类名; 双D 浮动 F 诠释我 长J 短裤
它是JVM 规范为类名的内部表示指定的对象数组:
所以[Ljava.lang.object; 表示对象[]
这些规则列在Class.getName()的 API 文档中。
[Ljava.lang.Object;
将是Object[]
. 请注意,多维数组显示时带有多个左大括号。
表示对象[]