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 ^_^

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de beto.bateria

Perdona mi ignorancia, pero

Perdona mi ignorancia, pero MouseMotionListener implementa Runnable?

class Mapa extends JPanel implements MouseMotionListener
Mapa(){
    xP=yP=-1;
   
*    t=new Thread(this);

    setSize(1000,520);
    addMouseListener(this);
    addMouseMotionListener(this);
    setLocation(0,0);
    d=getSize();

*    t.start();

}

Imagen de Nagualo

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...