GC垃圾回收器

Serial     串行   它为单线程环境设计且只使用一个线程进行垃圾回收,会暂停所有的用户线程,所以不适合服务器环境
Parallel   并行    多个垃圾收集线程并行工作,此时用户线程时暂停的,适用于科学计算、大数据等弱交互场景。
CMS        并发    用户线程和垃圾收集线程同时执行(不一定是并行,可能是交替执行),不需要停顿用户线程,互联网公司多用它,使用堆响应时间有要求的场景。
GI         G1垃圾回收器将堆内存分割成不同的区域然后并发对其进行垃圾回收       

-------|               |--------------|------gc------|-------→      串行 Serial
-------|               |--------------|--gc--|--------------|--gc--|-------→      并行  Parallel
-------|--gc--|--------Xms10m -Xmx10m -XX:+PrintGCDetails -XX:+PrintCommandLineFlags -XX:+UseSerialGC   (DefNew+Tenured)

-Xms10m -Xmx10m -XX:+PrintGCDetails -XX:+PrintCommandLineFlags -XX:+UseParNewGC   (ParNew+Tenured)//新生代gc收集加快,old代不变
=========================================================================================================
-Xms10m -Xmx10m -XX:+PrintGCDetails -XX:+PrintCommandLineFlags -XX:+UseParallelGC   (PSYoungGen+ParOldGen)
相互激活
-Xms10m -Xmx10m -XX:+PrintGCDetails -XX:+PrintCommandLineFlags -XX:+UseParallelOldGC   (PSYoungGen+ParOldGen)
==============================================================================================================
-Xms10m -Xmx10m -XX:+PrintGCDetails -XX:+PrintCommandLineFlags   (PSYoungGen+ParOldGen)  不加默认UseParallelGC

-Xms10m -Xmx10m -XX:+PrintGCDetails -XX:+PrintCommandLineFlags -XX:+UseConcMarkSweepGC   (Par new generation+Concurcention)

CMS Initial Mark----→CMS-concurrent-mark-start-----CMS Final Remark------CMS-concurrent-sweep-start
产生垃圾碎片-XX:CMSFullGCsBeForeCompaction=n次    内存整理

-Xms10m -Xmx10m -XX:+PrintGCDetails -XX:+PrintCommandLineFlags -XX:+UseG1GC                 G1
-XX:G1HeapRegionSize=2048   保证一块的最大内存块可以到32M
-XX:MaxGCPauseMillis=n   最大停顿时间
-XX:InitiatingHeapOccupancyPercent=n    堆占用多少时GC默认45%
-XX:ConcGCThreads=n         并发线程数
-XX:G1ReservePercent        空闲空间预留百分比默认10%
分布式集群思想

Serial+SerialOld     DefNew

-XX:ParallelGCThreads=8  设置并行收集器的线程数,默认cpu核数
Parallel+SerialOld   ParNew
||||||||||
ParNew+CMS

Parallel Scavenge+Parallel Old

G1
================================================================
undertow取代tomcat
clean-----package
java -server -Xms1024m -Xmx1024m -XX:+PrintGCDetails -XX:+PrintCommandLineFlags -XX:+UseG1GC -jar SpringBoot_jmdf.jar
java -jar SpringBoot_jmdf.jar



===========================================
top       uptime  load average   0.00, 0.00, 0.00  相加除以3诚意100%大于60%      查看整机使用情况
vmstat -n 2 3           ==========采样3次时间间隔为2s                       cpu
mpstat -P ALL 2                2s采样一次(查看cpu核信息)
pidstat -u 1 -p {pid}        查看某进程的cpu占用率(每个进程使用cpu的用量分解信息)
===========================================================================
free -m   查看内存情况                              查看内存
pidstat -p {pid} -r 2              查看java进程消耗内存百分比
===========================================================================
df -h                              查看硬盘
===========================================================================
                                                                      查看磁盘I/O
iostat -xdk 2 3

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.20     1.34    0.71    0.24    22.60     6.32    60.92     0.01   14.73   4.70   0.45

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     4.98    0.50    2.99     3.98    31.84    20.57     0.04   12.71  12.29   4.28

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

磁盘块设备分布
rkB/S每秒读取数据量KB
wkB/s每秒写入数据量
svctm i/o请求的平均服务时间,单位毫秒
await i/o 请求的平均时间,单位毫秒,值越小,性能越好
util 疫苗中有百分之几的时间用于I/o操作。接近100%表示磁盘跑满,需要优化程序或者增加磁盘;
rkB/S、wkB/s根据系统应用不同会有不同的值,单有规律遵循:长期、超大数据读写,很定不正常,需要优化程序读写。
svctm的值与await的值很接近,表示没有i/o等待,性能很好。
如果await的值远远高于svctm的值,表示I/o队列等待太长,需要优化程序或者更换更快的磁盘。

pidstat -d 2 -p {pid} 某个线程的读写速率(2秒采样一次)
=============================================================
							查看网络I/o,需要装
							1、安装ifstat
wget http://distfiles.macports.org/ifstat/ifstat-1.1.tar.gz
tar xzvf ifstat-1.1.tar.gz
cd ifstat-1.1
./configure
make && make install

I/O
ifstat 1
========================================================================
							案例
top
jps -l
ps -ef|grep java|grep -v grep
ps -mp {pid} -o THREAD,tid,time
jstack {pid} | grep {16进制的小写} -A60
=========================================================================
jps虚拟机进程状况工具
jinfo java配置信息工具
jmap内存映象工具
jstat统计信息监视工具
jstack堆栈异常跟踪工具
jvisualvm
jsconsole
===========================================================================
github

seckill in:name,readme

springboot stars:>=5000
springboot forks:>=500
springboot forks:2000..40000 stars:2000..80000
awesome redis
网址+#L{行号}-L{行号}
项目级别t 罗列文件
location:beijing language:java

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值