首页编程java编程java visualvm 是什么?什么是Visual

java visualvm 是什么?什么是Visual

编程之家 2023-10-14 95次浏览

老铁们,大家好,相信还有很多朋友对于java visualvm 是什么和什么是Visual的相关问题不太懂,没关系,今天就由我来为大家分享分享java visualvm 是什么以及什么是Visual的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

java visualvm 是什么?什么是Visual

请问java的安装环境是指什么

如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。

JRE: Java Runtime Environment

JDK:Java Development Kit

java visualvm 是什么?什么是Visual

JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。

JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。

JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。

java visualvm 是什么?什么是Visual

什么是Visual

VisualVM提供在 Java虚拟机(Java Virutal Machine, JVM)上运行的 Java应用程序的详细信息。在 VisualVM的图形用户界面中,您可以方便、快捷地查看多个 Java应用程序的相关信息。(摘自官方)简单说来,VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力。所有这些都是免费的!它囊括的命令行工具包括jstat, JConsole, jstack, jmap和 jinfo,这些工具与JDK的标准版本是一致的。

可以使用VisualVM生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和CPU分析,同时它还支持在MBeans上进行浏览和操作。尽管VisualVM自身要在JDK6这个版本上运行,但是JDK1.4以上版本的程序它都能监控。对于我们来说,这些功能都是至关重要的。以前大家可能会用YourKit这样的付费软件来检测我的应用软件,但现在可以用VisualVM这样一个开源工具来实现同样的功能了。更何况,有谁比能Sun公司更了解JVM呢?

VisualVM的一个最大好处就是,它已经在你的JDK bin目录里了,只要你使用的是JDK1.6 Update7之后的版本。点击一下jvisualvm.exe图标它就可以运行了。

jvisualvm远程监控无法连接是什么原因

jvisualvm是Jdk自带的,具体点,据说是jdk1.6-07后加到jdk中的。本地监控很简单,在JAVA_HOME/bin中打开jvisualvm即可,所有本机的java程序会自动列出来。我们来说下远程监控的问题。

当然网上有很多相关资料,我就把我实践的结果列出来吧。

环境,本地: WIN-XP sp3, jdk1.6.0_17远端:CentOS5.1, jdk1.6.0_3

具体步骤如下,

1.启动远端jstatd.

1.1配置[b]java[/b]安全访问,将如下的代码存为文件 jstatd.all.policy(名字随便起),但要放到JAVA_HOME/bin中,其内容如下,

grant codebase"file:${java.home}/../lib/tools.jar"{ permission java.security.AllPermission;};

1.2进入到JAVA_HOME/bin中,执行./jstatd-J-Djava.security.policy=jstatd.all.policy

注:这时候能启动正常,但是后面本地用 jvisualvm的时候抛异常,

Java代码

<span style="font-size: small;">java.net.ConnectException: Connection refused: connect

at java.net.PlainSocketImpl.socketConnect(Native Method)

at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)

at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)

at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)

at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)

at java.net.Socket.connect(Socket.java:519)

at java.net.Socket.connect(Socket.java:469)

at java.net.Socket.<init>(Socket.java:366)

at java.net.Socket.<init>(Socket.java:180)

at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)

at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)

at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)

Caused: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:

java.net.ConnectException: Connection refused: connect

at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)

at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)

at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)

at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:110)

at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178)

at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132)

at$Proxy7.activeVms(Unknown Source)

at sun.jvmstat.perfdata.monitor.protocol.rmi.RemoteVmManager.activeVms(RemoteVmManager.java:82)

Caused: sun.jvmstat.monitor.MonitorException: Error communicating with remote host: Connection refused to host: 127.0.0.1; nested exception is:

java.net.ConnectException: Connection refused: connect

at sun.jvmstat.perfdata.monitor.protocol.rmi.RemoteVmManager.activeVms(RemoteVmManager.java:85)

at sun.jvmstat.perfdata.monitor.protocol.rmi.MonitoredHostProvider.activeVms(MonitoredHostProvider.java:217)

at com.sun.tools.visualvm.jvmstat.application.JvmstatApplicationProvider.processNewHost(JvmstatApplicationProvider.java:126)

at com.sun.tools.visualvm.jvmstat.application.JvmstatApplicationProvider.access$000(JvmstatApplicationProvider.java:69)

at com.sun.tools.visualvm.jvmstat.application.JvmstatApplicationProvider$5$1.run(JvmstatApplicationProvider.java:276)

at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)

[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)

==>

</span>

据查,有两种方法解决,一种是把/etc/hosts中的ip改成实际的IP,然后重启网络,但我用此法没有解决问题。另一种是,在jstatd后加hostname的参数,如下,

./jstatd-J-Djava.security.policy=jstatd.all.policy-J-Djava.rmi.server.hostname=192.168.0.23

我用第二种方法解决了此问题。

2.打开本地的jvisualvm,右键Remort,选择"Add Remort Host...",在弹出框中输入你的远端IP,比如192.168.0.23.连接成功后如图,

其中CPU一项显示"NOT supported for this JVM",不知何故,难道是远端的jdk版本需要升级到jdk1.6.0_17?还没有试。另外“Perform GC”跟"Heap Dump"都亮,也不知何故。

顺便解释下Heap跟PermGen的区别,一般而言,PerGen放的是类的定义;而Heap里面放的是类的实例;所以一般程序稳定运行后,PermGen基本保持不变,要变也只会增加,因为GC只会扫描heap中的实例;而Heap变化较大,OutOfMemory一般也是Heap不够了。

javavisualvm自用时间

消耗处理器时间。

在调用树标签页中,可以看到各个线程的调用树,其中记录了自用时间和自用时间这两者分别代表自用时间方法本身消耗的时间,不包括调用该方法的时间自用时间消耗的处理器时间,不包括等待时间,睡眠时间等。

自用时间表示方法本身执行消耗的时间,分别以百分比和消费时间进行统计。方法执行时间包含方法调用其他方法的时间和自身执行时间。

OK,关于java visualvm 是什么和什么是Visual的内容到此结束了,希望对大家有所帮助。

写javaweb用什么?javaweb可以用什么开发 java中事物是什么?怎样理解java中事物这一概念