【问题标题】:Scanner Class And String Buffer扫描器类和字符串缓冲区
【发布时间】:2014-10-31 17:28:08
【问题描述】:

每当我使用 Scanner 类进行输入时,它都会显示有关内存泄漏的警告,“.in”未关闭。使用缓冲阅读器时,它不会显示任何警告。为什么会这样?

    class Demo    
    {    
        public static void main(String[] arg){    
        System.out.println("Enter a String");    
        Scanner sc = new Scanner(System.in);    
        String[] str = new String[1];    
        str[0] = sc.next();    
        System.out.println(str[0]);    
    }

【问题讨论】:

  • 你能出示一下密码吗?
  • 也许this 会有所帮助?
  • String Buffer 与这个问题有什么关系?

标签: java java.util.scanner bufferedreader


【解决方案1】:

在任何一种情况下,您都应该关闭ScannerBufferedReader 以避免资源泄漏。编译器显然没有识别出BufferedReader 的问题,也没有发出警告。

【讨论】:

  • 你能解释一下内存泄漏的原因吗?如果我们定义一个只有 1 个值 str[0] 并且只接受一个输入的字符串类型数组呢?
  • @user3436422,在您的问题中添加一些代码,以便我们清楚地理解。
  • @user3436422 内存泄漏与存储输入的变量无关。导致泄漏的是 ScannerBufferedReader 对象本身。当您关闭ScannerBufferedReader 时,您会释放这些类使用的操作系统资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多