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

Java“资源泄露”预警应触发时未触发

雍嘉勋
2023-03-14

我有一个名为JavaShellStream的类,它扩展了接口CloseableAutoCloseable。但是,当我使用该类并且不调用其close()方法时,不会触发资源泄漏的警告。我有另一个名为JavaShell的类,它有一个名为exec(String cmd)的方法,该方法返回一个JavaShellStream对象。当我以以下方式创建新的JavaShellStream对象时,不会触发任何资源泄漏警告:

//workingDir is a File object that sets the working directory
JavaShell js = new JavaShell(workingDir); 
//execute the "ls" command and retrieve output as a JavaShellStream
JavaShellStream jss = js.exec("ls");
/*
 * some code to read the text from the stream
 * but DOES NOT close the stream
 */
// Note that I am NOT calling the close() method

为什么这里没有触发资源泄漏的警告,因为JavaShellStream JSS从未关闭?这里的答案是,触发它所需要的只是实现接口closeable,但我的类同时实现了closeableautocloseable,但在未关闭时不会触发任何警告。

共有1个答案

吕俊哲
2023-03-14

如果您正在使用Eclipse(正如链接的问题所涉及的那样),那么有一个选项可以在可能出现资源泄漏的地方显示一个警告。

转到“窗口”>“首选项”>“Java”>“编译器”>“错误/警告”,将“潜在资源泄漏”的严重级别设置为“警告”。

 类似资料:
  • 我有一个名为的类,它扩展了接口和。但是,当我使用该类并且不调用它的方法时,不会触发存在资源泄漏的警告。我还有一个名为的类,它有一个名为的方法,返回一个对象。当我以以下方式创建一个新的对象时,不会触发任何资源泄漏警告:

  • 我试图在应用程序启动10分钟后生成警报。根据我的要求,无论用户关闭应用程序、关闭并再次打开,或者甚至在重新启动后,此警报都应该工作。下面是我的代码。 主要活动。Java语言 我的服务。java—这是服务类。 警报eciever.java 如果我没有关掉手机或重新启动手机,我就可以准时收到闹钟。我准时收到闹钟。 然而,如果我关闭并打开手机,或者如果我重新启动手机,我会在手机打开/重新启动后立即收到警

  • 我是个新手。我已经编写了这段代码,它显示那里存在资源泄漏 这是什么意思?抱歉,我太天真了。

  • 我的sonarQube覆盖测试检测到该代码的捕获块在测试期间从未到达 代码: 我的静态函数ConvertFileToByte()可以抛出一个IOExctive。 相关测试: 我认为问题来自这样一个事实,即“thenThrow”函数是在执行之后完成的,因此永远不会到达catch块。我试图将调用返回与分配分开,但它从未在测试中触发catch函数,并根据sonar添加代码气味。 有什么想法和建议让这个测

  • 我试图在指定时间触发通知和警报。我已经将日志信息放在控制台上,以查看是否设置了正确的时间,并且一切正常。但是,仍然没有触发警报。请帮忙。 创建通知和警报的/Code/ /通知消息类/ 请帮帮我,我做错了什么?

  • 配置报警策略的时候open-falcon支持多种报警触发函数,比如all(#3) diff(#10)等等。 这些#后面的数字表示的是最新的历史点,比如#3代表的是最新的三个点。该数字默认不能大于10,大于10将当作10处理,即只计算最新10个点的值。 说明:#后面的数字的最大值,即在 judge 内存中保留最近几个点,是支持自定义的,具体参考 book 中描述 ; 源码位置 => cfg.exam