Skip to Main Content

Java APIs

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

java.lang.OutOfMemoryError: Java heap space whicle socket reading

793912Feb 22 2009 — edited Mar 14 2009
Hi all
I'm on a program of reading incoming image set through socket.

This works perfect for some time.
But after some time it gives an error
java.lang.OutOfMemoryError: Java heap space
        at java.awt.image.BufferedImage.getRGB(Unknown Source)
        at com.sun.kvem.midp.GraphicsBridge.loadImage(Unknown Source)
        at com.sun.kvem.midp.GraphicsBridge.createImageFromData(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.sun.kvem.sublime.MethodExecution.process(Unknown Source)
        at com.sun.kvem.sublime.SublimeExecutor.processRequest(Unknown Source)
        at com.sun.kvem.sublime.SublimeExecutor.run(Unknown Source)
This is my client code
public class ChangeImage extends Thread
{

    private SocketConnection sock = null;
    private Image img = null;
    private CanvasKey canvas = null;
    private InputStream in = null;

    public ChangeImage(SocketConnection sock, Canvas canvas) throws IOException
    {
        this.sock = sock;
        this.canvas = (CanvasKey) canvas;
        in = sock.openInputStream();
    }

    public void run()
    {
        super.run();
        short length;

        while (true)
        {
            DataInputStream din = null;
            try
            {
                din = new DataInputStream(in);

                length = din.readShort();	// to determine next data packet size

                byte[] arr = new byte[length];  // next data packet store here

                din.readFully(arr);  //read image


                img = Image.createImage(arr, 0, arr.length);

                canvas.setImage(img);
                
                ChangeImage.sleep(50);
            }
            catch (Exception ex)
            {
                ex.printStackTrace();
            }
        }
    }
}
Can u please tell me y?
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Apr 11 2009
Added on Feb 22 2009
15 comments
776 views