¿Error 7 Memoria Insuficiente?

Mi nombre es Ronald y tengo una pregunta sobre Visual Basic:
Lo que pasa es que estoy diseñando un sistema que se encarga de reportar las actividades de mantenimiento y limpieza en una planta de tratamiento de Aguas asignadas a a los trabajadores. Ademas de eso el sistema lleva el control de algunos datos referntes a almacen, personal y las actividades que se pueden realizar en los diferentes componentes de la planta.
Ya esta casi listo y se ejecuta sin problemas. Le e genereado un paquete de instalación con el "Asistente para empaquetado y distribución" para probarlo e otras PC y arranque normal. El Problema es que cuando estoy utilizándolo pasado un rato se me desestabiliza hasta llegar al punto que sale un mensaje que dice:"Error 7 Memoria Insuficiente" cerrándose mi programa por completo. En el caso de ejecutarlo dentro del Visual Basic(tiempo de ejecución) sale el mismo error y se cierra solo mi programa pero no el Visual Basic.
Por favor Agradecería su ayuda dado que tengo que terminar este trabajo en esta semana.
Gracias de antemano por la atención.
Ronald
[email protected]

3 Respuestas

Respuesta
1
Es que ese error puede darse por muchos motivos:
- Que tengas muchos programas residentes en memoria
- Que tengas muchas aplicaciones abiertas
- Que no descargues los formularios.
- Que tengas alguna función que sea demasiado larga
- Que hagas alguna consulta con varias funciones SQL.
- Que no cierres las consultas SQL.
Siento no ser más preciso, pero como ves ese error es tan genérico que puede ser por muchos motivos, te dije el del bucle por que fue lo que me paso a mi una vez.
Bueno no creo que sea el error de un bucle infinito. ¿Podrías darme otra solución por favor?
Este error suele aparecer cuando se ejecuta un bucle infinito, es decir un bucle que nunca termina.
Mirate el código haber si ese es tu caso.
El que se te cierre el programa cuando lo ejecutas, pasa siempre que hay algún error, y el VB no se cierra por que el error es de tu programa y no del VB.
Espero haberte ayudado, si tienes alguna duda más, dímela y haré todo lo posible por solucionartela.
Respuesta
1
Bueno si quieres mandame el código fuente de tu aplicación para ver si localizo el problema, mi correo es [email protected]
Bueno tanto en mi PC como en la Pc donde lo probé sale el mismo error. No se porque pasa eso. Y si sale el error en 2 pcs entonces no creo que sea por algún archivo de windows
Ok ya te lo mande a tu correo esperare tu respuesta.
[email protected]
¿Pero antes no te daba ese problema?, es decir, ¿ahora tienes un instalador y cuando lo pones en otra pc comienza a dar problemas no?, ¿O también es en la máquina donde lo desarrollaste?
Yo lo que hecho para algunas aplicaciones sin tener que recurrir a instalaciones (francamente no soy partidario de eso, jejej) es copiar a la carpeta donde esta el ejecutable todas las dlls y archivos que requiera el sistema, claro no es lo más óptimo y lo que he hecho no requiere de tanto y no he tenido ningún problema.
Tal vez se halla dañado algún archivo de la pc destino o tengas en tu programa algún ciclo que te gasta recursos del sistema, pero si antes no daba ese problema, hasta que lo pasaste a otra pc con el instalador, a la mejor halla dañado algún archivo en la otra pc.
Pues mira apenas en la mañana revise el programa pero solo un rato, bueno me marca que estas usando un control para las funciones de botones, yo no lo tengo instalado, por lo que el sistema me lo cambia por un picture box, además tuve que cambiar las funciones para desactivarlo cuando el código lo pedía y también cambiar la referencia al control del ado.
Pues mira lo tuve trabajando toda la mañana, no he acabado de revisarlo por completo porque es muy extenso, pero nunca me dio ningún problema, como te digo lo deje como 40 minutos sin tocar nada esperando a que con el tiempo fallara pero nada, el sistema se mantuvo estable, lo que pienso y solo es eso, es que tal vez el control que usas gaste mucha memoria o algo que provoca inestabilidad al sistema, supongo que ya lo haz usado antes o no, pero a la mejor pudiera ser eso, porque como te digo yo no lo tengo y nunca se me presentó ninguna falla, y eso si es raro porque esperaba que eso fuera pasar, pero no, funciona bien lo que probé y me dices que prácticamente haciendo cualquier cosa de pronto salta el error.
No se, tal vez si le sacas una copia a tu sistema y reemplazas los botones usando el control, por otros estándares (poniéndole los iconos que usas) a la mejor no te da fallas, claro es solo lo que pienso porque la verdad no encuentro nada malo en el sistema, pensaba que a la mejor por ahí tenías ciclos que te gastaban el sistema pero no, los únicos son para leer las bases, suerte y si puedo hacer algo por ti aquí estoy.
Hola te e mandado a tu email el archivo del control que te falta para que lo pruebes. Espero que me ayudes y gracias
Te mande una respuesta al correo
Respuesta
1
Ronald con la información que me das la verdad es que no te puedo contar mucho, de todas formas te daré unas cuantas claves para que compruebes. Cuando el ejecutable después de estar en ejecución durante un tiempo, da el error de memoria insuficiente, es porque está superando la ventana de memoria que le asigna el s.o.. La causa de esto casi siempre es la no liberación de objetos una vez no utilizados. Comprueba que cada vez que crees un objeto lo liberes. Seguramente estés creando nuevos objetos (si trabajas con clases) cada vez que entres en un form (pensando en algo..) y no lo liberes al salir, con lo cual estés llenando la memoria.
Espero que te sirva, sino me contestas y si puedes me das más información sobre la aplicación.
Ya te mande el código
Haz una prueba y me cuentas:
En la clase ClsCone modifica la función conectar de la siguiente forma:
Public Function ConectarAcces(cad As String, SQLstring As String) As Recordset
'Modificación
If db Is Nothing Then Set db = New Connection
'Fin modificación
If cad <> "" Then
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + cad + ";"
Set rs = New Recordset
rs.Open SQLstring, db, adOpenKeyset, adLockOptimistic
Set ConectarAcces = rs
End If
End Function
¿Me podes mandarme tu mail para mandarte mi código para que lo veas bien?
Otra cosa es que deseo que hagas cuando lo revises es que generes el instalador con el "Asistente para empaquetado y distribución" por que ami me sale otro erro allí también. Sale un error que dice: Error inesperado 28:Espacio de pila Insuficiente. ¿Por qué sucedió esto?
Bueno primero mandame tu mail y luego hablamos
Gracias por la ayuda amigo pero ahora tengo un problema más importante que este.
Te cuento:
Lo que pasa es que tengo que presentar este avance dentro de unas 6 horas aproximadamente y debo generar el instalador hasta donde halla llegado pero el problema es que utilizando el ASISTENTE DE EMPAQUERAMIENTO Y DISTRIBUCIÓN me sale(al darle finalizar) un error inesperado de espacio de pila insuficiente (y solo genera la carpeta "Support" ) y me esta volviendo loco ya que se me acaba el tiempo.Por eso he dejado de lado el problema anterior y te suplico que me ayudes a solucionar este problema.
Y también dime si es que existe otro software que haga lo mismo que el ASISTENTE DE EMPAQUERAMIENTO Y DISTRIBUCIÓN .
Estaré esperando tu respuesta amigo
Mi mail es:
[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas