当前位置: 首页 > 知识库问答 >
问题:

为什么要关闭java.util.Scanner变量?[副本]

匡安宜
2023-03-14

我在Eclipse中得到了一个警告,代码如下:

代码:

Scanner money = new Scanner(System.in);
System.out.println(money.nextLine());
//money.close();

警告:

Description Resource    Path    Location    Type
Resource leak: 'money' is never closed  apples.java /SwordsNMoney/src   line 6  Java P

这个警告是什么,'资源泄露‘是什么意思?

谢谢.

共有2个答案

赵嘉纳
2023-03-14

scanner打开底层OS的文件描述符(或文件通道或流),该文件描述符通常用非托管(通常为C语言)编写。

保持打开的流,有时可以保持打开,直到内核决定关闭它(比如,在程序完成执行之后...高度依赖于实现)。

因此,显式关闭资源是一个好主意。

湛财
2023-03-14

资源泄漏通常是一种错误的资源消耗模式,程序没有释放它已获得的资源。这会导致糟糕的服务。

垃圾回收只能管理内存,而不能管理其他系统资源。如果你的Java程序有大量的空闲内存,垃圾回收就不会自动触发。

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

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

 类似资料:
  • 我是个新手,我已经开始学习了。但我有些问题。为什么我们需要使用Mockito?据我所知,它用于模拟(创建虚拟对象),并在实际运行代码之前编写测试用例。但是,如果我想测试我已经实现的代码,以检查它们是否正常工作,该怎么办。我怎么用mockito来测试它呢? 例如,我有CRUD方法,我想通过实际使用我的Create方法在数据库中插入数据来测试Create是否正常工作,其他人也是如此。我们能用莫基托来实

  • 问题内容: 通常,当我打开文件时,我从不调用该方法,也不会发生任何不良情况。但是有人告诉我这是不好的做法。这是为什么? 问题答案: 在大多数情况下,不关闭文件是一个坏主意,原因如下: 它会将您的程序放在垃圾收集器的手中-尽管 理论上 该文件将自动关闭,但可能不会关闭。Python 3和Cpython通常在垃圾收集方面做得相当不错,但并非总是如此,其他变体通常也很烂。 它可能会降低您的程序速度。打开

  • TCP可以检测数据包是否成功发送,所以与其等待pong命令,为什么不在ping命令发送时检查是否有错误呢?我只是不觉得需要乒乓球。

  • 本文向大家介绍JavaScript声明变量时为什么要加var关键字,包括了JavaScript声明变量时为什么要加var关键字的使用技巧和注意事项,需要的朋友参考一下 在JavaScript中,var用来声明变量,但是这个语法并不严格要求,很多时修改,我们可以直接使用一个变量而不用var声明它。 诸如此类。这有一个问题,比如说在代码中的某一行,我想使用的一个已声明的变量x,结果由于打字或者拼写错误

  • 问题内容: 已关闭 。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗? 更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 您能描述一下TypeScript语言是什么吗? JavaScript或可用的库无法执行的工作是什么,这使我有理由考虑? 问题答案: 我最初是在TypeScript仍然热销时写这个答案的。五年后,这是一个不错的概述,但请查看以下Lodewijk的答案以获取

  • 我是一个很新的编码,我一直有问题的物理计算器,我一直在做。我做这件事是为了在类项目中使用OOP。我的要点是让用户输入变量,然后它们被运到类文件上的等式中,然后最后显示结果。当我尝试编译时,它说函数getAnswer看不到它上面声明的结果。我计划对这个方程进行16次迭代,所以我首先要弄清楚为什么这一次不起作用。欢迎任何回答。 -谢谢 这是类文件