Mitt program har ett tomt form med nedanstående kod, och referens till "Microsoft ActiveX Data Objects 2.5 Library" (utöver de fyra som alltid är förbockade). Vid kompilering och körning av programmet så tar det enl Windows Task Manager ca 6 Mb i RAM. Jag vågar inte ta gift- men vb läser in hela tabellen eftersom du använder adUseClient, prova istället adUseServer Har provat med adUseServer, dock utan förbättring. Men detta borde inte spela någon roll då jag både stänger och sätter adoRS = Nothing. Man kan ju endast använda RecordSet objektet utan Connection. Det borde ju hjälpa lite kanske... Så prova att strunta i Connection objektet! Vaddå? Jag måste väl ha en connection mot databasen för att kunna skapa ett recorset av datan... Eller? Det går att skapa en connection mot en databas med endast ADO's RecordSet objekt. Öppna recordset objektet precis som vanligt, Hej.Varför suger min datakoppling(ADO) så mycket minne?
Varför?
Jag stänger ju adoCN & adoRS samt sätter dem till Nothing. Borde inte det innebära att minnet som datakopplingen tar frigörs?
Om jag kommenterar bort hela Form_Load() (se nedan) och kompilerar om och kör programmet så tar det enl Task Manager ca 1,9 Mb i RAM.
Snälla någon, hjälp mig!
//Martin
PS. Databasen består av en tabell med ca 60 poster. Filen är 84Kb stor.
Private Sub Form_Load()
Dim adoCN As ADODB.Connection
Dim adoRS As ADODB.Recordset
Dim strSQL As String
Dim strCN As String
strSQL = "Select * from tab1"
strCN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\AdrReg.mdb;Persist Security Info=False"
Set adoCN = New ADODB.Connection
adoCN.Open strCN
Set adoRS = New ADODB.Recordset
adoRS.CursorLocation = adUseClient
adoRS.Open strsql, adoCN, adOpenKeyset, adLockOptimistic
adoRS.Sort = "postid"
adoRS.Close
Set adoRS = Nothing
adoCN.Close
Set adoCN = Nothing
End SubSv: Varför suger min datakoppling(ADO) så mycket minne?
/pelleSv: Varför suger min datakoppling(ADO) så mycket minne?
Eller? Det enda som borde ligga kvar i minnet är väl variablerna strSQL och strCN... Jag menar, 4 Mb är ju lite väl mycket att låta ligga kvar och skräpa...
//MartinSv: Varför suger min datakoppling(ADO) så mycket minne?
Sv: Varför suger min datakoppling(ADO) så mycket minne?
Men problemet kvarstår väl, då jag även stänger ned connection-objektet...
Borde inte följande rensa upp i minnet?
adoRS.Close
Set adoRS=Nothing
adoCN.Close
Set adoCN=Nothing
Kan någon prova hos sig, med koden i ursprungsfrågan? Bara ett rent form, koden, och tidigare angiven referens till ADO...
//MartinSv: Varför suger min datakoppling(ADO) så mycket minne?
adoRS.Open strSQL, strCN, (CursorType), (LockType)
Så funkar det, enkelt va! Du behöver inte skapa en ADODB.Connection.
Jag är just nu på MCSD kurs, SQL Server 7.0 så jag har ej tillgång till
VB, men prova utan Connection objektet. Men det är konstigt att det
tar så mycket minne, även när du släpper alla resurser!!! Ja som sagt
det ända jag kan komma på är utan Connection objektet, det borde
ju vara mindre resurs krävande... Så prova det!Sv: Varför suger min datakoppling(ADO) så mycket minne?
Även om man skickar med sin connectionsträng skapas ett temporärt connectionobjekt av denna.
Så i detta fallet spelar det ingen roll.