【问题标题】:Memory leak generating thumbnail内存泄漏生成缩略图
【发布时间】:2013-12-03 22:08:05
【问题描述】:

当我使用下面的代码时,我遇到了内存泄漏。每次我运行代码时,应用程序的内存消耗都会增加。有谁知道我在用这段代码做什么,导致它在调用该控制器方法时不断增加内存消耗?

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();
}                           

【问题讨论】:

  • 您如何测量应用程序中使用的内存?它还会耗尽内存吗?
  • 怎么知道GC循环后内存没有释放?
  • 只使用windows的任务管理器并监控java进程。它第一次跳转 300MB 左右,然后每次后续运行使用相同数据调用该方法时跳转 100MB。每次我调用我的控制器方法时,这段代码 sn-p 都会被调用大约 200 次。
  • michal rybak 我如何检查?
  • 你可以使用jvisualvm之类的工具,它是免费的jdk自带的。我会一直调用控制器逻辑来查看程序是否内存不足。

标签: java spring spring-mvc memory-leaks


【解决方案1】:

好的,所以使用任务管理器是一种愚蠢的方式来真正检查这一点。使用 springinsight 我看到我的内存消耗没有增加。给您添麻烦了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 2011-10-22
    相关资源
    最近更新 更多