RFR: 8337681: PNGImageWriter uses much more memory than necessary [v2]

Sergey Bylokhov serb at openjdk.org
Tue Sep 3 17:10:32 UTC 2024


On Thu, 1 Aug 2024 21:51:04 GMT, Daniel Gredler <duke at openjdk.org> wrote:

>> At some point the `JPEGImageWriter` was optimized to reduce duplication / copying of rasters and data buffers (see `JDK-6266748`). However, `PNGImageWriter` never received a similar optimization, and is making unnecessary copies of raster and data buffers whenever PNG images are written.
>> 
>> Measurements: In a local test, `PNGImageWriter.write( )` and callees were initially showing up as an allocation hotspot (~400k objects / ~65 MB allocated), but after these optimizations I'm seeing much better numbers (~400 objects / ~740 KB allocated).
>
> Daniel Gredler has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - JDK-8337681: add tests for TYPE_4BYTE_ABGR
>  - JDK-8337681: add tests for TYPE_INT_RGB

src/java.desktop/share/classes/com/sun/imageio/plugins/png/PNGImageWriter.java line 924:

> 922:         for (int row = minY + yOffset; row < minY + height; row += ySkip) {
> 923:             Raster ras;
> 924:             if (image instanceof BufferedImage bi) {

Do we really need to run these two blocks in the loop for each iteration?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/20432#discussion_r1742404140


More information about the client-libs-dev mailing list