Перегрузка метода createScreenCapture

Недавно решил написать скрипт который работает с изображением. Сначала у меня создаётся скриншот в области x и из массива координат yCoordinates, потом robot получает один из цвета пикселей на скриншоте и потом преобразовывается цвет, ну и в конце условие if (colorHash < minBackground || colorHash > maxBackground) {. Когда я профилировал этот класс я наткнулся с проблемой, что у меня идёт перегрузка метода screenshot = robotForColorCheck.createScreenCapture(new Rectangle(x, yCoord, 1, screenHeight - yCoord));. Я вроде указал чтобы после первого выполнения screenshot шло обнуление, но ничего так и не помогло.

import java.awt.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.util.Properties;

public class Catching {
    private Thread thread;

    private long startTime;

    private boolean start;
    private boolean recordFlag;

    private BufferedImage screenshot; 

    private Robot clickRobot;
    private Robot robotForColorCheck;

    private int x = 1108;
    private int[] yCoordinates = {473, 582, 689};

    private final int minBackground = 1389000;
    private final int maxBackground = 6000000;
    private int rgb;
    private int colorHash;

    private Color color;
    public Catching(){
    }

    public void setClickRobot(Robot clickRobot) {
        this.clickRobot = clickRobot;
    }

    public void setRobotForColorCheck(Robot robotForColorCheck) {
        this.robotForColorCheck = robotForColorCheck;
    }

    public void setRecordFlag(boolean flag) {
        this.recordFlag = flag;
    }

    private int calculateColorHash(Color color) {
        return (color.getRed() << 16) | (color.getGreen() << 8) | color.getBlue();
    }

    public void startCatch() {
        start = true;
        thread = new Thread(() -> {
            startTime = System.currentTimeMillis();
            while (start && !Thread.currentThread().isInterrupted()) {
                for (int yCoord : yCoordinates) {
                    int screenHeight = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();
                    screenshot = robotForColorCheck.createScreenCapture(new Rectangle(x, yCoord, 1, screenHeight - yCoord));
                    rgb = screenshot.getRGB(0, 0); // Получаем цвет из одного пикселя
                    color = new Color(rgb);
                    colorHash = calculateColorHash(color);

                    if (colorHash < minBackground || colorHash > maxBackground) {
                        //ниже просто работа с мышью

                        if (recordFlag) {
                            recordVideo();
                        }
                    }
                    // Обнуление объектов
                    screenshot.flush();
                    screenshot = null;

                    color = null;
                    rgb = 0; // Обнуление переменной rgb
                    colorHash = 0; // Обнуление переменной colorHash
                }

                if ((System.currentTimeMillis() - startTime) >= 10000) {
                    //ниже просто работа с мышью

                    startTime = System.currentTimeMillis();
                }

            }

        });
        thread.start();
    }

    public void recordVideo(){
        //работа с мышью
    }
    
}

Ответы (0 шт):