BYTECODES

配置JMX远程连接JVM虚拟机并开启权限认证

我们在调试Java内存或者Java线程时,除了使用jmap命令,还可以用JConsole或者VisualVM,这两个工具可以远程调试JVM,但需要开启JMX远程连接。本文是最新最全的配置。

java -jar \
-Dcom.sun.management.jmxremote=true \
-Djava.rmi.server.hostname=你的ip \
-Dcom.sun.management.jmxremote.port=你的jmx端口 \
-Dcom.sun.management.jmxremote.rmi.port=你的rmi端口 \
-Djava.net.preferIPv4Stack=true \
-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.access.file=./jmxremote.access \
-Dcom.sun.management.jmxremote.password.file=./jmxremote.password \
-Xmx3072m -Xms3072m -XX:+HeapDumpOnOutOfMemoryError -XX:NativeMemoryTracking=summary -XX:MaxDirectMemorySize=128m ./xxx.jar &

以-D开头的参数是JMX的配置,其他是JVM的一些启动参数,如果不清楚的话,可以不用管。

java.net.preferIPv4Stack这个参数是指定ip4

com.sun.management.jmxremote.access.file这个参数的值是一个文件,其中存放用户及用户的权限

com.sun.management.jmxremote.password.file这个参数的值是一个密码文件,其中存放用户及密码信息


比如jmxremote.access文件内容可以是下面这样

monitoruserTom readonly
adminuserJack readwrite

jmxremote.password文件内容可以是下面这样

monitoruserTom pass1
adminuserJack pass2