jstatd 命令全称: Virtual Machine jstat Daemon
DESCRIPTION
The jstatd tool is an RMI server application that monitors for the creation and termination of instrumented HotSpot Java virtual machines (JVMs) and pro-
vides a interface to allow remote monitoring tools to attach to JVMs running on the local host.
The jstatd server requires the presence of an RMI registry on the local host. The jstatd server will attempt to attach to the RMI registry on the default
port, or on the port indicated by the -p port option. If an RMI registry is not found, one will be created within the jstatd application bound to the
port indicated by the -p port option or to the default RMI registry port if -p port is omitted. Creation of an internal RMI registry can be inhibited by
specifying the -nr option.
NOTE - This utility is unsupported and may or may not be available in future versions of the J2SE SDK. It is not currently available on the Windows 98
and Windows ME platforms.
jstatd是一个基于RMI(Remove Method Invocation)的服务程序,它用于监控基于HotSpot的JVM中资源的创建及销毁,并且提供了一个远程接口允许远程的监控工具连接到本地的JVM执行命令。
jstatd是基于RMI的,所以在运行jstatd的服务器上必须存在RMI注册中心,如果没有通过选项"-p port"指定要连接的端口,jstatd会尝试连接RMI注册中心的默认端口。后面会谈到如何连接到一个默认的RMI内部注册中心,如何禁止默认的RMI内部注册中心的创建,以及如何启动一个外部注册中心
Option参数:jstatd 命令行参数可以是任何顺序的,如果出现冗余或相互冲突的参数,最后一个参数优先。
-nr: 当没找到rmi registry服务,在jstatd内部不会试图创建rim registry.
-p:指定注册的rmi registry服务器端口,如果没有找到在此端口监听的registry服务,并且没有指定参数-nr,将会在jstatd内部以指定的端口创建registry.
-n rminame :指定绑定到rim registry中远程服务对象的名称,默认为JStatRemoteHost;如果同一台主机上同时运行了多个jstatd服务,rminame可以用于唯一确定一个jstatd服务;这里需要注意一下,如果开启了这个选项,那么监控客户端远程连接时,必须同时指定hostid及vmid,才可以唯一确定要连接的服务
-Joption: 用于传递jvm选项到由javac调用的java加载器中,例如,“-J-Xms48m”将把启动内存设置为48M,使用-J选项可以非常方便的向基于Java的开发的底层虚拟机应用程序传递参数。
jstatd安全:
如果没设置其他安全管理器,jstatd将使用RMISecurityPolicy,并且需要指定安全策略文件. 安全策略文件必须符合安全策略语法,通过命令
-J-Djava.security.policy=file指定策略文件. 一下的安全策略可以访问所有代码库.
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
保存上面3行安全策略,例如保存在文件名为statd.all.policy文件中。通过下面命令启动jstatd就可以使用安全策略.
jstatd -J-Djava.security.policy=jstatd.all.policy
示例:
(1)如果没有rmi registry 在默认1099端口监听,将在内部自动创建registry的rmi regitry服务》
jstatd -J-Djava.security.policy=all.policy
(2)使用外部已经存在的rmi registry服务. 先开启rmi registry服务,再开启jstatd.
rmiregistry 5000
jstatd -J-Djava.security.policy=all.policy -p 5000
此时用jps命令如: jps localhost:5000
(3)指定vmid
jstatd -J-Djava.security.policy=all.policy -p 2020 -n AlternateJstatdServerName