• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

memory leak

Status
Niet open voor verdere reacties.

stefano

Gebruiker
Lid geworden
22 mei 2004
Berichten
865
Op het einde van de dag draait mijn pc trager en trager. Toch heb ik geen 'zware' applicaties draaien. Vandaag liep de pc vast tijdens het uitvoeren van een makro in excel. Windows taakbeheer gaf aan dat er 198 van 1052 MB geheugen gebruikt werd.


Hoe kan ik

1. dit probleem oplossen ?
2. nagaan wie/wat de oorzaak is ?
3. memory 'resetten' zonder pc opnieuw op te starten ?

dbv,

Stefano
 
Welke windowsversie?

Windows taakbeheer gaf aan dat er 198 van 1052 MB geheugen gebruikt werd
Welk geheugen? Fysiek of wisselbestand?
(en heb jij 1052 fysiek? raar getal?)
 
als ik op ctrl alt delete duw , en dan op prestaties, dan verschijnt onderaan :

Processen : 42 CPU-gebruik 9 % Geheugengebruik : 198 / 1052 MB
 
198 is niet veel hoor. Na het opstarten van mijn PC zit ik al op 220+.

En het is normaal dat dit stijgt als de PC gebruikt wordt.

Hoe zit het met je firewall/virusscan?
 
Dat is nu net het probleem, HET STIJGT NIET ! maw 198 blijkt het maximum te zijn !

firewall/virusscan : wat bedoel je ?
 
Dat heeft met VBA te maken.

Zet al je object variablen op Nothing na gebruik
en sluit recordsets en databases voordat je de variabele op nothing zet.
 
Dnereb zei:
Dat heeft met VBA te maken.

Zet al je object variablen op Nothing na gebruik
en sluit recordsets en databases voordat je de variabele op nothing zet.


Oeps

En hoe moet ik dat doen ?
 
Voorbeeld:

Code:
'Variabelen declereren.....
Dim Db as DAO.Database
Dim Rc as DAO.RecordSet
Dim Fld AS DAO.Field
Dim Exl as Excel.Application
Dim WB as Workbook
Dim Arr(120) as String
Dim I as integer

'Objecten Laden......
Set Db as CurrentDB
Set Rc = Db.openrecordset("Tabel1")
Set Fld = Rc("Id")

Set Exl = New Excel.Application
Set Wb = Exl.Workbooks(1)

For I = 0 to 119
    Arr(I) = I
next

'Omdat je eerst een eerst de afhankelijke variabelen moet vernietigen zoals:
'Recordset afhankelijk/onderdeel is van een Database (in DAO)
'En een Field een afhankelijk/onderdeel van een recordset

'Sluiten en memory vrijgeven:

Set Field = Nothing
Rc.Close
Set Rc = Nothing
Db.Close
Set Db = Nothing
WB.Close
Set WB = Nothing
Exl.Quit
Set Exl = nothing

Redim Arr(0)

Op deze manier beperk je het memory leak vrijwel geheel.
 
Dank voor je reactie, waar waar (in welk programma ) moet ik die code plaatsen ?
 
Je moet dit niet kopieren maar je eigen macro volgens deze regels aanpassen.
 
Dnereb zei:
Je moet dit niet kopieren maar je eigen macro volgens deze regels aanpassen.

Ik denk dat het niet helemaal duidelijk is.

Maar stefano, wat is het probleem precies?
Ook al zou het niet stijgen, heb je daar last van?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan