我收到此错误"资源泄漏输入永远不会关闭"我在网上看到了这个问题的一些解决方案,但我不愿意解决这个问题,除非它会影响程序的性能,因为代码运行正常
import java.util.Scanner;
public class Input {
public static double[][] Get_Ppe_Condition(int row,int col){
Scanner input=new Scanner(System.in);
the rest of the code....
所以我的问题是这种类型的错误是否会影响代码的运行,并且可能会影响结果的可靠性?你们建议解决它吗?什么是解决此类错误的更好方法? 提前致谢
答案 0 :(得分:1)
Eclipse向您显示该错误,因为它通常会使资源保持开放状态。
但是,在与扫描仪相关的文件句柄和套接字的特定情况下,我不确定Scanner是否会覆盖finalize()方法,以便明确清除您在离开资源时留下的混乱这样打开。通过让扫描仪处于打开状态,您可能会创建潜在的内存泄漏,即使GC最终处理它,如果您明确关闭了扫描仪,资源也会比等待GC更快地释放。这些类型的资源通常包含close()
,destroy()
或shutdown()
方法。
它会影响"准确度"或代码的速度?不是在这个(简单)的情况下,但是如果你曾经专业地工作并为复杂的项目编写草率的代码,那么你就会把这个项目置于内存泄漏的风险之中,而且你可能不会在工作中持续很长时间。
你是如何解决的?做什么Takendarkk说并添加in.close()
。如果你可以通过一个简单的小动作来避免这么多问题,为什么不这样做呢?这个article from IBM更详细地讨论了这个问题。