Estou desenvolvendo um software de descrição de objetos geológicos que utiliza uma linguagem visual (icônica) para suprir a falta de vocabulário da área. Tenho que carregar uns 60 ícones do BD.
Os ícones tem entre 20 e 250kb, sendo que a média fica em torno de 70kb.
Estou recuperando os ícones com o código abaixo (é um teste, então ignorem a falta de tratamento de exceções adequado)
\\Monto a query antes e armazeno em strQuery
PreparedStatement pstmt = connKnow.prepareStatement(strQuery);
pstmt.setInt(1, id);
ResultSet rs = pstmt.executeQuery();
BufferedImage icon = null;
try
{
icon = ImageIO.read(rs.getBlob(ICON).getBinaryStream());
}
catch (IOException ex)
{
ex.printStackTrace();
}
No entanto, está dando o seguinte erro:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.awt.image.DataBufferByte.<init>(DataBufferByte.java:58)
at java.awt.image.ComponentSampleModel.createDataBuffer(ComponentSampleModel.java:397)
at java.awt.image.Raster.createWritableRaster(Raster.java:938)
at javax.imageio.ImageTypeSpecifier.createBufferedImage(ImageTypeSpecifier.java:1056)
at javax.imageio.ImageReader.getDestination(ImageReader.java:2879)
at com.sun.imageio.plugins.png.PNGImageReader.readImage(PNGImageReader.java:1260)
at com.sun.imageio.plugins.png.PNGImageReader.read(PNGImageReader.java:1499)
at javax.imageio.ImageIO.read(ImageIO.java:1422)
at javax.imageio.ImageIO.read(ImageIO.java:1326)
//Logo em seguida, o trace aponta para a linha em que eu recupero o ícone
Alguém sabe como posso contronar este problema?