IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Libérer la mémoire consommée par un DataModule


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 44
    Points : 24
    Points
    24
    Par défaut Libérer la mémoire consommée par un DataModule
    Bonjour,
    j'ai un problème de libération de mémoire.
    J'ai quelques requêtes qui me prennent beaucoup de mémoire quand je fais ADOQuery.Open, et le gros soucis et qu'il ne me libère pas cette mémoire...

    Du coup j'arrive vite à saturation et un message du style 'Mémoire insuffisante pour traiter la commande'.

    Ma question est : Comment libérer la mémoire aprés ADOQuery.Open ???

    Merci d'avance pour vos réponses.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 190
    Points : 218
    Points
    218
    Par défaut
    .close ?
    @+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Beh non ...
    il semble qu'il ne libère pas la mémoire en faisant Close.

    Une autre idée ???

    Merci tout de même d'avoir répondu

  4. #4
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    ADOQuery.Free ?
    -Slimjoe

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par liviertlse
    Bonjour,
    j'ai un problème de libération de mémoire.
    J'ai quelques requêtes qui me prennent beaucoup de mémoire quand je fais ADOQuery.Open, et le gros soucis et qu'il ne me libère pas cette mémoire...

    Du coup j'arrive vite à saturation et un message du style 'Mémoire insuffisante pour traiter la commande'.

    Ma question est : Comment libérer la mémoire aprés ADOQuery.Open ???

    Merci d'avance pour vos réponses.
    Est ce que tu crées dynamiquementte AdoQuery ?
    Si oui, les libères tu correctement ?

    Pour ma part j'ai des applications qui tournent toutes la journées non stop en réalisant des requetes toutes les 30s et je n'ai aucun problème de mémoire.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Bonsoir,
    Merci d'avoir répondu.

    Je ne crée pas dynamiquement le AdoQuery, il est placé sur sur unité datamodule et j'y fais appel depuis cette unité.

    Tu me conseilles de le créé dynamiquement ?

    PS : Le véritable problème n'est pas que la même requête prend de plus en plus de mémoire, mais c'est la multitude de requêtes dans le prog qui fini par faire planté le prog.

    Le programme en question a quelques 200 000 lignes de code et je ne sais combien de requêtes.
    Qand on se balade en effectuant des requêtes un peu partout, peu à peu la mémoire gonfle et arrive à saturation.

    Des idées ???

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Il faut que tu regardes si tu ne peux pas reduire le nombre de composant requete ouvert en même temps.

    Pour la création dynamique, ce n'est pas obligatoire, c'était juste une question pour savoir si tu les utilisais.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    En fait, je fais le test sur une seule requête (lourde) qui prend pas mal de mémoire quand je fais le Open
    et je m'étonne que la mémoire ne se vide pas quand je fais le Close.

    il a t'il une méthode propre pour vider la mémoire de ADOQuery ?

  9. #9
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Et en relancant une requete plus légère derriere, est ce que ca ne te reduit pas le mémoire prise ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Beh non c'est le problème ...

    on dirait qu'il garde la mémoire occupée pour chaque requête.

    Je tourne en rond depuis hier

    J'arrête pas de faire des tests, et cela ne marche pas ...

  11. #11
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Quelle version de delphi ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    D7 et la base est access

  13. #13
    Membre averti
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Points : 400
    Points
    400
    Par défaut
    Bonjour,
    Compte tenu de l'importance du soft (200 000 lignes...) je vous conseille d'investir dans la lecture de ce papier de J-M RABILLOUD . Il est trés complet. Au fil de ses 120 pages vous découvrirez les multiples possibilités de gestion de vos ressources...

    En général, lorsque l'on doit traiter un grand nombre de requête, il convient de mettre leur proprièté "prepared" à "true" et de gérer les curseurs de façon plus "précise" que les valeurs par défaut des composants ADO ne le font.

    Eviter, si possible, toute requête de la forme "SELECT * FROM " elles consomment énormément de mémoire sous ADO.

    Lisez, le chapître sur les "Recordset" et voyez s'il n'est pas plus interressant pour vous de créer des recordsets par le code afin d'insérer une couche entre vos données et vos composants "TADOQuery".

    Cordialement,
    Hauwke

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Ok,
    merci pour ces renseignements.
    Je vais me lancer dans la lecture de cette doc.

  15. #15
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par liviertlse
    D7 et la base est access
    As tu mis le patch pour D7, car je crois qu'il corrige des problèmes avec ADO
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Non, mais la je dois dire que tu m'interresses...

    Ou puis-je trouver the magic patch; qui me redonne tant d'espoir ???

  17. #17
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par liviertlse
    Non, mais la je dois dire que tu m'interresses...

    Ou puis-je trouver the magic patch; qui me redonne tant d'espoir ???
    Normalement sur le site Borland, si tu as enregistré ta version de Delphi, tu n'as aucun problème pour y accèder.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

Discussions similaires

  1. Libérer la mémoire allouée par iplImage
    Par marouame dans le forum OpenCV
    Réponses: 4
    Dernier message: 23/04/2012, 20h30
  2. [mémoire consommée par Oracle]
    Par tesla dans le forum Oracle
    Réponses: 4
    Dernier message: 03/10/2006, 16h47
  3. Comment libérer l'éspace mémoire utilisé par Acrobat Reader?
    Par Matt2094 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 28/03/2006, 17h48
  4. Analyseur de mémoire consommé par un soft
    Par chris_wafer_2001 dans le forum C++
    Réponses: 18
    Dernier message: 25/10/2005, 23h30
  5. [JVM] Connaitre la taille mémoire utilisé par les dif classe
    Par sur_uix dans le forum Général Java
    Réponses: 4
    Dernier message: 18/09/2003, 09h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo