Subject Re: [firebird-support] Spurious "unable to allocate memory from operating system" errors
Author Mark Rotteveel
> > I'm having a strange memory problem when committing transactions with
> BLOBs in many threads, using Hibernate and Jaybird on Java with Firebird.
> Here's my setup:
> >
> > - Firebird 2.5
> > - JDK 1.6.0
> > - Jaybird 2.1.6
> > - Hibernate 3.5.6
> >
> > I have a daemon task which at certain times spawns many tasks that load
> a BLOB, does calculations on it, and stores the result either in a new row
> in another table, or it saves back a changed version of the original BLOB.
> The tasks correctly commit the transactions and close the hibernate
> session.
> >
> > After some time of correctly committing the transactions, the tasks
> start to give the following exception:
> >

<removed stacktrace for brevity>
> >

> > When this happens, every subsequent task will give the same error,
> "unable to allocate memory from operating system". However, when I wait several
> minutes and then start the tasks again, the tasks will run correctly again
> for some time, potentially starting to give the error again later on.
> >
> > This sounds to me like some kind of buffer is being overflowed. But what
> kind of buffer is it, and how can I avoid this from happening?
>
> Perhaps it is better to move this to the Firebird-java list?

To me it looks like Jaybird is just reporting a Firebird error:
Caused by: org.firebirdsql.jdbc.FBSQLException: I/O Exception. could not close blob: org.firebirdsql.gds.GDSException: unable to allocate memory from operating system

That last one is a Firebird error, at least it is not a Java OutOfMemoryError.

Mark
--
Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir
belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de