Skip to content

Latest commit

 

History

History

README.md

study-gc

同一份代码,不同的发布环境,

  • 不同GC 回收器

  • GC日志

  • GC 过程

  • Jdk8、Jdk11、Jdk17 环境下

情况对比

参考链接

https://github.com/tusharjoshi024/jvisualvm-demo

启动参数

参数配置

https://www.oracle.com/java/technologies/javase/vmoptions-jsp.html

jdk8 :
java -jar -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation  -XX:+PrintHeapAtGC -XX:NumberOfGCLogFiles=100 -XX:GCLogFileSize=10M -Xloggc:my-gc-%t.gc.log -Xms64m -Xmx256m target/study-best-practice-0.0.1-SNAPSHOT.jar

jdk17 :
java -jar -Xlog:gc:my-gc.log:time,level -Xms64m -Xmx256m target/study-best-practice-0.0.1-SNAPSHOT.jar

内存增加

基本功能

整个过程可以打开jconsole 观察情况

GC功能

增加GC 日志

jdk 8
java -jar -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation  -XX:+PrintHeapAtGC -XX:NumberOfGCLogFiles=100 -XX:GCLogFileSize=10M -Xloggc:my-gc-%t.gc.log -Xms64m -Xmx256m target/study-best-practice-0.0.1-SNAPSHOT.jar

jdk17 

查看GC情况

http://localhost:8008/jvm/add?step=100

http://localhost:8011/jvm/add?step=100

http://localhost:8017/jvm/add?step=100

http://localhost:8021/jvm/add?step=100


内存相关

new 然后释放
http://localhost:8017/jvm/newAndFinish?step=10
http://localhost:8008/jvm/newAndFinish?step=10
http://localhost:8011/jvm/newAndFinish?step=10




runtime info
http://localhost:8017/jvm/info

new 放到map中
http://localhost:8017/jvm/add?step=10


CPU相关

环境准备

heavy 线程
http://localhost:8017/cpu/high/heavy/start

http://localhost:8017/cpu/high/heavy/stop


light 线程
http://localhost:8017/cpu/high/light/start

http://localhost:8017/cpu/high/light/stop


生成火焰图

启动arthas 

java -jar arthas-boot.jar

生成

$ profiler start

Profiling started

[arthas@7778]$ profiler stop

OK

profiler output file: /Users/bage/bage/github/study/arthas-output/20230920-093041.html


访问:
http://localhost:3658/arthas-output/
或者 
/Users/bage/bage/github/study/arthas-output/20230920-093041.html

文件不关闭

环境准备

文件打开不关闭?
http://localhost:8017/file/leaking?fileName=temp.html&close=true


http://localhost:8017/file/leaking?fileName=/Users/bage/bage/github/study/study-gc/README.md&close=false

垃圾回收器启用配置

配置启用串行回收器

  • -XX:+UseSerialGC
    

配置启用并行回收器

  • -XX:+UseParallelGC
    

配置启用并发标记清除回收器

  • -XX:+UseConcMarkSweepGC
    

配置启用G1回收器

  • -XX:+UseG1GC
    

参考链接