A
adas2A26
Gast
Hi,
hab eine Frage. Ich will ("unendlich") viele Male hintereinander Screenshots machen und übers Netzwerk schicken. Die Netzwerksache funktioniert nun. Jetzt liegts aber noch am Screenshot machen:
Die Methode "capture()" wird in einer anderen Klasse so aufgerufen:
Das Problem ist nun, dass nach ca. 45 Schleifendurchläufen der Speicher voll läuft:
hab eine Frage. Ich will ("unendlich") viele Male hintereinander Screenshots machen und übers Netzwerk schicken. Die Netzwerksache funktioniert nun. Jetzt liegts aber noch am Screenshot machen:
Java:
public class ScreenCamera {
public static BufferedImage capture() {
try {
Robot robot = new Robot();
Rectangle captureSize = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
BufferedImage bufferedImage = robot.createScreenCapture(captureSize);
return bufferedImage;
}
catch (AWTException exc) {
exc.printStackTrace();
return null;
}
}
}
Die Methode "capture()" wird in einer anderen Klasse so aufgerufen:
Das Problem ist nun, dass nach ca. 45 Schleifendurchläufen der Speicher voll läuft:
Java:
Exception in thread "Thread-1" java.lang.OutOfMemoryError: Java heap space
at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:41)
at java.awt.image.SinglePixelPackedSampleModel.createDataBuffer(SinglePixelPackedSampleModel.java:220)
at java.awt.image.Raster.createWritableRaster(Raster.java:938)
at java.awt.image.BufferedImage.getData(BufferedImage.java:1372)
at com.mikunon.server.ScreenCamera.capture(ScreenCamera.java:19)
Java:
//...
@Override
public void run() {
try {
while (Application.isRunning()) {
ServerPictureMsg msg = new ServerPictureMsg(ScreenCamera.capture());
broadcast(msg);
}
}
catch (Exception exc) {
exc.printStackTrace();
}
}
//...