java.net.socketexception:打开的文件太多,/ tmp / image2002515050983683549.tmp

时间:2013-07-01 22:19:17

标签: java linux sockets debian

在Debian上运行我的一个java程序大约30个多小时后,我得到“java.net.socketexception:打开的文件太多了。”

我使用下面的命令查找打开的套接字

lsof -P -n -p 4910

运行几个小时后,我可以看到许多打开的插座,如下面的

/tmp/imageio2002515050983683549.tmp
/tmp/imageio996828308430904152.tmp
/tmp/imageio5844657308570033292.tmp

上面的插座可以与什么相关?在我的程序中有一个方法,它在图像上写入文本,这里是代码。这种方法可以创建那些套接字而不是关闭它们吗?

public String writeTextOnImage(String imagePath, String text) throws Exception
{
    int x = 30;
    int y = 300;

    String editedImageName = Tools.GenerateRandomString() + ".jpg";

    BufferedImage img = ImageIO.read(new File(imagePath));
    int width = img.getWidth();
    int height = img.getHeight();

    BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.SCALE_SMOOTH);
    Graphics2D g2d = bufferedImage.createGraphics();

    // draw graphics
    g2d.drawImage(img, 0, 0, null);
    g2d.setPaint(Color.RED);
    g2d.setFont(new Font("Arial", Font.BOLD, 30));
g2d.drawString(text , x, y);

    g2d.dispose();

    File file = new File(editedImageName);
    ImageIO.write(bufferedImage, "jpg", file);

    return editedImageName;
}

如果任何人都可以指出正确的方向,那么可以创建这些插座,我们将非常感激。

0 个答案:

没有答案