2009-04-15 7 views
0

[MISE À JOUR: J'ai oublié d'ajouter que cette 30 sec. Le problème de gel ne se produit que la première fois que j'essaie de charger un fichier à partir du serveur. Les charges suivantes sont très rapides. Peut-être une recherche DNS inverse étrange? J'héberge sur appengine de Google.]Java Applet démarre très lentement pour certains utilisateurs?

J'ai commencé un petit projet récemment appelé http://www.chartle.net qui est construit autour d'une applet.

Le temps de démarrage est un facteur important dans l'expérience utilisateur d'une applet. Je recueille des statistiques et je suis choqué de trouver souvent des temps de démarrage très longs (facteur 50 à 100 plus élevé que nécessaire)

L'applet démarre en 1-3 secondes en fonction de la vitesse de votre ordinateur et de la connexion. Toujours pour certains utilisateurs, cela prend jusqu'à 100 secondes.

J'ai des résultats mitigés de mes propres tests. La plupart du temps c'est très rapide mais parfois le navigateur se bloque pendant longtemps et la console Java ne me dit pas pourquoi. La meilleure supposition est, qu'elle se bloque lors du chargement d'un graphique enregistré.

S'il vous plaît me aider à comprendre ceci - meilleur test en ouvrant un graphique déjà enregistré (cliquez sur l'un des liens « créer » à http://www.chartle.net/gallery)

Cheers, Dieter

Répondre

2

Ceci est une aide générique plutôt que spécifique pour votre démo (qui s'est bien chargé pour moi dans quelques tentatives).

applets Congélation

Dans le répertoire bin JDK il y a un programme très pratique appelé jstack. Actualisez la fenêtre de votre navigateur jusqu'à ce qu'elle se bloque et puis exécutez:

jstack *process_id* 

Cela vous donnera la trace de pile de tout processus Java gelé. Si Java n'est pas un processus séparé, vous pouvez utiliser le processus du navigateur (par exemple pour Opera).

Les problèmes peu suivants étaient/sont communs pour moi:

  1. Je recommande la méthode d'initialisation que vous utilisez invokeLater plutôt que invokeAndWait (bien que vous ne pouvez pas le faire si vous utilisez marche/arrêt méthodes)
  2. plug-in java personnalisé d'Opera actes très mal ...
  3. interblocages causés par des blocs de synchronisation et de
  4. invokeAndWait

applets lentes

Peut-être le navigateur récupère-t-il des ressources du serveur, incapable d'utiliser le fichier jar?

+0

Merci, mais je déjà de nouvelles ces meilleures pratiques. Lorsque je charge un graphique enregistré au démarrage, il doit récupérer ce fichier sur le serveur. Peut-être que les retards ici sont causés par une recherche DNS inverse bizarre. Je n'ai aucune idée jusqu'ici. – Dieter

+0

Hmmm, avez-vous pensé à un profiler? YourKit a un essai de 15 jours et se branche très facilement sur les applets. Vous devriez être capable de voir quelle ligne provoque le blocage. – Pool

1

Il se peut que seul l'ancien plugin provoque ces problèmes. Cela signifie essentiellement que toutes les personnes exécutant OSX et les autres utilisateurs avec Java avant 1.6_update_10. Donc, j'apprécierais vraiment les gens avec de telles configurations pour regarder leur console Java et décrire le premier comportement au démarrage.

Cheers, Dieter