我一直在调试一个java进程的问题,打开一个30,000到50,000范围内的随机端口。
我有兴趣看看与具有端口的套接字关联的线程堆栈是什么,所以我收集了java进程的堆转储并确定堆栈线程的名称为“RMI TCP Accept-0”。通过一点谷歌搜索我发现这个线程可以用于JMX monitoring by jConsole
所以我正在寻找一种方法来控制这个端口号,我找到了一个相关的答案here
即使指定了端口号,我仍然可以看到Java进程正在打开这个随机端口
我想重新访问堆栈,看看我是否理解它可能是一个JMX端口是正确的。这是我看到的堆栈:
"RMI TCP Accept-0" daemon prio=10 tid=0x00007f3367404000 nid=0x14fb runnable [0x00007f33507b3000]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
at java.net.ServerSocket.implAccept(ServerSocket.java:530)
at java.net.ServerSocket.accept(ServerSocket.java:498)
at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:388)
at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:360)
at java.lang.Thread.run(Thread.java:745)
Locked ownable synchronizers:
- None