我正在运行Mac OSX Snow Leopard.
我总是使用Mac OSX的常规软件更新功能更新Java.
我过去使用过Java jvisualvm工具取得了巨大的成功.
今天早上我像往常一样输入jvisualvm命令行.我收到以下错误:
$ jvisualvm
Unable to locate an executable at "/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/jvisualvm" (-1)
Run Code Online (Sandbox Code Playgroud)
所有的其他Java工具(java,javac,jps等),工作得很好.
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin确实不包含jvisualvm(突然间).
/usr/libexec/java_home 收益率:
$ /usr/libexec/java_home
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)
WTF?
我的团队有相当多的代码。最近我发现了一些没有正确关闭的对象。
如何找到所有未关闭或不在try-with-resources块内的实例?
一些对象,例如Statement,ResultSet甚至没有显示警告消息。
是否有用于显示所有这些事件的扩展工具?
我正在使用 Eclipse。
在我的 Java 代码中,我启动了一个新进程,然后获取其输入流以读取它:
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
Run Code Online (Sandbox Code Playgroud)
FindBugs 在这里报告错误:
may fail to close stream
Pattern id: OS_OPEN_STREAM, type: OS, category: BAD_PRACTICE
Run Code Online (Sandbox Code Playgroud)
我必须关闭另一个进程的 InputStream 吗?更重要的是,根据它的 Javadoc, InputStream#close() 什么都不做。那么这是误报,还是应该在完成后真正关闭流程的输入流?