[ Bongo_zg @ 31.07.2007. 17:33 ] @
dakle, imam jedan problem koji je toliko banalan da se pitam ;) 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 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] |