fullGC가 지나치게 빈번한 원인과 해결 방안
1689 단어 jdk 기초
public static Image getImage(String path) {
ImageIcon icon = new ImageIcon(path);
Image img = icon.getImage();
return img;
}
해결 방법: 사실 Image든 BufferedImage든 그림의 넓이를 읽으면 그림을 모두 메모리에 불러올 필요가 없다. 그림의 넓이와 높은 정보는 사실 파일 헤더에 저장된 것이다. 서로 다른 형식으로 파일의 헤더 정보를 읽으면 넓고 높은 정보를 얻을 수 있다. ImageReader 코드는 다음과 같다.
Iterator readers = ImageIO.getImageReadersByFormatName(StringUtil.getFileSuffix(filePath));
ImageReader reader = (ImageReader)readers.next();
iis = ImageIO.createImageInputStream(is);
reader.setInput(iis, true);
return Pair.of(reader.getWidth(0),reader.getHeight(0));
참고 자료:http://itindex.net/detail/53283-%E7%B3%BB%E7%BB%9F-full-gc