2012-01-11 7 views
11

He leído todas las publicaciones de "Recurso de sistema excedido", pero esto no se parece en nada a ellas. Pasé las últimas 3 horas buscando una solución. No tengo muchas conexiones/declaraciones/resultados y siempre cierro todas. Mi código solía funcionar pero ahora recibo la excepción "Exceso de recursos del sistema", no durante las consultas, pero CUANDO TRATE DE CONECTAR. No cambié nada de mi código, sin embargo, no funciona en este momento, excepto 1 de cada 10 veces que lo intento. Traté de cambiar algunas cosas, pero no hubo diferencia. Mis archivos de acceso son 15 - 50 MB. Mi código es:"Recurso del sistema excedido" durante la conexión al archivo de acceso a través de Java jdbc odbc

private String accessFilePath; 
private Connection myConnection; 
public boolean connectToAccess(String myAccessFilePath) { 
    accessFilePath = myAccessFilePath; 
    //Get connection to database 
    try { 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     // set properties for unicode 
     Properties myProperties = new Properties(); 
     myProperties.put("charSet", "windows-1253"); 
     myConnection = DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=" + accessFilePath, myProperties); // I get the exception here 
    } catch (Exception ex) { 
     System.out.println("Failed to connect to " + accessFilePath + " database\n" + ex.getMessage()); 
     return false; 
    } 
    return true; 
} 

Lo que ahora es diferente de otros tiempos? ¿Los archivos de Access mantienen abiertas las conexiones anteriores? ¿Qué puede estar mal aquí?

+1

¿Ha intentado reiniciar su sistema operativo? Podría ser que algunos recursos relacionados con la conexión nunca fueron desasignados debido, tal vez, a ejecuciones interrumpidas de su programa que nunca lograron cerrar su conexión. –

+0

He intentado reiniciar ya. Fue mi primer pensamiento. Me resulta muy extraño que después de un nuevo reinicio, obtenga la excepción durante la primera conexión. Es una locura ... También recibo la misma excepción para varios archivos de acceso –

+1

Guau, eso es extraño. Lo siguiente que debes probar: ¿puedes acceder a estos archivos desde C# o VB usando ADO? –

Respuesta

6

Bien, encontré la solución. Al principio comencé un nuevo proyecto de Java y copié las mismas líneas de código allí. Me conecté con éxito a mis archivos cada vez que lo intenté en mi nuevo proyecto. Así que me llamó la atención. Miré la configuración de mi máquina virtual. En mi programa original HE ASIGNADO DEMASIADA MEMORIA A LA MÁQUINA VIRTUAL por lo que no quedaba memoria ni siquiera para una única conexión a los archivos.

Mis ajustes eran -> Opciones de VM: -Xmx1536m -Xms768m (un poco excesivo)

lo cambié a -> Opciones de VM: -Xmx512m -Xms256m

y funcionó. Gracias por tus comentarios. Espero que esto ayude a otras personas, porque paso muchas horas para encontrarlo.

Cuestiones relacionadas