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 :

Gestion de la mémoire


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Février 2003
    Messages : 124
    Points : 63
    Points
    63
    Par défaut Gestion de la mémoire
    Bonjour,
    J'ai developpe sous delphi avec des tables paradox. Mon problème actuellement et la mémoire : lorsque j'exécute mon application ça marche pendant un bout de temps, puis elle se plante avec le message qui ressemble à peu près à ceci "Memoire insuffisante". A ce moment, il me faut arreter l'application et la relancer. Pourtant, je travaille sur un P4 avec 2.66Ghz et 256Mo de RAM et plus de 70Go de DD. Quelqu'un aurait-il une idée pour une gestion efficace de la mémoire vive.

    MERCI de votre aide.

  2. #2
    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
    Avec le peu d'informations que tu donnes sur ton programme on ne peut pas t'aider vraiment.

    Que fait ton programme ?
    Utilises tu la création dynamique d'objet ?
    Utilises tu des threads ?
    etc ...
    Modérateur Delphi

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

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Février 2003
    Messages : 124
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par Malatar
    Avec le peu d'informations que tu donnes sur ton programme on ne peut pas t'aider vraiment.

    Que fait ton programme ?
    Utilises tu la création dynamique d'objet ?
    Utilises tu des threads ?
    etc ...
    Au fait c'est un programme de gestion de stocks : entrées, sorties,.... J'ouvre cependant plusieurs tables (envion 5 en même temps). Aussi les composants TTables ont beaucoup des champs caculés, ce qui provoque beaucoup d'appel dans l'évenement OnCalcFields.

  4. #4
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    je t'assure mon amis que ton problèmes ne vient pas de tes tables (j'ouvre plus de 30 Tables simultanément ). il faut vérifier si tu ne créer pas des variable qui consomme en ressource (graphic, composant) que vous ne libérer pas (fait attention aux composants que vous télécharger sur le net certain présent des bug, j'ai déja eu un problème identique causé par un Button qui charge des graphic en mémoire sans les libérer).


    PS : utilise tus des requête dans ton application.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Points : 35
    Points
    35
    Par défaut
    st ttm,
    je pense que ton pb provient de l'utilisation des champs calculés qui s'appelent récurcivement et provoque la saturation rapide de la mémoire centrales(les piles d'appel résident en MC).

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Février 2003
    Messages : 124
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par aityahia
    PS : utilise tus des requête dans ton application.
    Oui, j'utilise beaucoup de requêtes. Souvent même pour valoriser des champs calculés.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Février 2003
    Messages : 124
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par jenteldz47
    st ttm,
    je pense que ton pb provient de l'utilisation des champs calculés qui s'appelent récurcivement et provoque la saturation rapide de la mémoire centrales(les piles d'appel résident en MC).
    Effectivement, en faisant une excution pas à pas, je me rends compte qu'il y a beaucoup d'appels des evements "OnCalcField" (procedures de champs calculés). Mais dans ce cas, est-ce dire qu'il n'est pas intéressant d'utiliser les possibilités des champs calculés qu'offre DELPHI : dois-je faire autrement pour resoudre mon problème de mémoire ?

  8. #8
    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
    Si tu sais utiliser les requetes, il est mieux de faire les calculs via celles-ci que d'utiliser un champ calculer.
    Mais l'utilisation de requetes avec des calculs ne permet plus l'edition/ajout/supression d'enregistrement, il faut tout faire par requetes et faire les rafraichissements au bon endroit et bon moment.
    Modérateur Delphi

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

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Points : 35
    Points
    35
    Par défaut
    st ttm,
    a la place des champs calculer il vaut mieux d'utiliser des champs normal dans les tables, puisque maintenant il n'est y a pas de problèmes sur la disponibilité d'espace disque vous bénificier en rapidité, et vous éviter la saturation de la MC.

  10. #10
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    Bonjour

    Avant de jouer les inquisiteurs sur les composants TTable et TQuery. Es-tu sûr de gérer correctement les objets que tu crées toi-même, en d'autres termes, pour tous les objets que tu instancies explicitement, es-tu sûr de les libérer correctement.

    Dans la mesure du possible, ne charges pas trop les gestionnaires OnCalcField car leur code est appelé très souvent : modification d'un champ de la table, changement d'état de la source de données...

    Dans l'idéal, pour un champ calculé, fais uniquement des calculs simples ne mettant en jeu que les données propres à l'ensemble de données (TQuery, TTable) conteneur du champ calculé. Utiliser des données d'autres ensembles peut introduire des erreurs subtiles. En outre, le débogage avec les champs calculés, c'est pas de la tarte du fait de leur rafraichissement très fréquent.

    cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

Discussions similaires

  1. Réponses: 17
    Dernier message: 02/02/2006, 12h03
  2. gestion de la mémoire
    Par moldavi dans le forum C++
    Réponses: 17
    Dernier message: 04/02/2005, 23h18
  3. Réponses: 11
    Dernier message: 26/12/2004, 22h50
  4. Gestion de la mémoire entre plusieurs DLL
    Par Laurent Gomila dans le forum C++
    Réponses: 7
    Dernier message: 27/07/2004, 15h28
  5. Gestion des variables - mémoire ?
    Par RIVOLLET dans le forum Langage
    Réponses: 4
    Dernier message: 26/10/2002, 12h44

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