java.lang.OutOfMemoryError: Java heap space problemas en el metodo paint
Hola tengo una clase extendida de JPanel la cual tiene un metodo paint en el cual ultilizo la tecnica de el doble bufer para hacer una mapeador cada que el mause se mueva el metodo paint se manda llamar pero al crear la imagen que me servira de doble buffer me manda el error del heap space ...
Nota aumentar el tamaño del heap tan solo me retrasa la llamada del error, no importa el tamaño que le asigne al heap este termina llenandose no se si exista una manera de liberar la memoria del heap cada llamada al paint
esta es mi clase
class Mapa extends JPanel implements MouseMotionListener
{
Image area;
Dimension d;
int ban;
int xP,yP,xD,yD;
Mapa()
{
xP=yP=-1;
setSize(1000,520);
addMouseMotionListener(this);
setLocation(0,0);
d=getSize();
}
public void paint(Graphics g)
{
area=createImage(d.width, d.height); //// esta linea es la que dispara el error
offG=area.getGraphics();
offG.setColor(Color.BLACK);
offG.fillRect(0,0,1000,600);
offG.setColor(Color.WHITE);
for(int j=0;j<13;j++)
{
for(int i=0;i<25;i++)
{
if(!bd.getNombreMalla(matM[j][i]).equals(""))
{
offG.drawImage(sprites.getSprite("Paleta/"+bd.getNombreMalla(matM[j][i])),i*40,j*40,this);
}
}
}
int aux=40;
for (int i=0;i<14;i++)
{
offG.drawLine(0,aux,1000,aux);
aux+=40;
}
aux=40;
for (int i=0;i<24;i++)
{
offG.drawLine(aux,0,aux,520);
aux+=40;
}
offG.setColor(Color.RED);
if(tiP==1)
{
offG.drawRect(xP,yP,taP*40,taP*40);
}
else if(tiP==2)
{
}
else if(tiP==3)
{
}
g.drawImage(area,0,0,this);
area=null;
}
public void mouseDragged(MouseEvent e1)
{
if(ban==5)
{
int xA,yA;
xD=e1.getX()/40;
yD=e1.getY()/40;
bd.altaMalla(matM[yD][xD]);
xP=(e1.getX()/40)*40;
yP=(e1.getY()/40)*40;
repaint();
}
}
public void mouseMoved(MouseEvent e1)
{
xP=(e1.getX()/40)*40;
yP=(e1.getY()/40)*40;
repaint();
}
}
y esta es la descripcion completa de la expecion
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
at java.awt.image.DataBufferInt.(DataBufferInt.java:41)
at java.awt.image.Raster.createPackedRaster(Raster.java:458)
at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015)
at sun.awt.Win32GraphicsConfig.createAcceleratedImage(Win32GraphicsConfig.java:313)
at sun.awt.windows.WComponentPeer.createImage(WComponentPeer.java:565)
at java.awt.Component.createImage(Component.java:3179)
at java.awt.Component.createImage(Component.java:3176)
at java.awt.Component.createImage(Component.java:3176)
at java.awt.Component.createImage(Component.java:3176)
at java.awt.Component.createImage(Component.java:3176)
at Mapeador$Mapa.paint(Mapeador.java:617)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5122)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:285)
at javax.swing.RepaintManager.paint(RepaintManager.java:1128)
at javax.swing.JComponent._paintImmediately(JComponent.java:5070)
at javax.swing.JComponent.paintImmediately(JComponent.java:4880)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:723)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:679)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:659)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
De antemano gracias por la ayuda ^_^
- Inicie sesión o regístrese para enviar comentarios
Perdona mi ignorancia, pero
Perdona mi ignorancia, pero MouseMotionListener implementa Runnable?
mm no esa parte del codigo no
mm no esa parte del codigo no la puse por que tambien es un hilo la clase y tambien tiene los metodos mouseEntered cliked pressed pero esos no los puse para que el codigo estubiera mas redusido ya que el problema no esta en esos metodos...