依赖镜像
FROM adoptopenjdk/openjdk8:alpine-slim
#FROM openjdk:8-jdk-alpine
ADD ./target/sl-1.0-SNAPSHOT.jar app.jar
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
EXPOSE 8084
RUN mkdir -p :/data/www/leoni/online/logs
ENV JAVA_OPTS -Xms1g -Xmx1g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:G1MaxNewSizePercent=30 -XX:+DisableExplicitGC -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/data/www/leoni/online/logs/gc_log_8000.log
ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar
G1gc参考:https://www.redhat.com/zh/blog/collecting-and-reading-g1-garbage-collector-logs-part-2
启动 docker exec -it container名称 sh
wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar
会显示 pid 输入
help:查看所有命令
jvm 查看 JVM参数
thread
thread命令用来查看当前jvm中的线程信息的,如下图所示:
sysprop
查看和修改JVM的系统属性
sysenv
查看JVM的环境变量
getstatic
查看类的静态属性
class/classloader相关
mc
Memory Compiler/内存编译器,编译.java文件生成.class。
sc
Search class
查看jvm中已加载的类,不过直接执行sc并没有太多信息
需要加入-d参数
jad
反编译代码,如下