在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;
}
如果任何人都可以指出正确的方向,那么可以创建这些插座,我们将非常感激。