Hello.

Concerning about use of memory at driver,
I briefly surveyed client driver program to find where *whole of* object was expanded into memory before sending it, from code searched with keyword "writeScalarStream" as starting point of survey.

The result was as next.

When org.apache.derby.client.am.Blob object was constructed with parameter named binaryString typed as byte[],
whole of object is expanded into memory before the call of constructor.
But this seems not to be the scenario when InputStream was passed to driver, reading around setBinaryStreamX method in the org.apache.derby.client.am.PreparedStatement class.

When org.apache.derby.client.am.Blob object was constructed with parameter named binaryStream typed as InputStream,
it seems that whole of object was *not* expanded into continuous memory.
//Here, "continuous" means that it is true that the object is expanded into *upper limited* memory array //segmentedly at writeScalarStream method in org.apache.derby.client.net.Request.

I'm not sure .....

My question is what was the stackTrace found in DERBY-550 ...
Does anyone have any information ?
I searched received mails in my mailbox , but could not found the information of stackTrace ....

Now I found it not clear that the driver is writting all the file into memory (RAM) before sending ...

Deeper survey may be needed yet ...

Best regards.


Bryan Pendleton wrote:

> Kristian Waagan commented on DERBY-1471:
> ----------------------------------------
>
> The approach is to exhaust the application stream and copy it into
> memory to determine the length. If the data is too big to fit in memory,
> the client will fail with an out-of-memory exception.

That seems fine to me. This is already the case with the current
API and implementation, I believe, so we aren't making anything worse.

In practice, do application programs end up having *two* copies of the
BLOB/CLOB in client-side memory at the same time, one copy inside the Derby
code and one copy in the application code? Or is there actually only a
single copy of the BLOB/CLOB in memory? I'm asking only because it seems
like we might want to be clear about this in our documentation.

thanks,

bryan




--
/*

       Tomohito Nakayama
       [EMAIL PROTECTED]
       [EMAIL PROTECTED]
       [EMAIL PROTECTED]

       Naka
       http://www5.ocn.ne.jp/~tomohito/TopPage.html

*/

Reply via email to