Accueil > Forum > > > > Problème avec mémoire Vive
Problème avec mémoire Vive
jeudi 19 septembre 2002 à 13:46:09 |
Problème avec mémoire Vive

YahnIck
|
avec VB6 je fait une création de fichier textes d'une taille de 40 Mo environs. avec une boucle For le prog crée un fichier texte à chaque tour de boucle. mon problème c'est que au fur et à mesur que le programme crée les fichiers texte, la quantité de mémoire vive disponible diminue aussi. et au bout de 20 fichiers créés je suis à 100% d'utilisation de la mémoire vive. ( j'ai + de 700 Mo ram) je comprend pas pourquoi alors que les fichiers sont créés sur le disque dur??? est ce quelqu'un pourrait m'expliquer pourquoi et comment résoudre le problème (récuperer la mémoire) merci de votre attention a+ yann
|
|
jeudi 19 septembre 2002 à 14:01:30 |
Re : Problème avec mémoire Vive

imer
|
Peut être cela pourra t'aider:
Si, pour créer tes fichiers textes, tu ouvres le fichier (avec l'instructuion Open ou la méthode OpenTextFile de l'objet FileSystemObject, par exemple), alors pense à le refermer avant d'en ouvrir un autre.
------------------------------- Réponse au message : -------------------------------
avec VB6 je fait une création de fichier textes d'une taille de 40 Mo environs.
avec une boucle For le prog crée un fichier texte à chaque tour de boucle.
mon problème c'est que au fur et à mesur que le programme crée les fichiers texte, la quantité de mémoire vive disponible diminue aussi. et au bout de 20 fichiers créés je suis à 100% d'utilisation de la mémoire vive. ( j'ai + de 700 Mo ram) je comprend pas pourquoi alors que les fichiers sont créés sur le disque dur???
est ce quelqu'un pourrait m'expliquer pourquoi et comment résoudre le problème (récuperer la mémoire)
merci de votre attention
a+
yann
|
|
jeudi 19 septembre 2002 à 14:19:36 |
Re : Problème avec mémoire Vive

YahnIck
|
Je ferme le fichier open avec l'instruction Close #
est ce la bonne méthode ou y'en a t il une autre ?
------------------------------- Réponse au message : -------------------------------
Peut être cela pourra t'aider:
Si, pour créer tes fichiers textes, tu ouvres le fichier (avec l'instructuion Open ou la méthode OpenTextFile de l'objet FileSystemObject, par exemple), alors pense à le refermer avant d'en ouvrir un autre.
------------------------------- Réponse au message : -------------------------------
avec VB6 je fait une création de fichier textes d'une taille de 40 Mo environs.
avec une boucle For le prog crée un fichier texte à chaque tour de boucle.
mon problème c'est que au fur et à mesur que le programme crée les fichiers texte, la quantité de mémoire vive disponible diminue aussi. et au bout de 20 fichiers créés je suis à 100% d'utilisation de la mémoire vive. ( j'ai + de 700 Mo ram) je comprend pas pourquoi alors que les fichiers sont créés sur le disque dur???
est ce quelqu'un pourrait m'expliquer pourquoi et comment résoudre le problème (récuperer la mémoire)
merci de votre attention
a+
yann
|
|
jeudi 19 septembre 2002 à 14:49:24 |
Re : Problème avec mémoire Vive

imer
|
'Le code suivant crée 35 fichiers textes de 40 Mo environ 'Pendant l'exécution, dans le gestionnaire des taches, l'UC est à 100% et la mémoire reste stable -> 112000K environ/256 Mo Ram)
Dim FileNumber As Long Dim i_ligne As Long Dim j_fichier As Long For j_fichier = 1 To 30 FileNumber = FreeFile Open "c:\test" & CStr(j_fichier) & ".txt" For Output As #FileNumber For i_ligne = 0 To 3500000 Print #FileNumber, "azertyuiop" Next i_ligne Close #FileNumber Next j_fichier
------------------------------- Réponse au message : -------------------------------
Je ferme le fichier open avec l'instruction Close #
est ce la bonne méthode ou y'en a t il une autre ?
------------------------------- Réponse au message : -------------------------------
Peut être cela pourra t'aider:
Si, pour créer tes fichiers textes, tu ouvres le fichier (avec l'instructuion Open ou la méthode OpenTextFile de l'objet FileSystemObject, par exemple), alors pense à le refermer avant d'en ouvrir un autre.
------------------------------- Réponse au message : -------------------------------
avec VB6 je fait une création de fichier textes d'une taille de 40 Mo environs.
avec une boucle For le prog crée un fichier texte à chaque tour de boucle.
mon problème c'est que au fur et à mesur que le programme crée les fichiers texte, la quantité de mémoire vive disponible diminue aussi. et au bout de 20 fichiers créés je suis à 100% d'utilisation de la mémoire vive. ( j'ai + de 700 Mo ram) je comprend pas pourquoi alors que les fichiers sont créés sur le disque dur???
est ce quelqu'un pourrait m'expliquer pourquoi et comment résoudre le problème (récuperer la mémoire)
merci de votre attention
a+
yann
|
|
jeudi 19 septembre 2002 à 15:25:52 |
Re : Problème avec mémoire Vive

YahnIck
|
Aie
je viens d'essayer le code et bien aux 17 eme fichier la mémoire est pleine
où ai je fais l'erreur? j'ai fait un copier coller du code
cela viens de mon système d'exploitation ? j'ai windows 98
------------------------------- Réponse au message : -------------------------------
'Le code suivant crée 35 fichiers textes de 40 Mo environ 'Pendant l'exécution, dans le gestionnaire des taches, l'UC est à 100% et la mémoire reste stable -> 112000K environ/256 Mo Ram)
Dim FileNumber As Long Dim i_ligne As Long Dim j_fichier As Long For j_fichier = 1 To 30 FileNumber = FreeFile Open "c:\test" & CStr(j_fichier) & ".txt" For Output As #FileNumber For i_ligne = 0 To 3500000 Print #FileNumber, "azertyuiop" Next i_ligne Close #FileNumber Next j_fichier
------------------------------- Réponse au message : -------------------------------
Je ferme le fichier open avec l'instruction Close #
est ce la bonne méthode ou y'en a t il une autre ?
------------------------------- Réponse au message : -------------------------------
Peut être cela pourra t'aider:
Si, pour créer tes fichiers textes, tu ouvres le fichier (avec l'instructuion Open ou la méthode OpenTextFile de l'objet FileSystemObject, par exemple), alors pense à le refermer avant d'en ouvrir un autre.
------------------------------- Réponse au message : -------------------------------
avec VB6 je fait une création de fichier textes d'une taille de 40 Mo environs.
avec une boucle For le prog crée un fichier texte à chaque tour de boucle.
mon problème c'est que au fur et à mesur que le programme crée les fichiers texte, la quantité de mémoire vive disponible diminue aussi. et au bout de 20 fichiers créés je suis à 100% d'utilisation de la mémoire vive. ( j'ai + de 700 Mo ram) je comprend pas pourquoi alors que les fichiers sont créés sur le disque dur???
est ce quelqu'un pourrait m'expliquer pourquoi et comment résoudre le problème (récuperer la mémoire)
merci de votre attention
a+
yann
|
|
jeudi 19 septembre 2002 à 16:01:50 |
Re : Problème avec mémoire Vive

imer
|
Aïe en effet. J'ai Windows 2000 et aucun problème. Il ne doit pas gérer l'écriture sur disque de la même façon. Essaie avec FileSystemObject (cf MSDN) sinon tente ce code pour voir. Il ferme et ouvre le fichier au bout d'un certain nombre de lignes écrites. A toi de faire varier "Nb_EcritureMax". C'est plus long à l'exécution
Dim FileNumber As Long Dim i_ligne As Long Dim j_fichier As Long Dim Nb_Ecriture As Long Dim Nb_EcritureMax As Long
Nb_EcritureMax = 1000
For j_fichier = 1 To 30 'Suppression du fichier s'il existe If Dir("c:\test" & CStr(j_fichier) & ".txt") <> "" Then Kill "c:\test" & CStr(j_fichier) & ".txt" End If Nb_Ecriture = 0 FileNumber = FreeFile 'écriture dans le fichier Open "c:\test" & CStr(j_fichier) & ".txt" For Append As #FileNumber For i_ligne = 0 To 3500000 Print #FileNumber, "azertyuiop" Nb_Ecriture = Nb_Ecriture + 1 'libération de la mémoire en fermant et ré-ouvrant le fichier If Nb_Ecriture > Nb_EcritureMax Then Nb_Ecriture = 0 Close #FileNumber FileNumber = FreeFile Open "c:\test" & CStr(j_fichier) & ".txt" For Append As #FileNumber End If Next i_ligne Close #FileNumber 'fichier suivant Next j_fichier ------------------------------- Réponse au message : -------------------------------
Aie
je viens d'essayer le code et bien aux 17 eme fichier la mémoire est pleine
où ai je fais l'erreur? j'ai fait un copier coller du code
cela viens de mon système d'exploitation ? j'ai windows 98
------------------------------- Réponse au message : -------------------------------
'Le code suivant crée 35 fichiers textes de 40 Mo environ 'Pendant l'exécution, dans le gestionnaire des taches, l'UC est à 100% et la mémoire reste stable -> 112000K environ/256 Mo Ram)
Dim FileNumber As Long Dim i_ligne As Long Dim j_fichier As Long For j_fichier = 1 To 30 FileNumber = FreeFile Open "c:\test" & CStr(j_fichier) & ".txt" For Output As #FileNumber For i_ligne = 0 To 3500000 Print #FileNumber, "azertyuiop" Next i_ligne Close #FileNumber Next j_fichier
------------------------------- Réponse au message : -------------------------------
Je ferme le fichier open avec l'instruction Close #
est ce la bonne méthode ou y'en a t il une autre ?
------------------------------- Réponse au message : -------------------------------
Peut être cela pourra t'aider:
Si, pour créer tes fichiers textes, tu ouvres le fichier (avec l'instructuion Open ou la méthode OpenTextFile de l'objet FileSystemObject, par exemple), alors pense à le refermer avant d'en ouvrir un autre.
------------------------------- Réponse au message : -------------------------------
avec VB6 je fait une création de fichier textes d'une taille de 40 Mo environs.
avec une boucle For le prog crée un fichier texte à chaque tour de boucle.
mon problème c'est que au fur et à mesur que le programme crée les fichiers texte, la quantité de mémoire vive disponible diminue aussi. et au bout de 20 fichiers créés je suis à 100% d'utilisation de la mémoire vive. ( j'ai + de 700 Mo ram) je comprend pas pourquoi alors que les fichiers sont créés sur le disque dur???
est ce quelqu'un pourrait m'expliquer pourquoi et comment résoudre le problème (récuperer la mémoire)
merci de votre attention
a+
yann
|
|
jeudi 19 septembre 2002 à 16:36:18 |
Re : Problème avec mémoire Vive

jockos
|
Quand on ouvre un fichier et que l'on travail dessus, de même pour les EXE, ou n'importe quel process, c'est dans la mèmoire vive que ça se passe. (heuresement d'ailleur, parce que quand on voit la différence entre les temps d'accès disque et ceux de la mèmoire vive, on comprend mieux pourquoi ça marche comme ça)...
Bref, tout ça pour dire, que quand on charge un fichier en mémoire vive (c'est exactement ce que fais la commande Open), on occupe une place mémoire statique, un peu comme un tableau...
Un fichier de 40 Mo ne tiendra pas forcément dans la mémoire vive, car il faut qu'il y ait 40 Mo de libre à la suite... Mais ce que je ne comprend pas, c'est pourquoi est-ce que ce bon vieux Windows ne Swap pas sur le disque dur quand il n'a pas la place nécessaire en Ram... (c'est ce qui se passe quand on ouvre un très très gros fichier . doc avec Word par exemple... on entend le disque dur qui rame.... bzzzz et d'ailleur, le Pc rame aussi, parce que la Swap est très gourmand en ressource...).
Moi j'ai le même blème, quand j'ouvre un fichier texte de plus de 10 Mo pour le chargé dans un TextBox, ça plante... (bon, j'ai que 128 Mo de Ram, mais quand même!!! merde.... lol)
Donc la question, c'est pourquoi est-ce qu'il ne swap pas ce prog VB, est-ce qu'il faut lui dire, parce que ça a pas l'air de se faire par défaut et pourtant, je croyais que c'était Windaube qui gérait la mémoire vive...
En tout cas laisse tomber l'objet FileSystem, ça bopuffe encore plus de ressource, c'est un ActiveX, contrairement à Open, Close qui sont des méthodes de classes internes à VB.
Jockos
------------------------------- Réponse au message : -------------------------------
Aïe en effet. J'ai Windows 2000 et aucun problème. Il ne doit pas gérer l'écriture sur disque de la même façon. Essaie avec FileSystemObject (cf MSDN) sinon tente ce code pour voir. Il ferme et ouvre le fichier au bout d'un certain nombre de lignes écrites. A toi de faire varier "Nb_EcritureMax". C'est plus long à l'exécution
Dim FileNumber As Long Dim i_ligne As Long Dim j_fichier As Long Dim Nb_Ecriture As Long Dim Nb_EcritureMax As Long
Nb_EcritureMax = 1000
For j_fichier = 1 To 30 'Suppression du fichier s'il existe If Dir("c:\test" & CStr(j_fichier) & ".txt") <> "" Then Kill "c:\test" & CStr(j_fichier) & ".txt" End If Nb_Ecriture = 0 FileNumber = FreeFile 'écriture dans le fichier Open "c:\test" & CStr(j_fichier) & ".txt" For Append As #FileNumber For i_ligne = 0 To 3500000 Print #FileNumber, "azertyuiop" Nb_Ecriture = Nb_Ecriture + 1 'libération de la mémoire en fermant et ré-ouvrant le fichier If Nb_Ecriture > Nb_EcritureMax Then Nb_Ecriture = 0 Close #FileNumber FileNumber = FreeFile Open "c:\test" & CStr(j_fichier) & ".txt" For Append As #FileNumber End If Next i_ligne Close #FileNumber 'fichier suivant Next j_fichier ------------------------------- Réponse au message : -------------------------------
Aie
je viens d'essayer le code et bien aux 17 eme fichier la mémoire est pleine
où ai je fais l'erreur? j'ai fait un copier coller du code
cela viens de mon système d'exploitation ? j'ai windows 98
------------------------------- Réponse au message : -------------------------------
'Le code suivant crée 35 fichiers textes de 40 Mo environ 'Pendant l'exécution, dans le gestionnaire des taches, l'UC est à 100% et la mémoire reste stable -> 112000K environ/256 Mo Ram)
Dim FileNumber As Long Dim i_ligne As Long Dim j_fichier As Long For j_fichier = 1 To 30 FileNumber = FreeFile Open "c:\test" & CStr(j_fichier) & ".txt" For Output As #FileNumber For i_ligne = 0 To 3500000 Print #FileNumber, "azertyuiop" Next i_ligne Close #FileNumber Next j_fichier
------------------------------- Réponse au message : -------------------------------
Je ferme le fichier open avec l'instruction Close #
est ce la bonne méthode ou y'en a t il une autre ?
------------------------------- Réponse au message : -------------------------------
Peut être cela pourra t'aider:
Si, pour créer tes fichiers textes, tu ouvres le fichier (avec l'instructuion Open ou la méthode OpenTextFile de l'objet FileSystemObject, par exemple), alors pense à le refermer avant d'en ouvrir un autre.
------------------------------- Réponse au message : -------------------------------
avec VB6 je fait une création de fichier textes d'une taille de 40 Mo environs.
avec une boucle For le prog crée un fichier texte à chaque tour de boucle.
mon problème c'est que au fur et à mesur que le programme crée les fichiers texte, la quantité de mémoire vive disponible diminue aussi. et au bout de 20 fichiers créés je suis à 100% d'utilisation de la mémoire vive. ( j'ai + de 700 Mo ram) je comprend pas pourquoi alors que les fichiers sont créés sur le disque dur???
est ce quelqu'un pourrait m'expliquer pourquoi et comment résoudre le problème (récuperer la mémoire)
merci de votre attention
a+
yann
|
|
jeudi 19 septembre 2002 à 16:47:21 |
Re : Problème avec mémoire Vive

YahnIck
|
En faite mon problème n'est pas la création des fichiers, car m^me arrivé à 100% de la mémoire il continue à les créer. il doit certainement utiliser le disque dur.
bon problème c'est que dès que les fichiers ont été créer, le prog enchaine sur une autre tache qui gère des images, or pour traiter des images il me faut de la memoire et lorsque la tache commence ben la memoire ne c'est pas vidé suite à la fin de la tache précédente (la création des fichiers) et là ça plante!!
------------------------------- Réponse au message : -------------------------------
Quand on ouvre un fichier et que l'on travail dessus, de même pour les EXE, ou n'importe quel process, c'est dans la mèmoire vive que ça se passe. (heuresement d'ailleur, parce que quand on voit la différence entre les temps d'accès disque et ceux de la mèmoire vive, on comprend mieux pourquoi ça marche comme ça)...
Bref, tout ça pour dire, que quand on charge un fichier en mémoire vive (c'est exactement ce que fais la commande Open), on occupe une place mémoire statique, un peu comme un tableau...
Un fichier de 40 Mo ne tiendra pas forcément dans la mémoire vive, car il faut qu'il y ait 40 Mo de libre à la suite... Mais ce que je ne comprend pas, c'est pourquoi est-ce que ce bon vieux Windows ne Swap pas sur le disque dur quand il n'a pas la place nécessaire en Ram... (c'est ce qui se passe quand on ouvre un très très gros fichier . doc avec Word par exemple... on entend le disque dur qui rame.... bzzzz et d'ailleur, le Pc rame aussi, parce que la Swap est très gourmand en ressource...).
Moi j'ai le même blème, quand j'ouvre un fichier texte de plus de 10 Mo pour le chargé dans un TextBox, ça plante... (bon, j'ai que 128 Mo de Ram, mais quand même!!! merde.... lol)
Donc la question, c'est pourquoi est-ce qu'il ne swap pas ce prog VB, est-ce qu'il faut lui dire, parce que ça a pas l'air de se faire par défaut et pourtant, je croyais que c'était Windaube qui gérait la mémoire vive...
En tout cas laisse tomber l'objet FileSystem, ça bopuffe encore plus de ressource, c'est un ActiveX, contrairement à Open, Close qui sont des méthodes de classes internes à VB.
Jockos
------------------------------- Réponse au message : -------------------------------
Aïe en effet. J'ai Windows 2000 et aucun problème. Il ne doit pas gérer l'écriture sur disque de la même façon. Essaie avec FileSystemObject (cf MSDN) sinon tente ce code pour voir. Il ferme et ouvre le fichier au bout d'un certain nombre de lignes écrites. A toi de faire varier "Nb_EcritureMax". C'est plus long à l'exécution
Dim FileNumber As Long Dim i_ligne As Long Dim j_fichier As Long Dim Nb_Ecriture As Long Dim Nb_EcritureMax As Long
Nb_EcritureMax = 1000
For j_fichier = 1 To 30 'Suppression du fichier s'il existe If Dir("c:\test" & CStr(j_fichier) & ".txt") <> "" Then Kill "c:\test" & CStr(j_fichier) & ".txt" End If Nb_Ecriture = 0 FileNumber = FreeFile 'écriture dans le fichier Open "c:\test" & CStr(j_fichier) & ".txt" For Append As #FileNumber For i_ligne = 0 To 3500000 Print #FileNumber, "azertyuiop" Nb_Ecriture = Nb_Ecriture + 1 'libération de la mémoire en fermant et ré-ouvrant le fichier If Nb_Ecriture > Nb_EcritureMax Then Nb_Ecriture = 0 Close #FileNumber FileNumber = FreeFile Open "c:\test" & CStr(j_fichier) & ".txt" For Append As #FileNumber End If Next i_ligne Close #FileNumber 'fichier suivant Next j_fichier ------------------------------- Réponse au message : -------------------------------
Aie
je viens d'essayer le code et bien aux 17 eme fichier la mémoire est pleine
où ai je fais l'erreur? j'ai fait un copier coller du code
cela viens de mon système d'exploitation ? j'ai windows 98
------------------------------- Réponse au message : -------------------------------
'Le code suivant crée 35 fichiers textes de 40 Mo environ 'Pendant l'exécution, dans le gestionnaire des taches, l'UC est à 100% et la mémoire reste stable -> 112000K environ/256 Mo Ram)
Dim FileNumber As Long Dim i_ligne As Long Dim j_fichier As Long For j_fichier = 1 To 30 FileNumber = FreeFile Open "c:\test" & CStr(j_fichier) & ".txt" For Output As #FileNumber For i_ligne = 0 To 3500000 Print #FileNumber, "azertyuiop" Next i_ligne Close #FileNumber Next j_fichier
------------------------------- Réponse au message : -------------------------------
Je ferme le fichier open avec l'instruction Close #
est ce la bonne méthode ou y'en a t il une autre ?
------------------------------- Réponse au message : -------------------------------
Peut être cela pourra t'aider:
Si, pour créer tes fichiers textes, tu ouvres le fichier (avec l'instructuion Open ou la méthode OpenTextFile de l'objet FileSystemObject, par exemple), alors pense à le refermer avant d'en ouvrir un autre.
------------------------------- Réponse au message : -------------------------------
avec VB6 je fait une création de fichier textes d'une taille de 40 Mo environs.
avec une boucle For le prog crée un fichier texte à chaque tour de boucle.
mon problème c'est que au fur et à mesur que le programme crée les fichiers texte, la quantité de mémoire vive disponible diminue aussi. et au bout de 20 fichiers créés je suis à 100% d'utilisation de la mémoire vive. ( j'ai + de 700 Mo ram) je comprend pas pourquoi alors que les fichiers sont créés sur le disque dur???
est ce quelqu'un pourrait m'expliquer pourquoi et comment résoudre le problème (récuperer la mémoire)
merci de votre attention
a+
yann
|
|
jeudi 19 septembre 2002 à 16:47:37 |
Re : Problème avec mémoire Vive

YahnIck
|
En faite mon problème n'est pas la création des fichiers, car m^me arrivé à 100% de la mémoire il continue à les créer. il doit certainement utiliser le disque dur.
bon problème c'est que dès que les fichiers ont été créer, le prog enchaine sur une autre tache qui gère des images, or pour traiter des images il me faut de la memoire et lorsque la tache commence ben la memoire ne c'est pas vidé suite à la fin de la tache précédente (la création des fichiers) et là ça plante!!
------------------------------- Réponse au message : -------------------------------
Quand on ouvre un fichier et que l'on travail dessus, de même pour les EXE, ou n'importe quel process, c'est dans la mèmoire vive que ça se passe. (heuresement d'ailleur, parce que quand on voit la différence entre les temps d'accès disque et ceux de la mèmoire vive, on comprend mieux pourquoi ça marche comme ça)...
Bref, tout ça pour dire, que quand on charge un fichier en mémoire vive (c'est exactement ce que fais la commande Open), on occupe une place mémoire statique, un peu comme un tableau...
Un fichier de 40 Mo ne tiendra pas forcément dans la mémoire vive, car il faut qu'il y ait 40 Mo de libre à la suite... Mais ce que je ne comprend pas, c'est pourquoi est-ce que ce bon vieux Windows ne Swap pas sur le disque dur quand il n'a pas la place nécessaire en Ram... (c'est ce qui se passe quand on ouvre un très très gros fichier . doc avec Word par exemple... on entend le disque dur qui rame.... bzzzz et d'ailleur, le Pc rame aussi, parce que la Swap est très gourmand en ressource...).
Moi j'ai le même blème, quand j'ouvre un fichier texte de plus de 10 Mo pour le chargé dans un TextBox, ça plante... (bon, j'ai que 128 Mo de Ram, mais quand même!!! merde.... lol)
Donc la question, c'est pourquoi est-ce qu'il ne swap pas ce prog VB, est-ce qu'il faut lui dire, parce que ça a pas l'air de se faire par défaut et pourtant, je croyais que c'était Windaube qui gérait la mémoire vive...
En tout cas laisse tomber l'objet FileSystem, ça bopuffe encore plus de ressource, c'est un ActiveX, contrairement à Open, Close qui sont des méthodes de classes internes à VB.
Jockos
------------------------------- Réponse au message : -------------------------------
Aïe en effet. J'ai Windows 2000 et aucun problème. Il ne doit pas gérer l'écriture sur disque de la même façon. Essaie avec FileSystemObject (cf MSDN) sinon tente ce code pour voir. Il ferme et ouvre le fichier au bout d'un certain nombre de lignes écrites. A toi de faire varier "Nb_EcritureMax". C'est plus long à l'exécution
Dim FileNumber As Long Dim i_ligne As Long Dim j_fichier As Long Dim Nb_Ecriture As Long Dim Nb_EcritureMax As Long
Nb_EcritureMax = 1000
For j_fichier = 1 To 30 'Suppression du fichier s'il existe If Dir("c:\test" & CStr(j_fichier) & ".txt") <> "" Then Kill "c:\test" & CStr(j_fichier) & ".txt" End If Nb_Ecriture = 0 FileNumber = FreeFile 'écriture dans le fichier Open "c:\test" & CStr(j_fichier) & ".txt" For Append As #FileNumber For i_ligne = 0 To 3500000 Print #FileNumber, "azertyuiop" Nb_Ecriture = Nb_Ecriture + 1 'libération de la mémoire en fermant et ré-ouvrant le fichier If Nb_Ecriture > Nb_EcritureMax Then Nb_Ecriture = 0 Close #FileNumber FileNumber = FreeFile Open "c:\test" & CStr(j_fichier) & ".txt" For Append As #FileNumber End If Next i_ligne Close #FileNumber 'fichier suivant Next j_fichier ------------------------------- Réponse au message : -------------------------------
Aie
je viens d'essayer le code et bien aux 17 eme fichier la mémoire est pleine
où ai je fais l'erreur? j'ai fait un copier coller du code
cela viens de mon système d'exploitation ? j'ai windows 98
------------------------------- Réponse au message : -------------------------------
'Le code suivant crée 35 fichiers textes de 40 Mo environ 'Pendant l'exécution, dans le gestionnaire des taches, l'UC est à 100% et la mémoire reste stable -> 112000K environ/256 Mo Ram)
Dim FileNumber As Long Dim i_ligne As Long Dim j_fichier As Long For j_fichier = 1 To 30 FileNumber = FreeFile Open "c:\test" & CStr(j_fichier) & ".txt" For Output As #FileNumber For i_ligne = 0 To 3500000 Print #FileNumber, "azertyuiop" Next i_ligne Close #FileNumber Next j_fichier
------------------------------- Réponse au message : -------------------------------
Je ferme le fichier open avec l'instruction Close #
est ce la bonne méthode ou y'en a t il une autre ?
------------------------------- Réponse au message : -------------------------------
Peut être cela pourra t'aider:
Si, pour créer tes fichiers textes, tu ouvres le fichier (avec l'instructuion Open ou la méthode OpenTextFile de l'objet FileSystemObject, par exemple), alors pense à le refermer avant d'en ouvrir un autre.
------------------------------- Réponse au message : -------------------------------
avec VB6 je fait une création de fichier textes d'une taille de 40 Mo environs.
avec une boucle For le prog crée un fichier texte à chaque tour de boucle.
mon problème c'est que au fur et à mesur que le programme crée les fichiers texte, la quantité de mémoire vive disponible diminue aussi. et au bout de 20 fichiers créés je suis à 100% d'utilisation de la mémoire vive. ( j'ai + de 700 Mo ram) je comprend pas pourquoi alors que les fichiers sont créés sur le disque dur???
est ce quelqu'un pourrait m'expliquer pourquoi et comment résoudre le problème (récuperer la mémoire)
merci de votre attention
a+
yann
|
|
jeudi 19 septembre 2002 à 18:11:38 |
Re : Problème avec mémoire Vive

imer
|
Faire un DoEvents ou utiliser l'API "sleep" pour laisser souffler le système ?....
------------------------------- Réponse au message : -------------------------------
En faite mon problème n'est pas la création des fichiers, car m^me arrivé à 100% de la mémoire il continue à les créer. il doit certainement utiliser le disque dur.
bon problème c'est que dès que les fichiers ont été créer, le prog enchaine sur une autre tache qui gère des images, or pour traiter des images il me faut de la memoire et lorsque la tache commence ben la memoire ne c'est pas vidé suite à la fin de la tache précédente (la création des fichiers) et là ça plante!!
------------------------------- Réponse au message : -------------------------------
Quand on ouvre un fichier et que l'on travail dessus, de même pour les EXE, ou n'importe quel process, c'est dans la mèmoire vive que ça se passe. (heuresement d'ailleur, parce que quand on voit la différence entre les temps d'accès disque et ceux de la mèmoire vive, on comprend mieux pourquoi ça marche comme ça)...
Bref, tout ça pour dire, que quand on charge un fichier en mémoire vive (c'est exactement ce que fais la commande Open), on occupe une place mémoire statique, un peu comme un tableau...
Un fichier de 40 Mo ne tiendra pas forcément dans la mémoire vive, car il faut qu'il y ait 40 Mo de libre à la suite... Mais ce que je ne comprend pas, c'est pourquoi est-ce que ce bon vieux Windows ne Swap pas sur le disque dur quand il n'a pas la place nécessaire en Ram... (c'est ce qui se passe quand on ouvre un très très gros fichier . doc avec Word par exemple... on entend le disque dur qui rame.... bzzzz et d'ailleur, le Pc rame aussi, parce que la Swap est très gourmand en ressource...).
Moi j'ai le même blème, quand j'ouvre un fichier texte de plus de 10 Mo pour le chargé dans un TextBox, ça plante... (bon, j'ai que 128 Mo de Ram, mais quand même!!! merde.... lol)
Donc la question, c'est pourquoi est-ce qu'il ne swap pas ce prog VB, est-ce qu'il faut lui dire, parce que ça a pas l'air de se faire par défaut et pourtant, je croyais que c'était Windaube qui gérait la mémoire vive...
En tout cas laisse tomber l'objet FileSystem, ça bopuffe encore plus de ressource, c'est un ActiveX, contrairement à Open, Close qui sont des méthodes de classes internes à VB.
Jockos
------------------------------- Réponse au message : -------------------------------
Aïe en effet. J'ai Windows 2000 et aucun problème. Il ne doit pas gérer l'écriture sur disque de la même façon. Essaie avec FileSystemObject (cf MSDN) sinon tente ce code pour voir. Il ferme et ouvre le fichier au bout d'un certain nombre de lignes écrites. A toi de faire varier "Nb_EcritureMax". C'est plus long à l'exécution
Dim FileNumber As Long Dim i_ligne As Long Dim j_fichier As Long Dim Nb_Ecriture As Long Dim Nb_EcritureMax As Long
Nb_EcritureMax = 1000
For j_fichier = 1 To 30 'Suppression du fichier s'il existe If Dir("c:\test" & CStr(j_fichier) & ".txt") <> "" Then Kill "c:\test" & CStr(j_fichier) & ".txt" End If Nb_Ecriture = 0 FileNumber = FreeFile 'écriture dans le fichier Open "c:\test" & CStr(j_fichier) & ".txt" For Append As #FileNumber For i_ligne = 0 To 3500000 Print #FileNumber, "azertyuiop" Nb_Ecriture = Nb_Ecriture + 1 'libération de la mémoire en fermant et ré-ouvrant le fichier If Nb_Ecriture > Nb_EcritureMax Then Nb_Ecriture = 0 Close #FileNumber FileNumber = FreeFile Open "c:\test" & CStr(j_fichier) & ".txt" For Append As #FileNumber End If Next i_ligne Close #FileNumber 'fichier suivant Next j_fichier ------------------------------- Réponse au message : -------------------------------
Aie
je viens d'essayer le code et bien aux 17 eme fichier la mémoire est pleine
où ai je fais l'erreur? j'ai fait un copier coller du code
cela viens de mon système d'exploitation ? j'ai windows 98
------------------------------- Réponse au message : -------------------------------
'Le code suivant crée 35 fichiers textes de 40 Mo environ 'Pendant l'exécution, dans le gestionnaire des taches, l'UC est à 100% et la mémoire reste stable -> 112000K environ/256 Mo Ram)
Dim FileNumber As Long Dim i_ligne As Long Dim j_fichier As Long For j_fichier = 1 To 30 FileNumber = FreeFile Open "c:\test" & CStr(j_fichier) & ".txt" For Output As #FileNumber For i_ligne = 0 To 3500000 Print #FileNumber, "azertyuiop" Next i_ligne Close #FileNumber Next j_fichier
------------------------------- Réponse au message : -------------------------------
Je ferme le fichier open avec l'instruction Close #
est ce la bonne méthode ou y'en a t il une autre ?
------------------------------- Réponse au message : -------------------------------
Peut être cela pourra t'aider:
Si, pour créer tes fichiers textes, tu ouvres le fichier (avec l'instructuion Open ou la méthode OpenTextFile de l'objet FileSystemObject, par exemple), alors pense à le refermer avant d'en ouvrir un autre.
------------------------------- Réponse au message : -------------------------------
avec VB6 je fait une création de fichier textes d'une taille de 40 Mo environs.
avec une boucle For le prog crée un fichier texte à chaque tour de boucle.
mon problème c'est que au fur et à mesur que le programme crée les fichiers texte, la quantité de mémoire vive disponible diminue aussi. et au bout de 20 fichiers créés je suis à 100% d'utilisation de la mémoire vive. ( j'ai + de 700 Mo ram) je comprend pas pourquoi alors que les fichiers sont créés sur le disque dur???
est ce quelqu'un pourrait m'expliquer pourquoi et comment résoudre le problème (récuperer la mémoire)
merci de votre attention
a+
yann
|
|
Cette discussion est classée dans : fichier, problème, fichiers, mémoire, vive
Répondre à ce message
Sujets en rapport avec ce message
Problème avec mémoire Vive [ par YahnIck ]
avec VB6 je fait une création de fichier textes d'une taille de 40 Mo environs.avec une boucle For le prog crée un fichier texte à chaque tour de bouc
transfert fichiers serveur-client [ par idelphonse ]
bonjour, J'ai un grand problème. j'utilise un serveur ftp(serv U)pour des transferts de fichiers avec mes clients. il se fait que quand je leur envois
transfert de fichiers serveur-client [ par idelphonse ]
bonjour, J'ai un grand problème. j'utilise un serveur ftp(serv U)pour des transferts de fichiers avec mes clients. il se fait que quand je leur envois
Problème vb et les fichiers pdf [ par jiangnan ]
Bonjour à tous!Je suis un débutant en vb.J'ai un problème. Sur mon pc, c'est installé adobe reader 7.(pas de version complete de Acrobat)Je vais récu
connection fichiers texte [ par antoine_ferard ]
J'ai un problème concernant la connection "multi-utilisateurs" à une table"access" attachée à un fichier texte.Est-il possible de se connecter à plusi
Problème de tableau avec un Drag & Drop [ par Mitryx ]
Bonjour, J'effectue actuellement mon stage de 1er année de BTS et je créé une petite application permettant de faire un Drag & Drop de fichiers issu
problème de fichier s longs [ par touil ]
Mon programme de lecture des fichiers MP3 ne lit pas les fichiers MP3 dont les noms sont longs. par exemple je peux pas lire le fichier "xxxxxxxxxxxxx
Problème avec les noms longs des fichiers [ par appstmd ]
Bonjour !J'ai associé mon programme écrit en VB avec l'extension des documents qu'il lit, mais lorsque j'ouvre ce type de fichier depuis l'explorateur
Couper/copier un fichier en mémoire [ par MyC ]
Salut,Je cherche le moyen de copier/couper des fichiers en mémoire. C'est-à-dire de la même façon que le menu contextuel de l'exporateur qui apparâit
modifier un fichier en mémoire vive [ par flippouille ]
Comment puis-je mémoriser tous les octets d'un fichier en mémoire vive afin de faire un traitement dessusActuellement, j'ouvre un fichier sur le disue
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|