Uncollected garbage
Kirill Ilyukhin
kilyukhin at gmail.com
Mon Dec 20 04:06:12 UTC 2021
Dear Shenandoah developers,
I am running a Tomcat server which uses java.awt.image to generate PNG
images under a RedHat build of OpenJDK 8 with Shenandoah GC. JVM heap usage
grows and the heap dump contains a lot of int[] buffers which are not
referenced from any CG root. Eclipse Memory Analyzer displays them under
the "unreachable_objects" tab. This does not happen when I run the server
with the default garbage collector.
I tried both openjdk-1.8.0.265 and openjdk-1.8.0.312.
Please let me know if you need more info.
VisualVM displays reference tree as follows:
int[]#680
|-[0] in int[][]#74
..|-bankdata in java.awt.image.DataBufferInt#74
....|-dataBuffer in sun.awt.image.IntegerInterleavedRaster#74
......|-raster in java.awt.image.BufferedImage#74
........|-bImg in sun.awt.image.BufImgSurfaceManager#74
..........|-surfaceManager in java.awt.image.BufferedImage#74
............|-bImg in sun.awt.image.BufImgSurfaceManager#74 (loop to bImg
in sun.awt.image.BufImgSurfaceManager#74)
............|-bufImg in sun.awt.image.BufImgSurfaceData#74
..............|-sdDefault in sun.awt.image.BufImgSurfaceManager#74
................|-surfaceManager in java.awt.image.BufferedImage#74 (loop
to surfaceManager in java.awt.image.BufferedImage#74)
........|-bufImg in sun.awt.image.BufImgSurfaceData#74
..........|-sdDefault in sun.awt.image.BufImgSurfaceManager#74
............|-surfaceManager in java.awt.image.BufferedImage#74
..............|-bImg in sun.awt.image.BufImgSurfaceManager#74
................|-surfaceManager in java.awt.image.BufferedImage#74 (loop
to surfaceManager in java.awt.image.BufferedImage#74)
..............|-bufImg in sun.awt.image.BufImgSurfaceData#74 (loop to
bufImg in sun.awt.image.BufImgSurfaceData#74)
|-data in java.awt.image.DataBufferInt#74
..|-dataBuffer in sun.awt.image.IntegerInterleavedRaster#74
....|-raster in java.awt.image.BufferedImage#74
......|-bImg in sun.awt.image.BufImgSurfaceManager#74
........|-surfaceManager in java.awt.image.BufferedImage#74
..........|-bImg in sun.awt.image.BufImgSurfaceManager#74 (loop to bImg in
sun.awt.image.BufImgSurfaceManager#74)
........|-bufImg in sun.awt.image.BufImgSurfaceData#74
..........|-sdDefault in sun.awt.image.BufImgSurfaceManager#74
............|-surfaceManager in java.awt.image.BufferedImage#74 (loop to
surfaceManager in java.awt.image.BufferedImage#74)
......|-bufImg in sun.awt.image.BufImgSurfaceData#74
........|-sdDefault in sun.awt.image.BufImgSurfaceManager#74
..........|-surfaceManager in java.awt.image.BufferedImage#74
............|-bImg in sun.awt.image.BufImgSurfaceManager#74
..............|-surfaceManager in java.awt.image.BufferedImage#74 (loop to
surfaceManager in java.awt.image.BufferedImage#74)
............|-bufImg in sun.awt.image.BufImgSurfaceData#74 (loop to bufImg
in sun.awt.image.BufImgSurfaceData#74)
|-data in sun.awt.image.IntegerInterleavedRaster#74
..|-raster in java.awt.image.BufferedImage#74
....|-bImg in sun.awt.image.BufImgSurfaceManager#74
......|-surfaceManager in java.awt.image.BufferedImage#74
........|-bImg in sun.awt.image.BufImgSurfaceManager#74 (loop to bImg in
sun.awt.image.BufImgSurfaceManager#74)
........|-bufImg in sun.awt.image.BufImgSurfaceData#74
..........|-sdDefault in sun.awt.image.BufImgSurfaceManager#74
............|-surfaceManager in java.awt.image.BufferedImage#74 (loop to
surfaceManager in java.awt.image.BufferedImage#74)
....|-bufImg in sun.awt.image.BufImgSurfaceData#74
......|-sdDefault in sun.awt.image.BufImgSurfaceManager#74
........|-surfaceManager in java.awt.image.BufferedImage#74
..........|-bImg in sun.awt.image.BufImgSurfaceManager#74
............|-surfaceManager in java.awt.image.BufferedImage#74 (loop to
surfaceManager in java.awt.image.BufferedImage#74)
..........|-bufImg in sun.awt.image.BufImgSurfaceData#74 (loop to bufImg in
sun.awt.image.BufImgSurfaceData#74)
Thank you,
Kirill
More information about the shenandoah-dev
mailing list