Re: ResultSet.getBinaryStream nothing more than a ResultSet.getBytes()
От | Oliver Jowett |
---|---|
Тема | Re: ResultSet.getBinaryStream nothing more than a ResultSet.getBytes() |
Дата | |
Msg-id | 4161DF2A.6010408@opencloud.com обсуждение исходный текст |
Ответ на | ResultSet.getBinaryStream nothing more than a ResultSet.getBytes() call? (Jeffrey Tenny <jeffrey.tenny@comcast.net>) |
Список | pgsql-jdbc |
Jeffrey Tenny wrote: > I've been working to minimize the memory footprint of my application. > I was under the impression that ResultSet.getBinaryStream would be more > efficient than getBytes(). Certainly the documented semantics imply > that that is a goal (since you must process the InputStream from > getBinaryStream before the call to ResultSet.next() or even processing > the next column. > > But the following trace from a java heap profile suggests > that we're still just copying the bytes from the resultset as with > getBytes() instead > of streaming the ones already in memory, though perhaps it's because > I'm using a read(buf) call on the stream. The intermediate copy happens because the "in memory" version is a text-escaped representation of the bytea value, not just a straight bytearray. getBinaryStream() could indeed be smarter, avoiding the intermediate bytearray by decoding the text representation on demand. But noone has implemented this yet. Probably a better long-term solution is to move to binary-format results at the protocol level. That's somewhere on my todo list, but I'm not making much progress on it at the moment. -O
В списке pgsql-jdbc по дате отправления: