SoloCodigo
		Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: gponisio en Lunes 13 de Enero de 2003, 16:20
		
			
			- 
				Hola:
 Yo tengo el siguiente problema
 
 Yo he construído el siguiente código con vb6 sp5 an sql 7 sobre
 
 windows 2000  prof SP2 en el cliente y el SQL en un Windows 2000
 
 server SP2
 
 Mi aplicación necesita obtener información actualizada de la base
 
 de datos cada .5 segundos. y cada vez se envía una consulta que es
 
 distinta a la anterior
 El código que escribí es algo así:
 ...
 Private m_rs as recordset
 ...
 ...
 Form_Load
 Set m_Rs = New Recordset
 m_Rs.CursorLocation = adUseClient
 m_Rs.LockType = adLockPessimistic
 m_Rs.CursorType = adOpenKeyset
 m_Rs.ActiveConnection=m_cnn 'Some connection opened
 End sub
 ...
 Sub Timer1_Timer
 m_Rs.Source = SQL 'some query variable ever distinct
 m_Rs.Open
 'some activity
 ...
 m_Rs.Close
 
 End Sub
 Luego de algún tiempo que depende de los tipos de consultas
 
 enviados
 el código en el cliente comienza a consumir recursos de memoria, a
 
 veces muy lentamente, hasta que para una aplicación que debe estar
 
 funcionando durante varios días, esta deja de funcionar  por falta
 
 de memoria
 Yo creo que mi código no tiene errores.
 
 Quizás ustedes tengan este bug, pero no lo noten ya que si la
 
 aplicación funciona solo durante 8 hs diarias, al finalizar el día
 
 se vuelven a recuperar los recursos de memoria, y el proceso
 
 vuelve a comenzar al encenderla el día siguiente.
 
 Recueden que esta aplicación debería estar funcionando las 24 Hs
 
 del día todos los días.
 
 La única manera, luego de cientos de pruebas, en la que tuve éxito
 
 para evitar el consumo de recursos, es utilizando procedimientos
 
 almacenados.
 
 Pero por ahora quisiera intentar evitar esto ya que me obligaría a
 
 realizar un gran trabajo sobre el sistema
 
 
 
 Cualquier sugerencia es bienvenida
 Muchas gracias
 Gustavo
 http://www.thesoftplaters.com.ar (http://www.thesoftplaters.com.ar)
- 
				Para liberar memoria no es suficiente cerrar el objeto
 
 m_Rs.Close
 
 Hay que ponerlo a Nothing para eliminarlo de la memoria
 
 m_Rs=Nothing
 
 Creo que por ahí viene el problema. Estas creando un montón de recordsets sin liberar memoria, hasta que se llena y peta.
 
 Espero que sea esto
 
 Salu2