我正在使用JDK 1.6.0_26中的VisualVM来分析在Tomcat下运行的Java webapp,但VisualVM经常告诉我它没有足够的内存来拍摄快照,并且使用-Xmx开关为Netbeans提供更多内存.问题是,我在Netbeans之外运行VisualVM,那么如何向jvisualvm.exe提供JVM参数?
有人可以解释我的区别Sleeping
,Wait
,Park
,和Monitor
线程状态中的VisualVM.
这是我发现的:
Running
:线程仍在运行.
Sleeping
:thread正在休眠(在线程对象上调用方法yield())
Wait
:线程被互斥锁或屏障阻塞,并且正在等待另一个线程释放锁
Park
:挂起的线程被暂停,直到它们被给予许可.取消停放线程通常是通过在线程对象上调用方法unpark()来完成的
Monitor
:线程正在等待条件变为true以恢复执行
我无法理解的是州立公园,实际上是什么暂停线程?如何在代码中检测到什么使线程暂停执行?
有人可以在这方面指导我.
谢谢.
我想用VisualVM工具分析在Tomcat上运行的应用程序.不幸的是,当我告诉VisualVM描述Tomcat时,Tomcat打印出一些消息,表明它正在连接到一个配置文件工具然后只是退出.
细节…
我使用的是Windows XP,Tomcat 6,VisualVM 1.2.1和JDK 1.6.0_11.
请注意,如果我右键单击Tomcat应用程序并选择似乎正常工作的"堆转储".
我一直在寻找对VisualVM上下文中"自我时间"实际引用的一致而清晰的解释,以及它与"自我时间(cpu)"的区别.'自我时间[%]'也指自我时间或自我时间CPU.
似乎没有太多关于此的文档,或者至少我没有找到它.所以任何想法/意见将不胜感激.
在Java VisualVM中,有没有办法显示总方法时间,而不是"自我时间"?(后者并不是特别有用,因为它没有告诉你任何方法实际运行的时间.)
如果没有,是否有任何独立的免费Java分析器可以计算总方法时间?
据我所知,您只能使用VisualVM配置正在运行的应用程序.
有没有人知道使用VisualVM分析启动和启动Java应用程序的方法?
我确信必须有办法,否则这将是一次重大的疏忽.
希望我只是误读了文档.
谢谢,p.
除了Java任务控制中更"先进"的GUI之外,它们有何不同?
乍一看,它们似乎提供了非常相似的功能(解释JMX数据和内存/ CPU分析).
但是,由于它们都随JDK一起提供(我使用的是JDK 1.7.0_51 SE),我假设存在显着差异,否则它们将合并为一个解决方案.特别是因为这会显着增加JDK的大小.
Java Mission Control最终是否会在未来取代JVisualVM?
如果我尝试在VisualVM的帮助下分析应用程序(在Eclipse下编写,但是从命令行运行),我会收到以下错误消息
同时,项目文件夹被新创建的类文件弄脏.虽然它们已经存在target/classes
.
项目结构是Maven的,即target/classes
当前目录中有一个foder ,我使用以下命令来运行应用程序
java -Xmx16g -cp target/classes tests.Runner01
Run Code Online (Sandbox Code Playgroud)
怎么修?
UPDATE
传统的java项目也是如此.
下面是填充的类文件的图片,它们位于不应该的位置
我通过ssh远程阅读Visual VM,但我认为我还没有完全理解,因为它不适合我:-(请有人举个例子吗?
ssh -D 9696 login@ip.of.external.machine
并visualvm.exe -J-Dnetbeans.system_socks_proxy=localhost:9696 -J-Djava.net.useSystemProxies=true
启动visualvm,但没有显示外部机器的进程(只有像visualvm本身的本地进程).此外,有时(但并非总是)我在ssh窗口中收到消息"通道3:打开失败:连接失败:连接被拒绝".
有帮助吗?
我已经花了很长时间来加载和测试我的应用程序,现在我需要对其进行分析.但不幸的是,VisualVM总是在我的本地应用程序上说"不支持这个JVM"?
应用程序在与VisualVM相同的JVM上启动.