【问题标题】:"java.net.BindException: Address already in use" while trying to profile with Java VisualVM尝试使用 Java VisualVM 进行分析时出现“java.net.BindException:地址已在使用中”
【发布时间】:2015-02-22 19:19:18
【问题描述】:

我正在尝试在 mac 上使用 Java VisualVM 分析器分析一个 java 程序。

部分消息在过去here被举报过。

我得到的异常如下:

objc[20398]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
Profiler Agent: JNI OnLoad Initializing...
Profiler Agent: JNI OnLoad Initialized successfully
Profiler Agent: Waiting for connection on port 5140 (Protocol version: 14)
Profiler Agent Error: Exception when trying to establish connection with client:
java.net.BindException: Address already in use

我不完全理解错误。有没有可能的解决方案?

谢谢。

【问题讨论】:

    标签: java exception profiler visualvm jvisualvm


    【解决方案1】:

    可能是因为您忘记在 catch 子句中关闭 serversocket。尝试重新启动 IDE 并在 catch 中添加 serversocket.close。

    【讨论】:

    • 我不知道,我不使用任何服务器套接字。我从命令行运行程序。
    • 好的,我明白了。正如 isaac.hazan 所说,它显然被另一个程序使用。但是你能检查一下防火墙,看看哪个程序使用了这个端口吗?
    【解决方案2】:

    “地址已在使用”表示您有另一个进程已经在侦听端口 5140。

    看看你是否已经在运行相同的进程或使用http://alternativeto.net/software/portsmonitor/之类的工具来查看哪个进程已经在端口5140上侦听

    【讨论】:

    • 有没有办法可以将我的程序分配给不同的端口,因为我不使用套接字,所以也许我可以更改 VisualVM 的?
    • 即使你的程序不使用套接字,VisualVM 也会使用它。当然有办法为其分配另一个端口,您需要查看 Visual VM 的文档并查看如何更改端口,但 IMO 识别持有该端口的进程并杀死是最简单的。甚至可能因为您错误地运行 VisualVM 两次而无法正常工作
    猜你喜欢
    • 1970-01-01
    • 2015-10-30
    • 2014-08-11
    • 2013-09-08
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2015-11-08
    相关资源
    最近更新 更多