我有两个远程服务器,都运行最近的CentOS,都运行最近的Tomcat6,最近的JDK6和VisualVM 1.3.2。
ssh -X转发在一台服务器上运行 - 我可以从该机器启动VisualVM,它可以转发并运行正常 - 我将在远程计算机上运行的所有JVM进程视为VVM中的“本地”。
第二台机器上的ssh -X转发 - 然后运行VisualVM - 在其中显示带有VVM的X窗口,但它只显示一个“本地”进程 - VisualVM本身 - 并且右下角有一个弹跳进度条那说“计算描述”,它永远不会结束。我在任何地方都找不到任何相关内容 - 有人曾经打过这个吗?我如何通过这个?
答案 0 :(得分:32)
我遇到了类似的问题--WindowsVM挂在“计算描述”上,没有显示除自身之外的任何本地JVM。我用“jps”查找系统上运行的所有JVM。使用jstack来获取所有这些JVM的堆栈,包括JVisualVM本身。我发现的是,JVisualVM正在尝试创建与其中一个目标虚拟机的RMI连接,并且该虚拟机挂起了RMI连接尝试。在我的情况下,它被绞死的原因是我将JVisualVM分析器连接到该JVM,但JVisualVM随后死于PermGen OOM。探测器的部分仍在目标JVM中运行,但由于缺少探查器前端而挂起;因此,任何类加载尝试都会挂起,这会导致来自新JVisualVM实例的传入RMI也挂起。重新启动受影响的JVM解决了该问题。
没有任何线程转储,我不能说你的问题是否与我的一样;但如果有人再次遇到这个问题,收集线程转储是个好主意。无论根本原因是什么,重新启动盒子上的所有JVM(例如重启)都有合理的机会解决它。
答案 1 :(得分:1)
如果JVM在调试断点处暂停,则将导致VisualVM挂起。
答案 2 :(得分:0)
我遇到了同样的问题-然后我遇到了这篇文章https://github.com/oracle/visualvm/issues/82。然后我杀死了机器上的所有JVM / JDK会话。重新启动可视虚拟机-等待了一段时间,然后您就可以了,它不再挂了。 简而言之,当您在IP之间切换时,视觉虚拟机会挂起。
答案 3 :(得分:0)
我将VisualVM与IntelliJ结合使用。对我而言,VisualVM挂起是因为我处于VPN连接状态。关闭VPN后,该问题得以解决。