imam aplikaciju koja se vrti jedno vrijeme, te instancira odredjene objekte
unutar kojih se nalaze kolekcije (uglavnom dictionary). nakon sto se obavi
posao, objekt se zatvara.
no, problem je sto nakon 8 sati rada, memory consuption naraste do preko
1gb.
catch je u tome da se ne oslobadja memorija koju zauzmu navedeni
dictionariji.
kako to rijesiti?
da bi testirao problem, napravio sam jednostavnu aplikaciju koja pokazuje o
cemu se radi.
Code:
Public Sub test()
Dim D As New Class1
For x As Int32 = 1 To 10000000
Dim T As New Obekt2(x)
D.D.Add(x, T)
Next
D.D.Clear()
GC.Collect()
GC.ReRegisterForFinalize(D)
GC.Collect()
D = Nothing
GC.Collect()
End Sub
Public Class Class1
Public D As System.Collections.Generic.Dictionary(Of Int32, Objekt2)
Public Sub New()
D = New System.Collections.Generic.Dictionary(Of Int32, Objekt2)
End Sub
Protected Overrides Sub Finalize()
MyBase.Finalize()
End Sub
End Class
Public Sub test()
Dim D As New Class1
For x As Int32 = 1 To 10000000
Dim T As New Obekt2(x)
D.D.Add(x, T)
Next
D.D.Clear()
GC.Collect()
GC.ReRegisterForFinalize(D)
GC.Collect()
D = Nothing
GC.Collect()
End Sub
Public Class Class1
Public D As System.Collections.Generic.Dictionary(Of Int32, Objekt2)
Public Sub New()
D = New System.Collections.Generic.Dictionary(Of Int32, Objekt2)
End Sub
Protected Overrides Sub Finalize()
MyBase.Finalize()
End Sub
End Class
uglavnom, nakon sto se izvrsi navedeno (i isprazni memorija), zauzece ostaje
vece za nekih 250mb.
da li ja grijesim ili jednostavno .net (2005) ne cisti objekte do kraja?
[Shadowed: dodati [code] tagovi.]
[Ovu poruku je menjao Shadowed dana 01.08.2007. u 00:54 GMT+1]
Think Big!