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

C++ Discussion :

Max memory allcoation


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut Max memory allcoation
    Bonjour,

    J'ai un compilateur C++ (32 bits) et je l'utilise sur une machine Xp 64bits
    Visiblement quand j'implemente des alloction mémoire avec des "new" je suis je pense donc que je devrais etre limité à 2GOctets d'allocation max due au compilateur?.
    J'ai 8 GO sur ma machine et pourtant je n'arrive pas à allouer plus de 1.1 GO d'un coup et 1.5 par petit bout.
    Qu'est ce qui peut bien me limiter comme ca. J'ai 8 Go de mémoire libre !

    Merci d'avance de votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut
    Salut
    Citation Envoyé par uriotcea
    Bonjour,
    J'ai 8 GO sur ma machine et pourtant je n'arrive pas à allouer plus de 1.1 GO d'un coup et 1.5 par petit bout.
    Qu'est ce qui peut bien me limiter comme ca. J'ai 8 Go de mémoire libre !
    concernant ce probleme, en fait c'est parce que ta memoire est fractionner. Le plus simple c'est par l'exemple:
    - - - - -
    5 case de 1 Mo chacune
    Si un programme en utilise 2:
    + + - - -
    - = libre
    + = utilise
    Il t'en reste 3

    Maintenant si un autre programme veut 1 Mo, on se retrouve dans ce cas la:
    + + + - -
    Il t'en reste 2

    Maintenant le premier programme se termine, il te restera 4Mo apres liberation:
    - - + - -
    Mais tu es incapable d'allouer 3Mo d'un coup, Ok? par contre tu pourra allouer 3 fois 1Mo ou 1 fois 2Mo et 1 fois 1Mo, par petit bout comme tu dis .

    et pour l'autre question je suis pas expert en matos donc je saurai pas dire.

    PS: tu les vois bien tes 8Giga, ils sont bien reconnus par windows?
    Un test interessant serait d'essayer de faire monter ta memoire et de regarder a combien il se met a swapper.

  3. #3
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Oui windows voit bien les 8 Go
    Quand je lance plusieurs applis consommant 1Go chacune, pas de probleme je peux en lancer 7 ou 8

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    C'est pas vraiment un problême de fragmentation...

    Dans Windows, chaque process a son propre mapping d'addresse (donc non fragmenté, en tout cas au démarrage de l'appli ) par pages de 64K (IIRC).


    Par contre:
    - Compiles tu bien pour windows 64 ? (pour faire du code x64 et non x86)
    - Quand tu executes ton programme, le vois tu dans le task-manager sans asterisque ?

    Si la réponse est non dans l'une ou l'autre, alors ton programme est en 32bits et tourne en mode WOW32, et donc comme n'importe quelle appli 32 bits sous XP 32 bits, avec un espace d'addressage limité à 2Go (- les Mo pris par les DLLs et EXEs).

  5. #5
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Oui je compile en 32 bits, c'est pourquoi de doit etre limité à 2 G
    Mais pourquoi ne puis-je pas allouer plus de 1.1 G d'un coup et 1.6 G par petit bout. j'esperais pouvoir allouer au moins 1.9G d'un coup. mon solft n'uilise pas grand chose en mémoire, dll incluse

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Pour ce genre de question, je serais tenté de dire "il y a un truc, on ne sait pas quoi, qui occupe 400Mo d'adressage" et "il n'y a pas d'espace libre contigu de plus d'1.1G".

    La première affirmation est douteuse, la seconde est par contre très probable...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. [11gR2] MEMORY MAX TARGET
    Par lynxdu37 dans le forum Administration
    Réponses: 14
    Dernier message: 19/04/2015, 18h23
  2. [2008R2] Max sever memory
    Par Kropernic dans le forum Administration
    Réponses: 12
    Dernier message: 13/03/2013, 14h44
  3. Augmenter le max memory ASE
    Par bouzahme dans le forum Adaptive Server Enterprise
    Réponses: 10
    Dernier message: 26/10/2010, 22h19
  4. Réponses: 3
    Dernier message: 14/02/2007, 16h51
  5. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38

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