我已经用Java(和Java本身)给我的第一步图像和缓冲图像了,我对flush()方法有点困惑,我的问题很简单:什么时候安全甚至是是否必须刷新代码中的图像?
做一些测试,看起来像Image.flush()没有做任何事情,但BufferedImage.flush()给出一些随机结果(有时一些内存似乎被释放),但我用来绘制它的组件停止绘画就它的背景而言。
所以我应该使用Image.flush()或BufferedImage.flush(),还是我必须让JVM自己做,或者可以在对象的finalize()方法中进行?< / p>
我真的无法理解......
答案 0 :(得分:10)
你永远不需要拨打flush()
,除非你想释放内存。它基本上只是作为对象的暗示说,“嘿,现在继续删除所有后备内存缓冲区,而不是等待垃圾收集来照顾你。”它可以是一个有用的性能优化,但它永远不必调用。
根据Java文档,调用flush()
应该使图像处于可以根据需要重建自身的状态,但显然你遇到了不是这种情况的问题。基本上,除非您确定不再需要图像,否则请勿致电flush()
。