Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java堆转储中那些奇怪的类名意味着什么?_Java_Debugging_Memory Leaks_Heap_Jmap - Fatal编程技术网

java堆转储中那些奇怪的类名意味着什么?

java堆转储中那些奇怪的类名意味着什么?,java,debugging,memory-leaks,heap,jmap,Java,Debugging,Memory Leaks,Heap,Jmap,我正在尝试使用和跟踪java进程中的内存泄漏。每次我这样做的时候,我都会看到一些特定对象类型的奇怪符号,比如字符串数组的[S和字符数组的[C。我永远不记得什么是什么意思,而且很难用谷歌搜索这些东西 (EDIT:为了证明我的观点,[S是短数组,[C是字符数组。) 有人愿意做一个表,列出所有不同的类名及其含义吗?或者给我指一下这样的表 具体来说,我想知道[Ljava.lang.Object;的意思。它是一个对象数组,由指定用于类名称的内部表示: 单个[表示一个数组 L后跟完全限定的类名(例如jav

我正在尝试使用和跟踪java进程中的内存泄漏。每次我这样做的时候,我都会看到一些特定对象类型的奇怪符号,比如字符串数组的
[S
和字符数组的
[C
。我永远不记得什么是什么意思,而且很难用谷歌搜索这些东西

EDIT:为了证明我的观点,
[S
是短数组,
[C
是字符数组。)

有人愿意做一个表,列出所有不同的类名及其含义吗?或者给我指一下这样的表


具体来说,我想知道
[Ljava.lang.Object;
的意思。

它是一个对象数组,由指定用于类名称的内部表示:

  • 单个[表示一个数组
  • L后跟完全限定的类名(例如java/lang/Object)是类名,以分号结尾

因此[Ljava.lang.object;表示对象[]表示对象[]

规则列在的API文档中

[Ljava.lang.Object;
将是
对象[]
的一个实例
使用多个大括号显示。

您可以在下面找到完整的列表:

如果该类对象表示 不是数组的引用类型 然后键入类的二进制名称 返回,由Java语言指定™ 第二语言规范 版本

如果该类对象表示 基元类型或void,然后是名称 返回的是一个
字符串
等于Java 对应于 原语类型或void

如果该类对象表示 类的数组,然后是内部 名称的形式由名称组成 前面有一个或多个元素的元素类型 更多的“[”字符表示 数组嵌套的深度 元素类型名称的编码如下所示 如下:

Element Type Encoding boolean Z byte B char C class or interface Lclassname; double D float F int I long J short S 元素类型编码 布尔Z 字节B 字符C 类或接口Lclassname; 双D 浮动F int I 长J 短S
字符串数组应该是[Ljava/lang/string;。为我辩护,谷歌搜索让我在java.sun.com上找到了一篇文章,其中包含这样一行:“字符串和字符数组对象,[S和[C,在这个列表中总是排在首位。”。有点误导。该网站也有一些好信息:此链接已断开。我不想发布链接,但我会发布更新后的链接,以供之前的评论-。第4.3.2节可能是更好的参考。该链接实际上没有描述Class.getName()使用的约定--事实上,内部命名表示法是完全不同的,而且内部命名与Class.getName()相同,只需替换/即可。我看到:
org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Lj ava/lang/Object;Ljava/lang/Throwable;)V
--什么是“IL”意思?与该签名紧密匹配的方法是
log(Marker,String,int,String,Object[],Throwable)
,原语不使用分号分隔吗?