Tengo un problema que me trae dolores de cabeza, necesito optimizar al máximo la memoria RAM, sin depender de cuanta tenga el equipo, es decir, liberar el máximo espacio posible en la memoria RAM sin importar la capacidad, necesito hacerlo por código (sin ejecutar otros archivos, y sin DDL) mediante Visual Basic 2008 Express, tengo un código que me permite reducir el espacio en memoria de cada proceso, pero me da un error de "Acceso Denegado", os pongo el código por si se os ocurre cómo modificarlo para que funcione, y si se os ocurre otro diferente, estoy abierto a sugerencias si no implican archivos a parte (por ejemplo: .vbs, .dll, .exe, etc...), el código es el siguiente:
Código vb:
Ver original'Previamente se declara la función utilizando Kernel32
Declare Function SetProcessWorkingSetSize Lib "kernel32.dll" (ByVal process As IntPtr, ByVal minimumWorkingSetSize As Integer, ByVal maximumWorkingSetSize As Integer) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Código dentro de un botón
Try
GC.Collect()
GC.WaitForPendingFinalizers()
If (Environment.OSVersion.Platform = PlatformID.Win32NT) Then
SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1)
Dim myProcesses As Process() = Process.GetProcesses(Environment.MachineName.ToString)
Dim myProcess 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
Si me podéis ayudar, os lo agradezco.
Un saludo.