1.jvm会根据其运行的机器,尝试估算何时的最大最小堆的大小.
2.通常通过调整GC算法的性能目标而不是调整堆的大小来改善程序的性能.
3.永久代和元空间内保存的信息只对编译器或者jvm运行时有用,这部分信息被称为类的元数据.
4.多个JVM运行于同一台物理机上时,依据公式计算出的线程数可能过高.必须进行优化
5.CG Histogram的停顿状态选项卡
6.jstat能动态的观察运行程序的垃圾回收操作,永久代几乎在程序启动时就已经把类载入了内存了.
6.1理解TH收集器
6.1.1 Full GC会回收新生代中所有的对象,包括s空间中的对象,他会进行两个操作一个是年轻的GC一个是老年代GC,
堆大小的自适应调整和静态调整
增大堆能够减少Full GC停顿发生的频率,为新生代分配更多的堆空间也可以缩短Full GC的停顿时间,
通常我们让JVM自己来选择通常是更容易的方法.因为默认情况下自适应调整就是开启的
+XX:MaxGCPauseMILLIS=n 表示设定应用可承受的最大停顿时间.
-XX:GCTimeRatio ->0.95的吞吐量目标, 利用该工时计算的是19
7.每个CMS线程都会百分之百的占用一颗cpu,避免发生并发模式失效是提升CMS收集器处理能力,获得高性能的关键.
8应用在cpu资源受限的机器上,同时又要求较小的停顿,这时候使用增量式CMS收集器是一个不错的选择
9.莫名其妙的Full GC 就是巨大对象分配导致的问题
10.G1的垃圾收集包括多个周期,调优良好的JVM运行G1收集器时应该只经历新生代周期,混合式周期和并发GC周期,
11G1的并发阶段会产生少量的停顿
12恰当的时候,我们需要对G1进行调优,才能避免Fu'll GC周期发生
13.GC垃圾收集器调优的主要目的是避免发生并发模式失败或者疏散失败,一旦发生这些失败就会导致Full GC,其次调优可以使过程中的停顿时间最小化,通过增加总的堆空间大小或者调整老年代和新生代之间的比例来增加老年代空间的大小.
14.G1垃圾收集器调优的标志是-XX:MaxGCPauseMillis=N,默认值是200毫秒
15.如果G1的收集器发生时空停顿,的时间超过该时长,则G1收集器就会尝试各种方式进行弥补
161.G1垃圾收集器调优,增加后台线程数.
17.混合式GC周期的停顿时间会更长.
18