【发布时间】:2021-02-25 10:56:17
【问题描述】:
我正在制作共享屏幕程序。(客户端)
很遗憾,我发现发生了内存泄漏。
为了检查内存泄漏,我将其简化为:
import java.awt.*;
import java.awt.image.BufferedImage;
public class Sharescreen {
public Sharescreen() {
try {
Robot robot = new Robot();
Rectangle winSize = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
while (true) {
BufferedImage image = robot.createScreenCapture(winSize);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] argv) {
new Sharescreen();
}
}
运行:
java -Xms50m -Xmx100m -jar "共享screen.jar"
但是!!运行程序10分钟后,
“机器人”课一定有问题!!!
我该如何解决???
java(jdk) 版本:openjdk 11.0
【问题讨论】:
-
Robot 类似乎没有问题。以更好的方式实现 while 循环。
-
如果是,我该如何实现while循环?
-
如果Robot类没有问题,为什么这段代码有内存泄漏?
-
删除循环并检查。
标签: java memory-leaks openjdk-11 java-memory-leaks