可能的Apple JVM错误:java.lang.OutOfMemoryError:apple.awt.CRobot.getRGBPixels上的Java堆空间(CRobot.java:204)

时间:2010-10-06 10:24:46

标签: java macos jvm

我在截屏时遇到问题。这是我的测试代码。

import java.awt.Robot;
import java.awt.AWTException;
import java.awt.image.BufferedImage;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.Dimension;

public class Test {
        public static void main(String[] args) throws AWTException {
            Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
            int[] pixels = new int[(int) (screenSize.getWidth() * screenSize.getHeight()) * 3];
            Robot robot = new Robot();
            int i = 0;

            while (true) {
                robot.createScreenCapture(new Rectangle(screenSize))
                     .getRaster().getPixels(0, 0, (int) screenSize.getWidth(), (int) screenSize.getHeight(), pixels);
                System.out.println(++i);
            }
        }
}

在我的Mac * s *上,OS X 10.6.4和Java 1.6.0_20-b02-279-10M3065在两次迭代后失败。它似乎在Windows上正常工作。你能重现这种行为吗?

  

线程“main”中的异常java.lang.OutOfMemoryError:Java堆空间       at apple.awt.CRobot.getRGBPixels(CRobot.java:204)       at java.awt.Robot.createScreenCapture(Robot.java:329)       在Test.main(Test.java:16)

1 个答案:

答案 0 :(得分:3)

OutOfMemory表示您需要give the program more memory。这种情况往往更多地发生在Mac上,因为现在Java是64位,需要更大的堆。