Avatar billede syncroniq Nybegynder
24. januar 2008 - 13:55 Der er 6 kommentarer

Ryde op i ram, ved afslut

Hey,

Jeg har lavet et program der indlæser en fil i et binært træ i VB6. Når jeg er færdig med at bruge træet løber jeg det igennem og sætter hver node til nothing når aller underliggende noder er.

Alligevellet står programmet i lang tid efter jeg har lukket, og ryder op. Programmet fylder ca 150MB i rammen. Men hvorfor skrumper det ikke når jeg ryder op. Hvorfor venter den alligevellet til jeg har lukket programmet? Det tager en krig for den at ryde op.
Avatar billede sjh Nybegynder
25. januar 2008 - 00:52 #1
Er det ikke bare fordi du ikke har ram nok til at køre dit progarm.. tror mere det er fordi din computer bruger meget sidefil (swap) til at køre dit program.

Nu ved jeg ikke lige hvor meget data du smider ind i dit progarm, men hvis du loader din data ind i String så kræver dit program mere end hvis du benytter Byte Array til at have din data i.
Avatar billede sjh Nybegynder
25. januar 2008 - 01:10 #2
Hvis du benytter dig af Byte Array så kan du bruge Erase til at tømme data med :

' ------------- Form1 -------------
Option Explicit

Private arrData() As Byte

Private Sub Command1_Click()
  Erase arrData ' Tømmer arrData
End Sub

Private Sub Form_Load()
  ReDim arrData(0 To 150000000) As Byte ' ca. 150 MB
End Sub
' ------------- Form1 -------------
Avatar billede syncroniq Nybegynder
25. januar 2008 - 07:12 #3
Hey,

Det er en ca 14MB fil jeg indlæser i et binært træ. Jeg har 2BG ram og kommer kun op på at bruge ca 400MB alt ialt.

Men jeg prøver lige den Erase og vender tilbage. Tak.
Avatar billede syncroniq Nybegynder
25. januar 2008 - 07:17 #4
Erase virker kun på arrays. Jeg bruger Classes (Node.cls) til at opbygge mit træ.
Hvordan sletter man dem så. node = nothing virker åbenbart ikke.
Avatar billede sjh Nybegynder
25. januar 2008 - 12:39 #5
Ja, jeg skriver også hvis det er et "Byte Array" så kan du bruge "Erase"..

Men nu er det jo lidt svært at sige hvordan du skal tømme din "Node.cls" da jeg ikke kan se hvordan den er opbygget men måske har du en "Clear" function i den ?? som kan tømme din data.
Avatar billede sjh Nybegynder
25. januar 2008 - 12:49 #6
Jeg er bare ikke sikker på det er dit "Object" som er problemet, da "Nothing" skulle "ryde op"

http://www.aivosto.com/vbtips/vbtips.html

Variable-length String: MyString = vbNullString
Variant: MyVariant = Empty
Form: Unload MyForm
Object: Set MyObjectVariable = Nothing
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester