De antemano gracias por sus respuestas, y gracias porque estos foros sirven mucho.
La pregunta es que está mal en este código, o que falta (ejemplo preparado para el foro) que el uso de memoria aumenta entre 5 y 10 MB por cada ciclo en que vuelvo a ejecutar la consulta, que trae unos 20.000 registros. Si quito columnas o limito las filas, aunque el consumo es menor, el error persiste.
- Code: Select all Expand view
- oDbProdu := Nil
cSelect := 'Produ.CRAYON1, ' + ;
'Produ.COD_UNIF, ' + ;
'Produ.CODIGO, ' + ;
'Produ.NOMBRE, ' + ;
'Produ.PRESENT, ' + ;
'Produ.CONTEN, ' + ;
'Produ.UNIMEDI, ' + ;
if( cGlbTabIteCol9 = 'F', 'Produ.REFERPRO, ', 'Prove.FANTASIA, ' ) + ;
'Produ.CODUNIVER, ' + ;
'Produ.CODICOMU '
c:= "select" + cSelect + " from TABLAITE as Produ left join PROVEDOR as Prove on Prove.RUT = Produ.RUTPROV"
for n = 1 to 10 // ciclo para demostrar el hecho
if valtype(oDbProdu) = 'O'
release oDbProdu // probé oDbProdu:end() y tampoco libera
endif
oDbProdu:= oMyCon:Rowset(c, oMyCon)
msginfo( 'espero... y presiono enter')
next
Lo he probado en dos ddbb diferentes, MySQL y MaríaDB de 2 servidores diferentes, y es lo mismo.
Y además, si luego paso la consulta un oBrw (XBrowse) y la navego... los desplazamientos en el oBrw también, aunque menos, aumentan constantemente el consumo de memoria.
Esto es con HB 3.2 + FWH 21.06
Gracias