配置项 配置文件
默认使用G1 无需配置 从JDK 9开始G1成为默认垃圾回收器。无需处理
增加OOM堆Dump保存配置 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/日志目录
2c4容器堆大小设置为机器 75% -Xms3072m -Xmx3072m

GC 增加时间戳


java -server -Xms1g -Xmx1g -Xmn100m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/Users/dongguabai/Desktop/temp/ -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Xloggc:/Users/dongguabai/Desktop/temp/gc_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintCommandLineFlags -XX:+PrintHeapAtGC -XX:+UseFastAccessorMethods -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -jar /Users/dongguabai/develope/maven/repository/com/example/demo111111/0.0.1-SNAPSHOT/demo111111-0.0.1-SNAPSHOT.jar

容器 OOM dump 增加时间戳

如果是 docker 可以挂载盘,然后 oom 输出到挂载盘

FROM java:8
MAINTAINER itboat008
#添加主机路径下的 app.jar到 镜像的 /home/docker/oom-test/路径
ADD ./app.jar /home/docker/oom-test/app.jar
ADD ./heapDump.sh /home/docker/oom-test/heapDump.sh
#设置 OnOutOfMemoryError 时候需要执行的脚本
ENV JAVA_OPTS="-Xms256M -Xmx256M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/applog -XX:OnOutOfMemoryError='/home/docker/oom-test/heapDump.sh'"
VOLUME ["/applog"]
ENTRYPOINT java ${JAVA_OPTS} -jar /home/docker/oom-test/app.jar

#在该脚本下修改hprof的文件名
datetime = $(date "%Y%m%d%H%M%S")
hprofs = `find /applog -name '*.hprof'`
for tmprof in $hprofs 
do
    mv $tmprof `echo "$tmprof.$datetime"`
done

docker配置OOM打dump追加时间戳_对docker加时间的配置-CSDN博客