Portál AbcLinuxu, 12. května 2025 19:19

Dotaz: PostgreSQL & JDBC dirver - memory leak?

9.6.2015 23:05 MP
PostgreSQL & JDBC dirver - memory leak?
Přečteno: 554×
Odpovědět | Admin
Dobrý den Mám problém s importem dat (z Matlabu) s použitím JDBC (org.postgresql.jdbc4.Jdbc4Connection@476020ed) Myslím si že problém je v JDBC, jelikož mi to dělají všechny verze Matlabu co jsem zkoušel.

Vždy po určitém čase (když sypu data do databáze) mi to spadne na nedostatek paměti. Nevíte někdo co s tím? Díky moc.

java.lang.OutOfMemoryError: Java heap space

at org.postgresql.util.PGbytea.toBytesHexEscaped(PGbytea.java:40)

at org.postgresql.util.PGbytea.toBytes(PGbytea.java:35)

at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getBytes(AbstractJdbc2ResultSet.java:2441)

at org.postgresql.jdbc2.AbstractJdbc2ResultSet.internalGetObject(AbstractJdbc2ResultSet.java:172)

at org.postgresql.jdbc3.AbstractJdbc3ResultSet.internalGetObject(AbstractJdbc3ResultSet.java:36)

at org.postgresql.jdbc4.AbstractJdbc4ResultSet.internalGetObject(AbstractJdbc4ResultSet.java:312)

at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getObject(AbstractJdbc2ResultSet.java:2711)

at com.mathworks.toolbox.database.fetchTheData.dataFetch(fetchTheData.java:563)
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

10.6.2015 00:11 MP
Rozbalit Rozbalit vše Re: PostgreSQL & JDBC dirver - memory leak?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Asi jsem na to přišel.. Ve zdrojovém kodu Datainsert je jedno písmeno špatně... (hádejte které...)
switch sDbName  %Query only a single row where possible for speed   
  case {'MySQL'}
    e = exec(connect,['select ' insertField ' from ' tableName ' LIMIT 0']);
  case {'Microsoft SQL Server','ACCESS'}
    e = exec(connect,['select TOP 1 ' insertField ' from ' tableName]);
  case {'Oracle'}
    e = exec(connect,['select ' insertField ' from ' tableName ' where ROWNUM <= 1']); 
  case{'PostGreSQL'}
    e = exec(connect,['select ' insertField ' from ' tableName ' LIMIT 1']);
  otherwise
    e = exec(connect,['select ' insertField ' from ' tableName]);    
end
Takže je jasné co to dělá.. .. načítá to celou tabulku, která jak roste tak to dříve nebo později chcípne...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.