Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3084 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [PERL] Out of memory sur Win7 x64 [RESOLU]

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PERL] Out of memory sur Win7 x64 [RESOLU]

n°1948804
lomobob
Posté le 09-12-2009 à 16:43:37  profilanswer
 

Bonjour à toutes et à tous!
 
Désolé par avance si le post n'est pas à la bonne place...  :jap:  
 
Voici mon problème: je dois exécuter un script sur de gros fichiers textes, ou je stocke pas mal d'info dans des tableaux associatifs (ou dictionnaires, tables de hash, c'est selon...). Je l'ai fait sur le poste de mon bureau, qui dispose de 2Go de Ram, et ca passe ricrac (en gros, je surveille la consommation de la ram, et en fermant firefox et outlook c'est bon), le processus perl monte à environ 1.1 Go d'utilisation de mémoire vive.
 
Je me suis dit alors, confiant, que ca serait aussi bien de le faire chez moi, avec un pc disposant de 6Go de Ram, avec windows seven en version 64 bits.
 
Et là, surprise: le même script ne passe plus, avec un beau message "out of memory!" Pourtant, quand je surveille le gestionnaire des taches dans l'onglet performance, je vois que j'ai environ 4300 Mo de "disponible", mais seulement 730 Mo de "libre". J'ai cherché à comprendre la nuance entre "disponible", et "libre", mais pour l'instant je n'ai rien trouvé :(
 
Pour info, je ne fais rien tourner à coté qui pourrais occuper la Ram...
 
Voila, si quelqu'un avait un début de piste, je lui en serai reconnaissant !  :bounce:  
 
Merci d'avance  :jap:


Message édité par lomobob le 11-12-2009 à 00:14:51
mood
Publicité
Posté le 09-12-2009 à 16:43:37  profilanswer
 

n°1948811
bjone
Insert booze to continue
Posté le 09-12-2009 à 17:00:46  profilanswer
 

Au hasard:
 
L'allocation retourne un pointeur au dessus de 2Go, un truc dans le runtime du Perl regarde si l'adresse est <= 0 et bing.
 
J'ai jamais utilisé Perl, mais regarde si le binaire qui fait tourner le bouzin n'a pas le flag "large address aware", qui fait que Win7 x64 retourne des allocations > 2Go.
 
Dans le cas d'un process et OS Win32, t'as 2Go d'adressage virtuel utilisateur, un process Win32 sur un Win64 tu peux avoir 4Go si le binaire est flaggé "LARGE ADDRESS AWARE". (Et si le code ne l'est pas vraiment et fait un test à la con => kaboom....)
 
Le flag donne aussi 3Go d'espace user dans le cas d'un OS Win32, mais il faut aussi autoriser le mode /3GB dans le boot.ini pour autoriser ce comportement. (Ce qui te sauve peut-être dans le cas de ton essai au taf)
 
Si ça crashe en activant le flag /3GB sur ta machine du taf, ça pue le code qui fait un test signé sur les adresses allouées.


Message édité par bjone le 09-12-2009 à 17:05:59
n°1948844
lomobob
Posté le 09-12-2009 à 20:50:45  profilanswer
 

Merci pour ta réponse Bjone !  :hello:  
 
Bon, comme je suis un peu pressé, j'ai opté pour une solution de gros bourrin: j'ai téléchargé un dvd d'Ubuntu, lancé en mode démo, et zou !
 
Là ça marche nickel, j'ai bien accès aux 5.8 Go de Ram ^^
 
Je replongerai dans mon problème initial une fois mon boulot fini !

n°1948890
bjone
Insert booze to continue
Posté le 10-12-2009 à 01:16:36  profilanswer
 

pour faire court t'as pas un binaire 64bits de perl pour windows ?

n°1949174
gilou
Modérateur
Modzilla
Posté le 10-12-2009 à 18:17:52  profilanswer
 

Normalement, il y a ça chez activestate
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1949268
lomobob
Posté le 11-12-2009 à 00:13:51  profilanswer
 

Ca y est, de retour sous windows 7...
 
Effectivement, j'ai installé la version x64, ca roule nickel  :sol:  
 
Merci à tous  :jap:  
 

n°1949270
lomobob
Posté le 11-12-2009 à 00:39:40  profilanswer
 

Et au passage une remarque: le code tourne quasiment 2 fois plus vite sous ubuntu (20 min contre 36 min sous windows...)

n°1949272
bjone
Insert booze to continue
Posté le 11-12-2009 à 01:04:00  profilanswer
 

wow, ça fait un peut trop pour être honnête :??:
les binaires du runtime perl sont compilés avec des options d'optimisation comparables ?
c'est comment le perl ? interprété, jité ?


Message édité par bjone le 11-12-2009 à 01:04:47
n°1949313
lomobob
Posté le 11-12-2009 à 09:31:45  profilanswer
 

Heu, je t'avoue que je ne m'y connais pas assez dans ce domaine pour te répondre correctement  :??:  
 
Ce que je peux te dire, c'est que perl est toujours installé par défaut avec Linux...

n°1949444
gilou
Modérateur
Modzilla
Posté le 11-12-2009 à 13:41:20  profilanswer
 

Citation :

c'est comment le perl ? interprété

interprété (plus pour pas mal de modules/librairies, appel de code en DLL).
A+,


Message édité par gilou le 11-12-2009 à 13:41:46

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [PERL] Out of memory sur Win7 x64 [RESOLU]

 

Sujets relatifs
[ Resolu ] Probleme avec mon script menuPerl regexp
Variable de Session prend Valeur du Get [Resolu][résolu] "\" à la fin d'une chaine de caractères
[resolu] Trier une listbox qui affiche le contenu d'un répertoire. ?[Résolu - PHP] Incrémenter une variable par autre chose que +1
[Résolu] [Jquery] ui droppable limiter nombre de drop[RESOLU] Carré à la place des accents
problème firefox/CSS [RESOLU] 
Plus de sujets relatifs à : [PERL] Out of memory sur Win7 x64 [RESOLU]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR