11 de octubre de 2012

Liberar memoria de una aplicación VFP

Código del australiano Bernard Bout que permite liberar la memoria en las aplicaciones de Visual FoxPro en ejecución, reduciendo la memoria consumida por una aplicación VFP.

Este consumo aumenta por la caché que mantiene Fox para algunas sentencias SELECTs, los cursores en la memoria, la carga de imágenes, etc.

Lo curioso, es que si uno minimiza la aplicación, el consumo de memoria disminuye, porque Windows maneja esta caché y libera la memoria. Esto también es válido para otras aplicaciones, no solo para VFP.

Aquí Bernard nos provee la siguiente función que reduce el consumo de memoria (sin la necesidad de minimizar la aplicación) y la podemos ejecutar desde nuestra aplicación VFP en cualquier momento.
***********************************************
* Function....:  ReduceMemory()
* Author......:  Bernard Bout
* Date........:  05/12/2007 3:03:15 PM
* Returns.....:
* Parameters..:
* Notes.......:  reduces memory usage for vfp
***********************************************
FUNCTION ReduceMemory()
  DECLARE INTEGER SetProcessWorkingSetSize ;
    IN kernel32 AS SetProcessWorkingSetSize ;
    INTEGER hProcess , ;
    INTEGER dwMinimumWorkingSetSize , ;
    INTEGER dwMaximumWorkingSetSize
  DECLARE INTEGER GetCurrentProcess ;
    IN kernel32 AS GetCurrentProcess
  nProc = GetCurrentProcess()
  bb = SetProcessWorkingSetSize(nProc,-1,-1)
ENDFUNC
***********************************************
Fuente: http://www.foxite.com/faq/default.aspx?id=55

1 comentario :

  1. A 2019 me acabas de salvar... Esto si que libera memoria no el minimizado.
    Muchísimas gracias.
    Un saludo.

    ResponderBorrar

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.