2009-07-30 8 views
1

Est-il possible de connaître le nombre d'objets créés? Par exemple, Si j'ai besoin de trouver le nombre d'objets créés pour le code ci-dessous, comment puis-je le faire? code:Est-il possible de connaître le nombre d'objets créés?

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

D'où vient cette obsession de la « new String (String) » et " nombre d'objets créés "de Java débutants viennent? J'ai vu ce genre de question encore et encore et cela ne ressemble pas à quelque chose qu'un débutant se demanderait. Y a-t-il un manuel qui se concentre sur ce genre de questions? –

+0

Joachim, je ne suis pas d'accord ici - new String ("A") est un exemple intelligent où il n'est pas facile de voir combien d'objets sont créés (dans ce cas: 3 ou 4, si le "A" est déjà dans la piscine). Oui, les débutants ont tendance à l'utiliser, même si le javadoc est assez clair, que le constructeur est inutile;) –

Répondre

-3

Dans ce cas, vous pouvez juste faire

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

Edit: Nevermind Je suis vraiment mal à tout jamais ...

+2

-1: Je suis à peu près sûr que ce n'est pas ce qu'il veut dire. D'ailleurs, votre code ne donne même pas la bonne réponse! –

+0

à quiconque a voté ce qui ne va pas avec cette solution, il a demandé un cas très spécifique où cette solution fonctionne parfaitement bien. –

+0

ce n'est certainement pas la façon de déterminer le nombre d'objets créés en Java, et il y a plusieurs problèmes avec cette approche: a) il pourrait créer plus d'objets b) il ajoute du code dans le même code que celui que vous êtes inspection c) il est peu probable qu'il donne la bonne réponse même pour cet exemple pour en nommer quelques-uns .. – wsorenson

1

Netbeans et Eclipse ont tous deux bons profileurs qui vous donnera ces informations . Cela fonctionne si vous pouvez exécuter votre projet dans l'un de ces IDE.

0

Voici un petit fichier batch (en espérant que vos fenêtres sont en cours d'exécution) qui vous permet de parcourir le tas de n'importe quelle application Java exécutée dans un JDK vm, en utilisant les outils JDK.

Il Libère le tas en utilisant JMAP, puis exécute un serveur Web en utilisant jhat, vous pouvez surfer sur le (hors ligne) tas :)

@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. 
Questions connexes