JAVA性能权威指南2-垃圾收集

JVM的四种垃圾收集器:
    Serial收集器(常用于单CPU环境)  -XX:+UseSerialGC
    Throughput(Parallel)收集器 server级虚拟机,-XX:+UseParallel[Old]GC
    Concurrent收集器 CMS:收集新生代 -XX:+UseParNewGC、-XX:+UseConcMarkSweepGC
    G1收集器     --为了处理处理超大堆时产生的停顿。 -XX:+UseG1GC

垃圾收集的两步骤:
查找不再使用的对象
释放这些对象所管理的内存
所有应用线程都停止运行所产生的停顿称为 时空停顿。这种停顿对应用的性能影响很大,调优垃圾收集时,尽量减少这种停顿是最为关键的考量因素。

堆分为 老年代,新生代;新生代又分为Eden空间和Survivor空间。

选择GC算法
取决于应用程序的特征; 应用的性能目标
GC调优基础
1 调整堆大小:
堆太小,程序大部分时间浪费在GC上;设置大,停顿时间会变长。

-Xms 初始值  -Xmx 最大值

2 代空间的调整
新生代分配过大,垃圾回收发生频率就比较低,从新生代晋升到老年代的对象就更少,老年代就相对小。容易被频繁触发Full GC.
找到平衡点是解决问题的关键
所有调整代空间的命令行标志调整都是新生代空间

-XX:NewRatio=N   新老空间占用比率
-XX:NewSize=N   新生代初始大小
-XX:MaxNewSize=N 新生代空间最大大小
-XmnN 上面两个设成同一个值

3 永久代和元空间的调整

-XX:PermSize=N  永久代大小
-XX:MaxPermSize=N
-XX:MetaspaceSize=N 元空间大小
-XX:MaxMetaspaceSize=N 

4 控制并发

-XX:ParallelGCThreads=N 线程数

5 自适应调整

-XX:+PrintAdaptiveSizePolicy

垃圾回收工具
开启GC的日志功能: -verbose:gc  -XX:+PrintGC -XX:+PrintGCDetails
-XX:+PringGCTimeStamps  -XX:+PrintGCDateStamps
-Xloggc:filename

GC Histogram可以读入GC日志,更加日志生成对应图标和表格

垃圾收集算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值