【发布时间】:2011-12-11 08:11:28
【问题描述】:
我是面向对象编程的新手。我用静态方法创建了一个类,该方法以不同的时间间隔捕获屏幕上各种不同大小的矩形。使用静态 Robot 实例将捕获存储在静态 BufferedImage 中:
myStaticBufferedImage = myStaticRobot.createScreenCapture(arbitrarySizeRectangle);
对数据执行一些操作(包括偶尔将图像写入 bmp 文件)。在下一次捕获时,不需要上一次捕获的图像数据。
由于 bufferedImage 将包含可变大小的数据,最高可达我的屏幕分辨率的全尺寸,我应该在我的应用程序开始使用它之前声明它吗?
private static BufferedImage myStaticBufferedImage = new BufferedImage(RESOLUTION_X, RESOLUTION_Y, APPROPRIATE_IMAGE_TYPE);
当我重复捕获图像时,这是否会在内存中分配一个可重复使用的块而没有任何泄漏或效率低下?还是每次我使用 createScreenCapture 方法时都会填充越来越多的内存并简单地为 myStaticBufferedImage 分配一个新指针?
我在 OSX Lion 上运行这个应用程序以及一些 CPU 密集型软件。内存管理的最佳实践是什么?谢谢!
【问题讨论】:
标签: java memory-management bufferedimage awtrobot