jvm指令与工具

竹智熊猫 2019年12月19日 158次浏览

jps

查看java进程

jstat

查看GC状态

# 百分比展示
jstat -gcutil [pid] [interval]
# 查看gc
jstat -gc [pid]
# 查看new区
jstat -gcnew [pid]
# 查看old区
jstat -gcold [pid]

jstack

查看线程

jmap

dump内存信息

jmap -dump:file=file_name [pid]

查看内存信息

jmap -heap [pid]

jconsole

监控和管理控制台

visualVM

非自带 功能类似 jconsole,但是有一些高级功能,比如可以触发GC、dump内存信息、查看dump信息

扩展: JVM 参数 在OutOfMemonryError的时候自动dump内存信息

XX:+HeapDumpOnOutOfMemoryError

jmx参数

设置jmx参数

JAVA_OPTS="$JAVA_OPTS -Xmx1024m -Djava.rmi.server.hostname=192.168.19.114 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9998 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

# 详细说明
#192.168.19.114为tomcat所在机器的ip地址。
-Djava.rmi.server.hostname=192.168.19.114
#开启jmx,jdk1.5之前还要手动开启,现在已经默认开启了,所以可以省略
-Dcom.sun.management.jmxremote
#jmx的端口
-Dcom.sun.management.jmxremote.port=9998
#不开启验证
-Dcom.sun.management.jmxremote.authenticate=false
#不开启ssl通信
-Dcom.sun.management.jmxremote.ssl=false

拓展

在Docker中环境变量

version: '0.01'
services:
  java-dome:
    image: java:8
    restart: always
    container_name: java-dome
    environment:
    # 设置时区
    - TZ=Asia/Shanghai
    # 设置java环境变量
    - JAVA_OPTS="$JAVA_OPTS -Xmx1024m -Djava.rmi.server.hostname=192.168.19.114 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9998 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
    ports:
    # 设置端口
    - 8770:8770
    volumes:
    - /home/java_dome:/java_dome:rw
    - /tmp
    command: java -Djava.security.egd=file:/dev/./urandom -jar -Xms512m -Xmx1024m /java_dome/dome.jar

java核心技术,JVM指令集

参考1 参考2