Liberar memoria como cuando se minimiza el form

801 views
Skip to first unread message

Ariel

unread,
Oct 10, 2012, 9:40:33 PM10/10/12
to publice...@googlegroups.com
hola, tengo un "Lanzador de aplicaciones" que me ocupa unos 13mb de memoria ram, pero cuando lo minimizo (y lo vuelvo a restaurar) pasa a ocupar entre 1 y 5 mb, yo necesitaría que esta reducción de memoria se realize sin tener que minimizarlo, como puedo hacer?

Ariel D'Alfeo
Córdoba, Argentina

Luis Maria Guayan

unread,
Oct 11, 2012, 9:01:18 AM10/11/12
to publice...@googlegroups.com
Ejecuta esta función de Bernard Bout

*****************************************************************************************
* 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)
*EOFUN ReduceMemory()


Fuente: http://www.foxite.com/faq/default.aspx?id=55

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

--
 
 
 

Ariel D'Alfeo

unread,
Oct 11, 2012, 8:32:39 PM10/11/12
to publice...@googlegroups.com
BUENISIMO! funciona de maravillas, muchísimas gracias LUIS! y el merecido reconocimiento a Bernard Bout


Ariel D'Alfeo
Córdoba, Argentina


El 11/10/2012 10:01, Luis Maria Guayan escribió:

Juanpa

unread,
Oct 16, 2012, 7:54:08 AM10/16/12
to publice...@googlegroups.com
Buenas,

He estado probando esta función y efectivamente reduce la memoria que usa mi aplicación.

Ahora me gustaría saber hacer un buen uso de ella. He puesto una llamada a esta función en el evento GofFocus() de los formularios de mi aplicación. No se si esto está bien, estoy abusando de su uso o sería mejor ponerlo en otro sitio. A simple vista no he notado ningún cambio en el rendimiento.

¿Alguien tiene alguna sugerencia al respecto?

Gracias.

--------------------------------------------
Juan Pablo Martín Peinado
Guadalajara (España)
--------------------------------------------

Norberto

unread,
Oct 16, 2012, 11:09:33 AM10/16/12
to publice...@googlegroups.com
No estoy muy seguro que sea necesario liberar esa memoria. Intuyo que queda en uso como un 'cache' que apenas se necesita para otro proceso se libera automáticamente. Nunca me ha sucedido 'memoria insuficiente'
Pero si mereció la atención de Luis María y de Bernard Bout seguro estoy equivocado.
Norberto

Ariel D'Alfeo

unread,
Oct 16, 2012, 11:27:22 AM10/16/12
to publice...@googlegroups.com
En mi caso, me es muy necesario ya que nuestro sistema se encuentra en un datacenter y el servidor para los usuarios tiene solo 3gb de RAM, y en total son 40 usuarios  aprox. y tener un exejutable  que solo sirve como LANZADOR de aplicaciones, ocupando unos 13mb es mucho, ya que 13 x40 =520 mb. y gracias a Luis y Bernard, ahora solo pesa 900kb y anda perfecto. osea 0.9mb*40=36mb una pluma.

Ariel D'Alfeo
--
 
 
 

Julio Cesar Vente Ruiz

unread,
Oct 17, 2012, 12:04:56 PM10/17/12
to publice...@googlegroups.com
ok, pero donde en que parte de la ejecución del programa se debe poner la función..?

--
 
 
 



--


Julio Cesar Vente Ruiz

Ariel D'Alfeo

unread,
Oct 17, 2012, 1:20:24 PM10/17/12
to publice...@googlegroups.com
yo hice una funcion (prg) y la ejecuto en el INIT() y ademas puse  un timer que cada 10minutos la ejecuta, asi lo mantiene.

Ariel D'Alfeo
--
 
 
 

Alejandro Garcia G.

unread,
Oct 18, 2012, 9:25:21 AM10/18/12
to publice...@googlegroups.com
Una inquietud, si lo coloco en el INIT(), es ¿en cada form debo colocar esta rutina?. Es que no la he logrado que me funcione y deseo utilizarla.

Gracias.

Ariel D'Alfeo

unread,
Oct 18, 2012, 9:30:52 AM10/18/12
to publice...@googlegroups.com
a mi al principio no me funcionaba, asique puse un bot�n que ejecutaba
la funci�n, despu�s lo puse en un timer y luego en el init de un form.

El 18/10/2012 10:25, Alejandro Garcia G. escribi�:
> --
>
>
>

Alejandro Garcia G.

unread,
Oct 19, 2012, 10:35:32 AM10/19/12
to publice...@googlegroups.com
Listo ya lo probé y es sencillamente IMPRESIONANTE, me bajo de 190.000 kb a 4.000 kb una aplicación que le doy mantenimiento y me tenia loco el consume de memoria.

Recomendado totalmente. Ejecuto la rutina en el PRG principal después de cargarla y la he incluido también en los INIT() de los formularios mas pesados.

Fantástico.

Jose Antonio Blasco

unread,
Oct 19, 2012, 10:42:29 AM10/19/12
to publice...@googlegroups.com
Para los que la han probado, ¿ sería muy pesado colocarla en el INIT del formulario principal ?.
En mi caso, cada vez que se cierra una opción, se pasa por él.

Espero confirmaciones.  Gracias chicos.

Un saludo.

--
 
 
 



--
Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo

Reply all
Reply to author
Forward
0 new messages