Objetos

02/12/2004 - 13:59 por Eugenia Moya | Informe spam
Tengo en mi programa una estructura asi:

Reglas reg = new Reglas();
DataTable data = new DataTable();
data = reg.mimetodo();

En el metodo mi metodo:
inicio
accesos oAccess = new accesos();
oAccess = XX;
oAccess.Insertar();
Fin

Esto funciona bien, y necesito tenerlo asi. El tema es que cuando llamo
muchas veces (140 aprox) a esta rutinita, se cuelga mi programa.
Yo creo que es un problema de memoria, no estoy cerrando los objetos (creo
que es eso) y me gustaria que me indiquen, cual es el mejor tratamiento para
un objeto (cuando y como debo cerrarlo, si es que debo hacerlo o de eso se
encarga el recolector de basura..).
Gracias.

Preguntas similare

Leer las respuestas

#1 Guillermo guille
02/12/2004 - 15:22 | Informe spam
En principio la creación del objeto "accesos" no es necesaria, ya que se supone
que le asignas el objeto a usar (XX), si esa asignación (el objeto XX) siempre
es la misma, podrías quitarla del método y declarar oAccess como campo de la
clase de forma que solo se asigne XX cuando sea necesario, de esta forma el
objeto no se destruirá (no irá a parar al gestor de GC para descartar el
objeto) y tendrás algo de menos "carga de trabajo".

Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Te invito a mi sitio dedicado al VB y más...
http://www.elguille.info/
http://www.mundoprogramacion.com/
(puede que el correo usado sea anti-spam)


"Eugenia Moya" wrote in message
news:
Tengo en mi programa una estructura asi:

Reglas reg = new Reglas();
DataTable data = new DataTable();
data = reg.mimetodo();

En el metodo mi metodo:
inicio
accesos oAccess = new accesos();
oAccess = XX;
oAccess.Insertar();
Fin

Esto funciona bien, y necesito tenerlo asi. El tema es que cuando llamo
muchas veces (140 aprox) a esta rutinita, se cuelga mi programa.
Yo creo que es un problema de memoria, no estoy cerrando los objetos (creo
que es eso) y me gustaria que me indiquen, cual es el mejor tratamiento para
un objeto (cuando y como debo cerrarlo, si es que debo hacerlo o de eso se
encarga el recolector de basura..).
Gracias.

Respuesta Responder a este mensaje
#2 Eugenia Moya
02/12/2004 - 16:25 | Informe spam
Gracias por tu respuesta, te hago una pregunta puntual: no hace falta que uno
elimine los objetos de memoria? Eso lo maneja .Net? no hace falta que yo
escriba miObj = null o miObj.dispose por cada new que haga?

"Guillermo 'guille'" wrote:

En principio la creación del objeto "accesos" no es necesaria, ya que se supone
que le asignas el objeto a usar (XX), si esa asignación (el objeto XX) siempre
es la misma, podrías quitarla del método y declarar oAccess como campo de la
clase de forma que solo se asigne XX cuando sea necesario, de esta forma el
objeto no se destruirá (no irá a parar al gestor de GC para descartar el
objeto) y tendrás algo de menos "carga de trabajo".

Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Te invito a mi sitio dedicado al VB y más...
http://www.elguille.info/
http://www.mundoprogramacion.com/
(puede que el correo usado sea anti-spam)


"Eugenia Moya" wrote in message
news:
> Tengo en mi programa una estructura asi:
>
> Reglas reg = new Reglas();
> DataTable data = new DataTable();
> data = reg.mimetodo();
>
> En el metodo mi metodo:
> inicio
> accesos oAccess = new accesos();
> oAccess = XX;
> oAccess.Insertar();
> Fin
>
> Esto funciona bien, y necesito tenerlo asi. El tema es que cuando llamo
> muchas veces (140 aprox) a esta rutinita, se cuelga mi programa.
> Yo creo que es un problema de memoria, no estoy cerrando los objetos (creo
> que es eso) y me gustaria que me indiquen, cual es el mejor tratamiento para
> un objeto (cuando y como debo cerrarlo, si es que debo hacerlo o de eso se
> encarga el recolector de basura..).
> Gracias.
>



Respuesta Responder a este mensaje
#3 Guillermo guille
02/12/2004 - 20:01 | Informe spam
Si el objeto no "retiene" recursos externos no es necesario (incluso, según la
documentación, no es recomendable).
En el caso de que ese objeto tenga acceso a recursos externos debería tener un
método Close que se encargue de liberarlos, en ese caso, se debería llamar a
ese método, aunque normalmente la propia clase se encargará de liberar esos
recursos al destruirse, de todas formas, es conveniente averiguar si los
objetos que vamos a usar tienen o no ese método para "cerrar" de forma
explícita; por ejemplo, la clase Form tiene el método Close que siempre
deberíamos llamar para cerrar un formulario, aunque si no lo usamos, igualmente
se liberarán los recursos, pero será cuando el recolector de basura lo
destruya.

Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Te invito a mi sitio dedicado al VB y más...
http://www.elguille.info/
http://www.mundoprogramacion.com/
(puede que el correo usado sea anti-spam)


"Eugenia Moya" wrote in message
news:
Gracias por tu respuesta, te hago una pregunta puntual: no hace falta que uno
elimine los objetos de memoria? Eso lo maneja .Net? no hace falta que yo
escriba miObj = null o miObj.dispose por cada new que haga?

"Guillermo 'guille'" wrote:

En principio la creación del objeto "accesos" no es necesaria, ya que se
supone
que le asignas el objeto a usar (XX), si esa asignación (el objeto XX)
siempre
es la misma, podrías quitarla del método y declarar oAccess como campo de la
clase de forma que solo se asigne XX cuando sea necesario, de esta forma el
objeto no se destruirá (no irá a parar al gestor de GC para descartar el
objeto) y tendrás algo de menos "carga de trabajo".

Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Te invito a mi sitio dedicado al VB y más...
http://www.elguille.info/
http://www.mundoprogramacion.com/
(puede que el correo usado sea anti-spam)


"Eugenia Moya" wrote in message
news:
> Tengo en mi programa una estructura asi:
>
> Reglas reg = new Reglas();
> DataTable data = new DataTable();
> data = reg.mimetodo();
>
> En el metodo mi metodo:
> inicio
> accesos oAccess = new accesos();
> oAccess = XX;
> oAccess.Insertar();
> Fin
>
> Esto funciona bien, y necesito tenerlo asi. El tema es que cuando llamo
> muchas veces (140 aprox) a esta rutinita, se cuelga mi programa.
> Yo creo que es un problema de memoria, no estoy cerrando los objetos (creo
> que es eso) y me gustaria que me indiquen, cual es el mejor tratamiento
> para
> un objeto (cuando y como debo cerrarlo, si es que debo hacerlo o de eso se
> encarga el recolector de basura..).
> Gracias.
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida