@spiritdead
Segúramente que esto ya sepas hacerlo y quizás en un programa de las dimensiones del FDTAREAS ya lo hayas tenido en cuenta pero... ahí va:
Para liberar el consumo de RAM en el proceso del FDTAREAS (Lo he probado y anda perfecto) puedes usar este snippet
#Region "Flush memory"
'Example:
'FlushMemory("firefox")
Declare Function SetProcessWorkingSetSize Lib "kernel32.dll" (ByVal process As IntPtr, ByVal minimumWorkingSetSize As Integer, ByVal maximumWorkingSetSize As Integer) As Integer
Public Sub FlushMemory(process_to_flush)
Try
GC.Collect()
GC.WaitForPendingFinalizers()
If (Environment.OSVersion.Platform = PlatformID.Win32NT) Then
SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1)
Dim myProcesses As Process() = Process.GetProcessesByName(process_to_flush)
Dim myProcess As Process
'Dim ProcessInfo As Process
For Each myProcess In myProcesses
SetProcessWorkingSetSize(myProcess.Handle, -1, -1)
Next myProcess
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
#End Region
saludos
conozco dicha funcion y realmente no libera, lo q hace es hacer 1 volcado de memoria al disco duro ocacionando mas lentitud
para eso tenemos el GC
por ahora FDTareas tiene 0 fugas de memoria ram, todo lo q consumo el GC se encarga de liberarlo correctamente
recuerda que 1 vez utilizado un objeto debes liberarle o en su caso hacer uso de
Using ....
End using
tenia esta
'Declaración de la API
Private Declare Auto Function SetProcessWorkingSetSize Lib "kernel32.dll" (ByVal procHandle As IntPtr, ByVal min As Int32, ByVal max As Int32) As Boolean
'Funcion de liberacion de memoria
Public Sub ClearMemory()
Try
Dim Mem As Process
Mem = Process.GetCurrentProcess()
SetProcessWorkingSetSize(Mem.Handle, -1, -1)
Catch ex As Exception
'Control de errores
End Try
'GC.Collect()
'GC.WaitForPendingFinalizers()
End Sub