Bonjour,
J'ai un programme Java qui fonctionne bien qui traite des fichiers reçus.
On me demande de ne plus le lancer au coup par coup lors de la réception de ces fichiers, mais de le laisser boucler continuellement.
Or j'ai un problème d'occupation mémoire qui finit par exploser dès que j'attends les quelques centaines de fichiers.
J'ai donc commencé à réviser les sources en prenant soin de libérer les ressousces proprement, comme expliqué dans la FAQ Java (http://java.developpez.com/faq/java/...ererRessources).
J'ai commencé par la partie JDBC.
Voici ce que j'ai fait :
Quelqu'un peut-il me dire si c'est bien ça ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public AppEmiMdtR findByApplication(long appId, boolean recurse) throws DaoException { log.trace("findByApplication(appId=" + appId + ", recurse=" + recurse + ")"); AppEmiMdtR obj = new AppEmiMdtR(); try { // 1 - Création de la ressource (IPreparedStatement) IPreparedStatement ps = dbHandler.prepareStatement("app_emi_mdt_r.select.by.app_id"); try { // 2 - Utilisation de la ressource (IPreparedStatement) ps.setInt(1, 1); // ate_actif ps.setInt(2, 0); // ate_supprime ps.setLong(3, appId); // 1 - Création de la ressource (ResultSet) ResultSet rs = ps.executeQuery(); try { // 2 - Utilisation de la ressource (ResultSet) if (rs.next()) { obj = mapAppEmiMdtR(rs, recurse); } } finally { // 3 - Libération de la ressource (ResultSet) DaoUtil.close(rs); } } finally { // 3 - Libération de la ressource (IPreparedStatement) DaoUtil.close(ps); } } catch (Exception e) { log.error("Exception: " + e.getMessage(), e); throw new DaoException("Exception: " + e.getMessage(), e); } return obj; }
Y a-t-il un moyen simple de voir que tout est bien libéré ?
Merci.
Partager