39

jmapjhatを使用して、Java プロセスでのメモリ リークを追跡しようとしています。これを行うたびに[S、文字列配列や文字配列など、特定のオブジェクト タイプの奇妙な表記法が表示され[Cます。何が何を意味するのか覚えていません。これをグーグルで検索するのは非常に困難です。

編集:私の主張を証明するために、それ[Sは短い[C配列であり、文字の配列であることがわかります。)

さまざまなクラス名とその意味をすべてリストした表を作成したい人はいますか? または、そのようなテーブルを教えてください。

[Ljava.lang.Object;具体的にはどういう意味か知りたいです。

4

4 に答える 4

68

Class.getName()の下に文書化された完全なリストがあります。

このクラス オブジェクトが配列型ではない参照型を表している場合は、Java™ 言語仕様、第 2 版で指定されているように、クラスのバイナリ名が返されます。

このクラス オブジェクトがプリミティブ型または void を表す場合、返される名前は、Stringプリミティブ型または void に対応する Java 言語キーワードと同じです。

このクラス オブジェクトが配列のクラスを表す場合、名前の内部形式は、配列のネストの深さを表す 1 つ以上の「[」文字が前に付いた要素型の名前で構成されます。要素タイプ名のエンコードは次のとおりです。

要素タイプのエンコード
ブールZ
バイト B
文字 C
クラスまたはインターフェイス Lクラス名;
ダブルディ
フロート F
整数 I
ロングJ
ショート S
于 2009-07-06T14:15:12.677 に答える
15

これは、クラス名の内部表現についてJVM 仕様で指定されているオブジェクトの配列です。

  • 単一の [ は、の配列を意味します
  • L の後に完全修飾クラス名が続く (例: java/lang/Object) は、セミコロンで終わるクラス名です。

そう[Ljava.lang.object; オブジェクト[]を意味します

于 2009-07-06T14:10:48.283 に答える
6

ルールはClass.getName()の API ドキュメントにリストされています。

[Ljava.lang.Object;のインスタンスになりますObject[]。多次元配列は複数の左中かっこで表示されることに注意してください。

于 2009-07-06T14:14:05.330 に答える
-3

手段オブジェクト[]

于 2009-07-06T14:12:13.867 に答える