RFR: 8294696 - BufferedInputStream.transferTo should drain buffer when mark set [v2]
Markus KARG
duke at openjdk.org
Wed Oct 19 08:16:02 UTC 2022
On Mon, 3 Oct 2022 05:54:31 GMT, Markus KARG <duke at openjdk.org> wrote:
>> This PR implements JDK-8294696.
>
> Markus KARG has updated the pull request incrementally with one additional commit since the last revision:
>
> Checking explicitly -1 instead of < 0
I think before we give up, we should consider the alternatives, as the performance benefit of this PR is just too big to give up!
* Alternative A: I check the existing code to proof that we do not need any safety means if that is OK for everybody (is it?).
* Alternative B: Instead of double-buffering I drop the original buffer and use a same-size replacement each time the buffer was drained inside of `transferTo`. This is a rather cheap solution and rather perfectly prevents OOME, as I drop *first* before reallocating.
* Alternative C: Instead of double-buffering I zero-out (using `Arrays.fill()`) the original buffer after draining it. This would be a super-cheap alternative if somebody knows a hardware-accelerated array cleanup (do you?), but unfortunately the current code seems to be a simple Java-loop, actually.
I do not agree to close this PR unless we have a proof that the security problem really exists (I still can check that) *and* we didn't find a well-performing workaround.
-------------
PR: https://git.openjdk.org/jdk/pull/10525
More information about the core-libs-dev
mailing list