2008-12-03 11 views
0

J'ai une applet Java (une réelle <APPLET>) qui génère des messages de journal fréquents à System.out. Si la console Java est activée dans le navigateur de l'utilisateur, elle conservera bien entendu des références à toutes ces chaînes et les empêchera d'être récupérées. Le problème est le nombre de messages de consignation conservés par la console: le tas de l'applet se développe très rapidement. Après quatre jours d'exécution, une exception OutOfMemory est générée. Autant que je sache à partir de jmap et jhat, les chaînes de journaux représentent la majorité de son empreinte.Limiter l'empreinte de tas de la console Java?

Existe-t-il une API pour limiter plus strictement le nombre ou la taille totale des messages conservés par la console Java? En cas d'erreur, je n'aurais besoin que des derniers messages. La console commence à retirer les messages les plus anciens à un moment donné, mais seulement après qu'elle est devenue vraiment énorme.

Je réalise que "ne pas démarrer la console" ou "juste effacer la console" sont des solutions possibles, mais avez-vous déjà essayé de demander à un utilisateur non technique si la console Java est activée? Ou essayez-vous de les parcourir en les regardant et en les nettoyant? Je voudrais vraiment qu'ils quittent la console activée, donc je peux voir les messages s'il y a une erreur.

Répondre

1

Au lieu de System.out.println, utilisez java.util.logging. Il est beaucoup plus facile de modifier les niveaux de journaux plus tard et de diminuer le nombre de messages de journal.

Vérifiez également MemoryHandler, il utilise un tampon et supprime automatiquement les anciens messages de journal.

Questions connexes