堆的回顾
大对象直接到老年代
多次GC存活的对象到老年代
串行收集器
系统可以知道有多少对象,该对象之外的(边界)都清除 标记-压缩
并行收集器
GC最大停顿时间要想变少,增加GC的频率---->垃圾就少了(每次消耗的时间自然就少了)但是整体的性能会下降
吞吐量:GC占比,面向很多的对象--->GC就会慢
这俩矛盾
知道系统的主要需求
CMS收集器
停顿减少 吞吐量下降(垃圾收集可能占有50%的资源使得整个应用的吞吐量下降)
可以将停顿时间尽可能的减少
并发标记是主要的标记
‘
并发清除:简单的清除(不做复制到一端等操作)
占用多少空间就GC
堆内存几乎满了所以停顿的时间应该比较长
几十G的大对象 复制就会发生很长时间
碎片:标记清除 标记压缩
标记清除 数组要5个单位(连续空间没有)不能分配
标记压缩就可以
CMS:标记清除 更快很难与用户程序一起工作
(如果用 压缩算法 压缩之后对象的内存位置发送改变应用程序就不能够工作了)
Tomcat实例演示
系统结构:
性能检测的工具
uptime:系统运行时间
top:cpu的占用情况
vmstat:系统CPU 内存 swap IO等的使用情况
cmd 中输入 perfmon
D8B的线程(16进制)