2 votes

Y a-t-il des suggestions pour réduire l'utilisation du CPU en Java ?

J'ai écrit un programme Java pour télécharger une page HTML. Mais l'utilisation du CPU est proche de 100%, tandis que l'utilisation du réseau est inférieure à 3%. Il semble que le CPU soit devenu mon goulot d'étranglement. Comment puis-je réduire l'utilisation du CPU ?

6voto

dfa Points 54490

Utilisez un profileur (j'aime VisualVM ), identifiez le goulot d'étranglement et réparez-le !

5voto

John T Points 14067

Si vous avez une boucle while continue, donnez à votre programme un peu de dormir le temps entre les itérations. Le téléchargement des pages web à lui seul ne devrait pas entraîner une utilisation aussi importante des ressources, mais vous pourriez envisager d'utiliser un profileur pour déterminer ce qui vous gêne. Peut-être que poster le code ici nous permettrait de vous aider un peu plus.

3voto

Une chose très simple que vous pouvez faire pour identifier le problème est de saisir quelques traces de pile. ctrl-/ctrl-break/jstack/jconsole/visualvm. Si le programme passe catastrophiquement beaucoup de temps là où se trouve le problème de performance (ce qui est raisonnablement probable), alors vous devriez facilement voir le problème.

2voto

kgiannakakis Points 62727

Si l'utilisation du CPU est proche de 100 % pendant une longue période, il est fort probable que votre code comporte une erreur (boucle infinie ou autre). Essayez de profiler votre application pour voir ce qui se passe. Commencez par imprimer l'heure actuelle à différents endroits de votre code. Si vous n'arrivez toujours pas à le découvrir, un profileur sera nécessaire.

1voto

ATorras Points 2082

Peut-être que vous demandez des données trop rapidement...

J'essaierais de changer le code pour une notification pilotée par les événements.

Regards.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X