为什么我应该关闭java.util.Scanner变量?

Div*_*mmy 0 java

我在Eclipse中收到以下代码警告:

码:

Scanner money = new Scanner(System.in);
System.out.println(money.nextLine());
//money.close();
Run Code Online (Sandbox Code Playgroud)

警告:

Description Resource    Path    Location    Type
Resource leak: 'money' is never closed  apples.java /SwordsNMoney/src   line 6  Java P
Run Code Online (Sandbox Code Playgroud)

这是什么警告?“资源泄漏”是什么意思?

谢谢。

Spa*_*kOn 6

资源泄漏 通常是资源消耗的错误模式,其中程序不会释放其获取的资源。这可能会导致服务质量下降。

垃圾收集只能管理内存,不能管理其他系统资源。如果您的Java程序具有足够的可用内存,那么垃圾收集将不会自动触发。

所有操作系统对可以打开的套接字,文件句柄等数量都有限制。因此,对非内存资源的无意维护会导致资源泄漏。因此,管理非内存资源非常重要。

利用非内存资源的类应该提供显式分配/取消分配那些资源的方法。我们需要在中显式调用close()方法来释放文件描述符finally{},因为无论是否引发异常,它都会执行。