0 votes

Un grand nombre d'onglets de navigateur avec une applet java provoque une exception OutOfMemoryException

J'ai une applet qui consomme beaucoup de mémoire. Si un utilisateur ouvre plusieurs onglets sur une page Web contenant l'applet, il obtient une exception OutOfMemoryException. Cela peut s'expliquer par le fait que les navigateurs n'utilisent qu'une seule instance d'une machine virtuelle. Existe-t-il un moyen d'empêcher cela ?

L'exception OutOfMemoryException ne peut pas vraiment être attrapée, puisqu'elle peut se produire (presque) partout...

1voto

cjstehno Points 3913

Je recommanderais de faire un profilage de l'applet pour voir ce que vous pouvez réduire, en supposant que l'ouverture de nombreux onglets avec l'applet est un cas d'utilisation standard. Vous aurez besoin de faire tourner l'applet très peu.

Vous pouvez également utiliser les méthodes du cycle de vie des applets à votre avantage. Lorsque la page de l'applet perd le focus, je crois que la méthode stop() de l'applet est appelée. Une fois que la page de l'applet est de nouveau visible, la méthode start() doit être appelée. Vous pourriez utiliser la persistance du flux de l'applet pour partager vos données d'exécution entre les différents onglets, en les sauvegardant lors de la méthode stop() et en les rechargeant lors de la méthode start()... je ne suis pas sûr que ce soit une bonne solution, mais cela pourrait fonctionner.

À part "parce qu'ils le peuvent", y a-t-il une raison légitime pour qu'un utilisateur ait un tas d'onglets avec votre applet en cours d'exécution dans chacun d'eux ? S'il s'agit simplement d'un cas de test extrême, vous pouvez faire ce que vous pouvez et ensuite documenter le problème.

Bonne chance.

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