2010-05-17 19 views
4

Pour Jetty, Tomcat ou tout autre conteneur de servlets de votre choix, quelle est l'empreinte moyenne (mémoire et autres ressources remarquables) d'une servlet de base? Cela inclut tous les autres objets de base dont vous avez presque toujours besoin par servlet, tel qu'un résolveur de vue. Je ne cherche pas un nombre quantitatif en particulier, mais une réponse indicative qui pourrait donner une idée de la «lourdeur» ou de la «légèreté» d'une servlet.Quelle est l'empreinte (mémoire) d'une servlet Java EE?

+1

J'aimerais un nombre quantitatif, mais ne peux pas trouver n'importe où. Si vous avez besoin d'exécuter une application client par instance de conteneur, il serait bon de savoir combien de mémoire vous allez consommer hors de la boîte (c'est-à-dire avant le lancement) avec jvm + container * nombre d'instances. Avec cela, vous pouvez décider, OK, Tomcat consomme trop de mémoire par instance; Je vais y aller avec Jetty, Winstone, etc. – virtualeyes

Répondre

4

Je ne pense pas que ce soit quelque chose que vous obtenez beaucoup d'avantages de demander sur Stack Overflow. La variabilité dans la définition de «basique», et les différentes versions du logiciel servlet, vont être beaucoup plus grande que la quantité d'effort nécessaire pour tester cela vous-même.

Créez simplement un servlet de type "hello-world" qui n'a pas de champs, lancez le ou les conteneurs de votre choix avec ce WAR et mesurez l'utilisation de la mémoire. Cela vous donnera largement la surcharge du conteneur de servlet, que vous pouvez ensuite soustraire de vos mesures de mémoire réelles en voyant comment "lourd" le servlet cible est. Les numéros seront beaucoup plus utiles si vous générez eux-mêmes en utilisant la version cible réelle du conteneur de servlet sur le système en question, que quelqu'un répondant ici disant "47MB" ou similaire.

+2

+1, bien que j'ajouterais probablement un numéro de la même servlet, juste pour obtenir un chiffre statistiquement significatif. Même ainsi, j'imagine que le surcoût associé à chaque servlet sera négligeable par rapport à l'overhead des bibliothèques de conteneur vm et servlet, des bibliothèques de socket natives, etc. – mdma

+0

Je m'attends beaucoup à cela. Mais puisque Amr croit probablement le contraire, il va prendre cela plus fortement s'il le mesure lui-même; les gens qui lui disent quelque chose qui semble «invraisemblable» n'auront pas le même impact. –

0

La taille du conteneur est assez hors de propos (Tomcat ou Jetty, pas Websphere ou quoi que ce soit d'autre) sauf si vous faites de la programmation embarquée. La taille du Servlet peut être aussi petite que vous en avez besoin ou aussi grande que vous en avez besoin. D'une manière générale, les applications Web sans état auront moins de frais par thread que les applications avec état.