You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code提示‘Resource leak: 'input' is never closed’的原因

关于Java代码中"Resource leak: 'input' is never closed"警告的原因分析

问题场景

你提供的Java代码可以正常运行,但VS Code会在第5行第17列抛出警告:Resource leak: 'input' is never closed,代码如下:

package JAVA;
import java.util.Scanner;
public class FirstProgram2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter the first number: ");
        int num1 = input.nextInt();
        System.out.print("Enter the second number: ");
        int num2 = input.nextInt();
        System.out.println("Before swapping:");
        System.out.println("First number: " + num1);
        System.out.println("Second number: " + num2);
        // Swapping the numbers
        int temp = num1;
        num1 = num2;
        num2 = temp;
        System.out.println("After swapping:");
        System.out.println("First number: " + num1);
        System.out.println("Second number: " + num2);
    }
}

警告产生的原因

这个警告的核心原因很直接:你创建了Scanner对象input来读取标准输入流(System.in),但在代码执行结束前没有手动关闭这个资源。

  • Scanner属于Java的资源类,它关联着底层的输入流资源。虽然JVM的垃圾回收机制最终可能会回收这个对象,但回收时机不确定,可能导致资源被长时间占用。
  • VS Code的Java语言服务会自动检测这类未显式关闭的资源,抛出资源泄漏警告,目的是提醒你规范管理资源,避免潜在的资源浪费问题。

如果要消除这个警告,你可以在代码逻辑结束后添加一行input.close();,或者用Java 7及以上的try-with-resources语法让系统自动关闭资源,示例如下:

try (Scanner input = new Scanner(System.in)) {
    // 原有的输入、计算等逻辑代码
}

内容的提问来源于stack exchange,提问作者Saeid Lorian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:05:09