• JVM:调优


    什么时候会发生垃圾回收

    • MinorGC:Eden区或者S区不够用了
    • MajorGC:老年代不够用了
    • FullGC = MinorGC + MajorGC + MetaSpace GC
    • System.gc()(该方法不会立即唤起gc )

    什么时候需要调优

    • 出现问题:频繁GC?cpu高--->打印GC日志--->结合工具查看---> 修改堆内存空间/垃圾收集器选择
    • cpu持续飙升:top查看哪个进程cpu使用率高--->查看可能的情况情况:线程/堆栈/jvm参数 jstack/jinfo/jmap--->
    • oom:dump文件,分析dump文件--->MAT/其他工具

    如何调优

    1、调整堆大小(调大):Xms、Xmx

    • 提高吞吐量
    • GC次数减少
    • 停顿时间变大(空间变大了,打扫时间变长)

    2、设置停顿时间(G1)(调小):-XX:MaxGCPauseMillis=15

    • 停顿时间变小
    • GC次数变多
    • 吞吐量无太大变化
      切记不要手动调整young区大小,设置停顿时间的时候会自适应地调整young区的大小。

    3、启动并发GC时(堆内存使用占比)调

    G1和CMS的区别

    • CMS:标记-清除 空间碎片;G1:标记-整理 减少空间碎片
    • CMS:分新生代老年代。引用Card Table;G1:分region,物理上不分young和old区,只有逻辑上区分。Remerbered Set RSet,谁引用了我
    • G1:多核、大内存,G1停顿时间。

    总结

  • 相关阅读:
    HDU--2546 饭卡(01背包)
    UVA--562 Dividing coins(01背包)
    UVA--624 CD(01背包+路径输出)
    PKU--3628 Bookshelf 2(01背包)
    ExecutorService介绍2
    ExecutorService介绍
    mac下设置命令别名
    如何在sourcetree 下提交代码到gerrit上
    vim下如何删除某行之后的所有行
    VMware网络设置的三种方式
  • 原文地址:https://www.cnblogs.com/fcb-it/p/13363504.html
Copyright © 2020-2023  润新知