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

Caml Discussion :

libérez la ram!


Sujet :

Caml

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 63
    Points : 54
    Points
    54
    Par défaut libérez la ram!
    J'ai une question pas bien fine sur la gestion de la ram:

    Dans un code je crée une grosse matrice qui manifestement pose des problèmes de mémoire. Mais elle ne sert que d'intermédiaire, et j'aimerais donc libérer l'espace qu'elle prend.

    Est-ce que ça se fait automatiquement ou est-ce qu'il faut donner l'ordre de "détruire" la matrice (et si oui comment)?

    Merci d'avance.

  2. #2
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Elle sera détruite toute seule quand elle ne sera plus utilisée ET quand le système aura besoin de plus de RAM.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 63
    Points : 54
    Points
    54
    Par défaut
    Ok, merci.
    Juste pour être sûr: c'est comme ça dans tous les langages? ça dépend peut-être du compilateur?

  4. #4
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    C'est comme ça en OCaml.

    En C, tu dois libérer toi-même ce qui doit être libéré. En FORTRAN 77, tu libères rien : tout est statique. En Java, Haskell, Python et la plupart des langages modernes, c'est comme en OCaml : il y a une fonctionnalité, que tu ne vois pas et qui est gérée seule, de façon autonome, le Garbage Collector ou GC pour les intimes, qui fait ça.

    Voilà.

    Si tu en es à te poser ce genre de questions, je te conseille de ne pas te prendre le chou plus que ça. Quand tu auras un peu plus de pratique, tu pourras te pencher un peu plus sur le sujet, très intéressant d'ailleurs.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  5. #5
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Salut !

    En attendant tu peux avoir des infos sur l'état de la mémoire en utilisant le module Gc fourni dans la bibliothèque standard d'OCaml. Ceci dit je ne connais aucune raison de faire appel à ce module dans l'immense majorité des cas (en tout cas pas dans les applis courantes).

    Cordialement,
    Cacophrène

  6. #6
    alex_pi
    Invité(e)
    Par défaut
    Fais juste attention à utiliser du code compilé en natif (avec ocamlopt) pour être sûr que la mémoire est nettoyée "le plus vite possible". La mémoire avec ocamlc est beaucoup moins bien gérée.



    Pour ceux qui veulent s'en convaincre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    let f _ = print_string "efface !"
     
    let _ = 
      let x = 3. in
        Gc.finalise f x;
        Gc.full_major ()

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 63
    Points : 54
    Points
    54
    Par défaut
    Merci à tous pour ces infos, en fait j'ai toujours un soucis assez mal identifié, du coup je vais réouvrir une autre discussion.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [.COM] Réserver de la RAM fct 48h int 21h
    Par bulerias dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 06/12/2010, 14h33
  2. Connaitre la taille de la RAM
    Par dway dans le forum Assembleur
    Réponses: 23
    Dernier message: 15/09/2004, 10h05
  3. Accès à la RAM
    Par Sub0 dans le forum MFC
    Réponses: 14
    Dernier message: 20/02/2003, 10h12
  4. recuperer la frequence du proc , la taille de la RAM , ..
    Par Cthulhu 22 dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/09/2002, 12h18
  5. Adresse des polices de caractères dans la RAM video ?
    Par Anonymous dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 27/05/2002, 17h29

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