我是面向对象编程的新手。我用静态方法创建了一个类,该方法以不同的时间间隔捕获屏幕上各种不同大小的矩形。捕获使用静态 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 密集型软件。内存管理的最佳实践是什么?谢谢!