字符串扫描器的资源泄漏 java
Resource leak over String Scanner java
在 vscode 中,我收到一条警告,说 Scanner 在扫描 String 时存在资源泄漏,但 String 不需要关闭,所以为什么 vscode 给我警告我怎样才能摆脱它?我不想关闭扫描仪,因为那不是必需的。这是一些给出警告的示例代码
new Scanner("somthing to split")
.useDelimiter(Pattern.compile("[ ,\n]"))
.forEachRemaining(System.out::println);
给予
Resource leak: '<unassigned Closeable value>' is not closed at this location
VSCode 不关心您的 Scanner
绑定到什么资源。它不会检查您是否真的应该关闭它。
通过添加 @SuppressWarnings("resource")
或 关闭 正确使用 try-with-resources syntax 扫描仪 抑制警告:
try (Scanner scanner = new Scanner(...)) {
...
} // auto-closed here
并不是所有的警告实际上都是 正确的,也有误报,在这种情况下完全可以抑制警告。不过,您可能想添加评论来解释 为什么 。
另一个相关示例是绑定到 System.in
的扫描仪,它们也不应关闭。
but won't this make it run slower? I'm trying to not close it because it is unnecessary but I don't want this warning
不,不是真的。即使,我们在这里谈论的是几纳秒。不要尝试微优化根本不需要优化的东西。如果您认为您有速度问题,请分析您的应用程序,然后您会发现您的违规者无论如何都是完全不同的。
在 vscode 中,我收到一条警告,说 Scanner 在扫描 String 时存在资源泄漏,但 String 不需要关闭,所以为什么 vscode 给我警告我怎样才能摆脱它?我不想关闭扫描仪,因为那不是必需的。这是一些给出警告的示例代码
new Scanner("somthing to split")
.useDelimiter(Pattern.compile("[ ,\n]"))
.forEachRemaining(System.out::println);
给予
Resource leak: '<unassigned Closeable value>' is not closed at this location
VSCode 不关心您的 Scanner
绑定到什么资源。它不会检查您是否真的应该关闭它。
通过添加 @SuppressWarnings("resource")
或 关闭 正确使用 try-with-resources syntax 扫描仪 抑制警告:
try (Scanner scanner = new Scanner(...)) {
...
} // auto-closed here
并不是所有的警告实际上都是 正确的,也有误报,在这种情况下完全可以抑制警告。不过,您可能想添加评论来解释 为什么 。
另一个相关示例是绑定到 System.in
的扫描仪,它们也不应关闭。
but won't this make it run slower? I'm trying to not close it because it is unnecessary but I don't want this warning
不,不是真的。即使,我们在这里谈论的是几纳秒。不要尝试微优化根本不需要优化的东西。如果您认为您有速度问题,请分析您的应用程序,然后您会发现您的违规者无论如何都是完全不同的。