코드에서 메모리 부족 (힙 공간) 오류가 발생하므로 프로파일 링을 통해 생성 오류가 있음을 알았습니다 의 이미지.Java - BufferedImage (ImageIO.Read) OutOfMemory 힙 공간
내가 가지고있는 것은 작은 이미지로 이미지를 생성하는 클래스이며 그 클래스가 그려집니다.
문제는 JPanels에 1000 개 이상의 이미지를로드하려는 경우 탭이 나오기 전에 약 750 개가 발생하며 실제로 자바 메모리를 확장하지 않으려한다는 것입니다.
을 Heres 코드 : 그러니까 기본적으로class Foo extends JPanel{
private BufferedImage image;
private Image scaled;
public Foo(String link){
try{
setPreferredSize(new Dimension(50,50));
image = ImageIO.read(new URL(link)); //Cause for memory leak
scaled= image.getScaledInstance(100, 140, BufferedImage.SCALE_FAST);
image.flush();
//tried image = null; but did not help memory
}
catch(Exception e){}
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(scaled, 5, 5, null);
}
}
, 이미지에 링크를 읽을 수있는보다 효율적인 방법이, 또는 어떤 방법 불필요한 메모리를 제거? '당신은 아마 돈
...
drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
한 번에 1000 개의 이미지를 표시하고 있습니까? – Jivings
예 ... 많은 기억이 필요 하겠지만 아직도 메모리를 적게 읽어야합니다. – sl133
필요할 때 여러 장의 이미지를 읽지 않고 불필요한 이미지를 놓으십시오. –