2009-07-30 18 views
1

作成されるオブジェクトの数を調べる方法はありますか? たとえば、 以下のコードで作成されるオブジェクトの数を調べるにはどうすればよいですか? コード:作成されるオブジェクトの数を調べる方法はありますか?

String [][] str = { {new String("A"),new String("B"),new String("C")}, {new String("D"),new String("E")} }; 
+2

Javaの初心者のオブジェクトの数は "から来た?私はこの種の質問を何度も見てきました。初心者が自分に尋ねるようなものではありません。そのような質問に焦点を当てたテキストブックがありますか? –

+0

Joachim、私はここで同意しない - 新しいString( "A")は見やすくない、沢山のオブジェクトが作成される(この場合は、 "A"がプール内にあるかどうかに応じて3または4 )。はい、初心者は、たとえjavadocがきれいであっても、コンストラクタが役に立たなくても、それを使用する傾向があります;) –

答えて

3

はい - あなたはYourkitのように、プロファイラを使用することができます。用事、私は永遠にすべてのものに本当に悪いんだ...

-3

。これは、これらのIDEのいずれかでプロジェクトを実行できる場合に機能します。

+2

-1:これは彼が何を意味するのかわかりません。さらに、あなたのコードは正しい答えを出すことさえできません! –

+0

誰にでも、このソリューションが間違っていると投票した人に、彼はこのソリューションが完全にうまく動作する非常に特殊なケースを求めました。 –

+0

これは確かにJavaで作成されたオブジェクトの数を確認する方法ではなく、このアプローチには複数の問題があります。 a)より多くのオブジェクトを作成する可能性があります b)あなたと同じコードベースでコードを追加します c)この例でも、 という名前の場合でも正しい答えが得られない可能性があります。 – wsorenson

1

NetBeansとの両方があなたにこの情報を与える良いプロファイラを持っているEclipseの:あなただけ

int numberOfObjects = 0; 
for(String[] s: str) 
{ 
    numberOfObjects += s.length; 
} 

編集を行うことができます。この場合

0

ここには、JDKツールを使用して、 JDK VMで実行されているJavaアプリケーションのヒープを歩くことができるlitleバッチファイル(実行中のウィンドウが必要です)があります。

それは、あなたが(オフライン)ヒープをサーフィンすることができ、jmapのを使用してヒープをダンプし、その後JHATを使用してWebサーバを実行します:)

「新しいString(文字列)」とその強迫観念を行い、「
@echo off 
if not [%1%]==[] goto map 
cls 
echo. 
echo Gebruik: map.cmd [pid#] 
echo. 
echo (JVM 6+ required. You're using : %JAVA_HOME%) 
echo. 
echo Which PID would you like to use? 
echo. 
jps -l 
echo. 
pause 
exit /b 

:map 
if exist c:\jmap.txt del c:\jmap.txt 
jmap -dump:file=c:\jmap.txt %1 
echo. 
echo about to start the web-server on port 8081 
pause 
start http://localhost:8081 
start jhat -port 8081 c:\jmap.txt -J-mx512m 
echo. 
関連する問題