2013-12-03 5 views
0

Когда я использую приведенный ниже код, я испытываю утечку памяти. Каждый раз, когда я запускаю код, потребление памяти приложения увеличивается. Кто-нибудь знает, что я делаю с этим кодом, который заставляет его продолжать увеличивать потребление памяти при вызове метода контроллера?Ошибка утечки памяти.

BufferedImage originalImage = ImageIO.read(new File(pageService.getBaseLocation() + File.separator + page.getSha1())); 
if(originalImage != null){ 
    int type = originalImage.getType() == 0? BufferedImage.TYPE_INT_ARGB : originalImage.getType(); 
     int width = new Double(originalImage.getWidth() * (300.0/originalImage.getHeight())).intValue(); 
     BufferedImage resizedImage = new BufferedImage(width,300, type); 
     Graphics2D g = resizedImage.createGraphics(); 
     g.setComposite(AlphaComposite.Src); 
     g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
       RenderingHints.VALUE_ANTIALIAS_ON); 
     g.drawImage(originalImage, 0, 0, width, 300, null); 
     g.dispose();  






     ImageIO.write(resizedImage,"png",response.getOutputStream()); 


     response.flushBuffer(); 

     response.getOutputStream().close(); 
}       
+0

как вы измеряете память, используемую в приложении? а также когда-либо заканчивается память? –

+0

Откуда вы знаете, что память не освобождается после цикла GC? –

+0

Просто используя диспетчер задач из окон и контролируйте процесс Java. Он перескакивает 300 МБ или около того в первый раз, а затем 100 МБ при каждом последующем запуске, вызывающем метод с теми же данными. Каждый раз, когда я вызываю свой метод контроллера, этот фрагмент кода вызывается примерно 200 раз. – flips

ответ

0

Хорошо, поэтому использование диспетчера задач было глупым способом действительно проверить это. Используя Springinsight, я вижу, что потребление памяти не растет. Извините за беспокойство.

Смежные вопросы