Manejo de Memoria Dinámica Real

Hola experto jkz0f7!
Aprovecho para saludarte..
Espero que estés bien, y que tengas tiempo para ayudarme.
De nuevo requiero de tu ayuda profesional.
Tengo que hacer una aplicación la cuál asigne más memoria ram a la aplicación de VFP,
estuve investigando, me tope con el administrador de memoria o memoria dinámica que fox
trae, pero a lo que entendí, el administrador solo (valga la redundancia), administra
la memoria que el S.O. Le asigna a fox, para sus controles, procedimientos, etc..
Si estoy mal corrígeme por favor.
Lo que quiero es hacer que fox tenga la memoria que quiera.
Por ejemplo :
Si mi maquina tiene 2GB de Ram, y el S.O. Le asigna a la aplicación de fox 256MB de ram,
al sistemale quedan 1.75GB de Ram (1GB + 3/4 de GB), esto le deja al administrador de memoria
que fox trae, solo 256MB para manejar, yo quiero cambiar ese número.
Quiero asignarle a la aplicación de Fox 512MB de ram y dejar al S.O. Con 1.5GB. Y si después se
me antoja cambiarlo de nuevo, en lugar de 512MB que sea 756MB, 844MB, 1GB, o más (obvio mientras
no le quite memoria para que el S.O. Deje de funcionar).
¿Si se puede? ¿Cómo?
Te agradezco toda la ayuda posible.

1 respuesta

Respuesta
1
Vaya, esa es una buena pregunta, la verdad yo nunca me he visto en la necesidad de utilizar más memoria de la que Visual Fox utiliza para sus aplicaciones, por lo cual no estaba muy familiarizado con esto, de igual forma estuve investigando un poco y encontré algunas cosas interesantes.
Según entendí, Visual FoxPro no se limita a una cantidad de memoria específica, sino que utiliza la que este disponible al momento de correr sus programas. En este caso, si tu tienes 2 GB no deberías tener problemas de memoria a menos que ya toda haya sido usada por otros procesos o por el mismo sistema operativo.
También encontré que Fox tiene algunos problemas cuando tiene tanta memoria a su disposición, más de 1 GB, y por esto mismo, a veces es conveniente limitar la memoria del programa, lo cual se puede lograr con una función, <SYS(3050)>, la cual establece el tamaño de memoria de "buffer" cuando la aplicación esta en primer plano y cuando esta en segundo plano. La forma de utilizarla sería algo así:
** Para establecer el máximo de memoria cuando la aplicación se ejecuta en primer plano (ForeGround)
SYS(3050, 1, [Máximo de memoria a utilizar en "bytes"])
** Para establecer el máximo de memoria cuando la aplicación se ejecuta en segundo plano (BackGround)
SYS(3050, 2, [Máximo de memoria a utilizar en "bytes"])
Por otro lado, no imagino para que necesitarías tal cantidad de memoria (512 MB) para correr una aplicación de Visual FoxPro, ya que para utilizar tal cantindad de memoria tendrías que tener Bases de Datos extremadamente grandes y correr procesos muy "pesados" o utilizar unos gráficos muy complejos.
Otro valor de configuración que puedes utilizar es el <PROGCACHE> (para la versión 9 de Fox), éste comando sirve para establecer la cantidad de memoria que Visual FoxPro almacena al inicio de un "Servidor COM", pero me parece que también puede ser utilizado en aplicaciones normales. Éste se establece en Páginas de Memoria de 64K (Kb) así que el valor que el establezcas se multiplicaría por 64 y ese sería el total de memoria en "KiloBytes" que estarías asignando. Esto lo tienes que incluir en el archivo de configuración (Config. Fpw) y sería algo así:
** Para asignar 144 Páginas de memoria equivalentes a 9 MB
PROGCACHE = 144
Toda esta información la saqué de la ayuda de Visual FoxPro 9.0, pero tal vez mi interpretación no se la más exacta, espero no haberte confundido, por eso sería conveniente que tu lo checaras también.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas