【发布时间】:2019-07-09 10:23:29
【问题描述】:
我正在编写远程桌面应用程序。所以我通过套接字将图像从一台机器传输到另一台机器作为字节数组。收到字节数组后,我将其转换为图像并在面板上绘制。代码大致如下所示
imageBytes = //read from socket.
InputStream in = new ByteArrayInputStream(imageBytes);
BufferedImage bufferedImage = ImageIO.read(in);
Image image = Toolkit.getDefaultToolkit().createImage(bufferedImage.getSource());
Image scaledImage = image.getScaledInstance(rmdPanel.getWidth(),rmdPanel.getHeight() ,Image.SCALE_FAST);
Graphics graphics = rmdPanel.getGraphics();
graphics.drawImage(scaledImage, 0, 0, rmdPanel.getWidth(),rmdPanel.getHeight(),rmdPanel);
我还存储 imagebytes 直到下一张图片出现(用于比较)。现在我在这段代码中得到了 java 内存不足异常(在接收字节数组时)。我的堆大小为 128 mb-512 mb。发送的图像字节最大为 3mb。
【问题讨论】:
-
你能贴出从套接字读取字节数组的代码吗?您说接收字节数组时发生异常,所以这可能是有问题的代码所在。
-
您粘贴的代码没有任何突出之处。你要关闭你的流吗?当您说您以 128mb-512mb 运行时,您是什么意思?你的 Xms Xmx 值是多少?
标签: java sockets networking network-programming awt