Bonjour !
Je suis actuellement en train de réaliser un programme J2EE qui doit comparer les chaines d'une table A (155000 titres de film environ) avec celles d'une table B (19000 titres environ) via l'algo de Hamming et/ou Jaro Winkler.
Le principe est que je charge la table A dans un HashSet et la table B dans un autre
Lorsque je me contentais des titres et d'un numéro tout se passait bien, même si comme vous l'imaginez c'était très long (environ 8h45 ^^ )
Maintenant j'ai modifié le programme pour qu'il affiche en plus du titre et de son numéro deux codes (1 chaine de 2 et 1 de 5 à 10 caractères) plus une date.
Et là après une trentaine de secondes (je pense que c'est pendant le chargement des HashSet) Tomcat me récupère l'erreur :
Oups...java.lang.OutOfMemoryError: Java heap space
java.lang.StringCoding.set(StringCoding.java:53)
java.lang.StringCoding.decode(StringCoding.java:171)
java.lang.String.<init>(String.java:444)
org.postgresql.core.Encoding.decode(Encoding.java:193)
org.postgresql.core.Encoding.decode(Encoding.java:205)
org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:1861)
org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:2292)
odax.servlet.CompChaine.doPost(CompChaine.java:139)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
Notez que là je viens de le relancer et il m'a seulement renvoyé
Est ce que c'est comme il semble évident dû au chargement un peu brutal de données que je fait (plus assez de mémoire quoi...) ou est ce que c'est autre chose ?java.lang.OutOfMemoryError: Java heap space
Dois-je remanier mon programme pour charger la table A en plusieurs fois ? Dans ce cas est ce que je laisse la connexion à la BDD ouverte pendant toute la durée du programme, ou est ce que j'en ouvre une à chaque fois que je souhaite recharger des données de la table A ?
Partager