Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何释放画布内存?_Java_Javafx 2_Javafx - Fatal编程技术网

Java 如何释放画布内存?

Java 如何释放画布内存?,java,javafx-2,javafx,Java,Javafx 2,Javafx,我有一个包含JavaFX画布的对象,并在其上显示图像。对于非常大的图像,例如大小为4000 x 4000的图像,画布会消耗大量内存 我想清除内容,以便以后重新使用。我该怎么做 尝试以下操作没有帮助: canvas.getGraphicsContext2D().clearRect(0,0,getImage().getWidth(),getImage().getHeight())如果您不再有对映像对象的引用,则可能必须等待垃圾收集运行。调用clearRect()仅使用背景色填充现有图像。最近讨论了添

我有一个包含JavaFX画布的对象,并在其上显示图像。对于非常大的图像,例如大小为4000 x 4000的图像,画布会消耗大量内存

我想清除内容,以便以后重新使用。我该怎么做

尝试以下操作没有帮助:


canvas.getGraphicsContext2D().clearRect(0,0,getImage().getWidth(),getImage().getHeight())

如果您不再有对映像对象的引用,则可能必须等待垃圾收集运行。调用clearRect()
仅使用背景色填充现有图像。

最近讨论了添加方法以释放资源的问题-如果实现了此功能,则在未来的JavaFX发行版之前将不可用

作为前面引用的线程的结果,已经创建了以下平台调整请求:(目前计划在Java8版本中实现)

在实现之前,您可能需要创建一个新的画布节点,并用新节点替换旧节点

虽然它没有画布那么功能强大,但也许使用画布就足以满足您的操作,并且可能不会遇到与当前使用画布时相同的内存问题。这是因为在内部,可写图像只是像素数据的缓冲区,没有历史记录,而画布在内部保留绘图命令的历史记录