可能是苹果JVM的一个bug:java.lang.OutOfMemoryError:Java堆空间不足,位于apple.awt.CRobot.getRGBPixels(CRobot.java:204)处。

15 浏览
0 Comments

可能是苹果JVM的一个bug:java.lang.OutOfMemoryError:Java堆空间不足,位于apple.awt.CRobot.getRGBPixels(CRobot.java:204)处。

我截图时遇到了问题,以下是我的测试代码。

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上,使用OS X 10.6.4和Java 1.6.0_20-b02-279-10M3065,在两次迭代后失败了。在Windows上似乎正常工作。你能重现这种行为吗?

Exception in thread \"main\" java.lang.OutOfMemoryError: Java heap space

at apple.awt.CRobot.getRGBPixels(CRobot.java:204)

at java.awt.Robot.createScreenCapture(Robot.java:329)

at Test.main(Test.java:16)

admin 更改状态以发布 2023年5月19日
0
0 Comments

OutOfMemory指的是你需要为程序分配更多的内存。这在现在的Mac电脑上经常发生,因为Java现在是64位的,需要一个更大的堆。

0