On Fri, 22 Dec 2023 14:37:26 GMT, Vladimir Sitnikov <vsitni...@openjdk.org> wrote:
>> I think there is a misundertanding. This PR is not intendend to reduce the >> *amount* of allocated heap, it is about sparing time by not creating >> *temporary copies*. The latter should be rather easy to check: Invoke >> `transferTo(out)` two times in a row and compare the *identity* of the two >> byte arrays passed to `out.write()`. If they stay the same, then apparently >> no *temporary copy* was created. Two achieve this, the BIS must be wrapper >> around an extendable input stream (like `FileInputStream`) so between calls >> the stream could get extended (e. g. by writing into the file). > > Markus, could you please double-check? A temporary allocation *is* an > allocation, and it is the point of the change to avoid allocation and copying > the temp data when the output stream is known to behave well. I am sure the > allocation "before the change" would be non-trivial (more than several KiB), > and after the change the allocation within .transferTo would be minimal (few > bytes) assuming the output stream has already allocated its buffer IMHO the trigger for this PR was sparing *time*, not necessarily sparing *bytes* (the default buffer size is just 8K); the latter certainly is a nice and beneficial side effect. But I may be wrong here, then the original contributor should chime in now and clarify. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/16879#discussion_r1435146173